mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 10:36:39 +07:00
[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: 7b4eeed174
('[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…
Reference in New Issue
Block a user