|
@@ -436,7 +436,7 @@ static int qset_add_urb_sg(struct whc *whc, struct whc_qset *qset, struct urb *u
|
|
|
int i;
|
|
|
int ntds = 0;
|
|
|
struct whc_std *std = NULL;
|
|
|
- struct whc_page_list_entry *entry;
|
|
|
+ struct whc_page_list_entry *new_pl_virt;
|
|
|
dma_addr_t prev_end = 0;
|
|
|
size_t pl_len;
|
|
|
int p = 0;
|
|
@@ -508,12 +508,15 @@ static int qset_add_urb_sg(struct whc *whc, struct whc_qset *qset, struct urb *u
|
|
|
|
|
|
pl_len = std->num_pointers * sizeof(struct whc_page_list_entry);
|
|
|
|
|
|
- std->pl_virt = krealloc(std->pl_virt, pl_len, mem_flags);
|
|
|
- if (std->pl_virt == NULL) {
|
|
|
+ new_pl_virt = krealloc(std->pl_virt, pl_len, mem_flags);
|
|
|
+ if (new_pl_virt == NULL) {
|
|
|
+ kfree(std->pl_virt);
|
|
|
+ std->pl_virt = NULL;
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
+ std->pl_virt = new_pl_virt;
|
|
|
|
|
|
- for (;p < std->num_pointers; p++, entry++) {
|
|
|
+ for (;p < std->num_pointers; p++) {
|
|
|
std->pl_virt[p].buf_ptr = cpu_to_le64(dma_addr);
|
|
|
dma_addr = (dma_addr + WHCI_PAGE_SIZE) & ~(WHCI_PAGE_SIZE-1);
|
|
|
}
|