[media] vmalloc_sg: off by one in error handling
The "i--" needs to happen at the start of the loop or it will try to release something bogus (probably it will crash) and it won't release the first ->vaddr_page[]. Fixes: 7b4eeed174b7 ('[media] vmalloc_sg: make sure all pages in vmalloc area are really DMA-ready') Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
5b6aa19919
commit
23d3090f8b
@ -253,9 +253,11 @@ int videobuf_dma_init_kernel(struct videobuf_dmabuf *dma, int direction,
|
||||
return 0;
|
||||
out_free_pages:
|
||||
while (i > 0) {
|
||||
void *addr = page_address(dma->vaddr_pages[i]);
|
||||
dma_free_coherent(dma->dev, PAGE_SIZE, addr, dma->dma_addr[i]);
|
||||
void *addr;
|
||||
|
||||
i--;
|
||||
addr = page_address(dma->vaddr_pages[i]);
|
||||
dma_free_coherent(dma->dev, PAGE_SIZE, addr, dma->dma_addr[i]);
|
||||
}
|
||||
kfree(dma->dma_addr);
|
||||
dma->dma_addr = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user