Commit 64c832a4 authored by Geyslan G. Bem's avatar Geyslan G. Bem Committed by Mauro Carvalho Chehab

[media] videobuf2-dma-sg: fix possible memory leak

Fix the return when 'buf->pages' allocation error.
Signed-off-by: default avatarGeyslan G. Bem <geyslan@gmail.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
parent a5e3d743
...@@ -178,7 +178,7 @@ static void *vb2_dma_sg_get_userptr(void *alloc_ctx, unsigned long vaddr, ...@@ -178,7 +178,7 @@ static void *vb2_dma_sg_get_userptr(void *alloc_ctx, unsigned long vaddr,
buf->pages = kzalloc(buf->num_pages * sizeof(struct page *), buf->pages = kzalloc(buf->num_pages * sizeof(struct page *),
GFP_KERNEL); GFP_KERNEL);
if (!buf->pages) if (!buf->pages)
return NULL; goto userptr_fail_alloc_pages;
num_pages_from_user = get_user_pages(current, current->mm, num_pages_from_user = get_user_pages(current, current->mm,
vaddr & PAGE_MASK, vaddr & PAGE_MASK,
...@@ -204,6 +204,7 @@ static void *vb2_dma_sg_get_userptr(void *alloc_ctx, unsigned long vaddr, ...@@ -204,6 +204,7 @@ static void *vb2_dma_sg_get_userptr(void *alloc_ctx, unsigned long vaddr,
while (--num_pages_from_user >= 0) while (--num_pages_from_user >= 0)
put_page(buf->pages[num_pages_from_user]); put_page(buf->pages[num_pages_from_user]);
kfree(buf->pages); kfree(buf->pages);
userptr_fail_alloc_pages:
kfree(buf); kfree(buf);
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment