misc/genwqe: ensure zero initialization
Genwqe uses dma_alloc_coherent and depends on zero initialized memory. On one occasion it ueses an explicit memset on others it uses un-initialized memory. This bug was covered because some archs actually return zero initialized memory when using dma_alloc_coherent but this is by no means guaranteed. Simply switch to dma_zalloc_coherent. Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Frank Haverkamp <haver@linux.vnet.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
db08948b97
commit
13decfb438
2 changed files with 2 additions and 4 deletions
|
@ -1048,8 +1048,6 @@ static int setup_ddcb_queue(struct genwqe_dev *cd, struct ddcb_queue *queue)
|
||||||
"[%s] **err: could not allocate DDCB **\n", __func__);
|
"[%s] **err: could not allocate DDCB **\n", __func__);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
memset(queue->ddcb_vaddr, 0, queue_size);
|
|
||||||
|
|
||||||
queue->ddcb_req = kzalloc(sizeof(struct ddcb_requ *) *
|
queue->ddcb_req = kzalloc(sizeof(struct ddcb_requ *) *
|
||||||
queue->ddcb_max, GFP_KERNEL);
|
queue->ddcb_max, GFP_KERNEL);
|
||||||
if (!queue->ddcb_req) {
|
if (!queue->ddcb_req) {
|
||||||
|
|
|
@ -220,8 +220,8 @@ void *__genwqe_alloc_consistent(struct genwqe_dev *cd, size_t size,
|
||||||
if (get_order(size) > MAX_ORDER)
|
if (get_order(size) > MAX_ORDER)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return dma_alloc_coherent(&cd->pci_dev->dev, size, dma_handle,
|
return dma_zalloc_coherent(&cd->pci_dev->dev, size, dma_handle,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __genwqe_free_consistent(struct genwqe_dev *cd, size_t size,
|
void __genwqe_free_consistent(struct genwqe_dev *cd, size_t size,
|
||||||
|
|
Loading…
Reference in a new issue