Skip to content

Commit

Permalink
V4L/DVB (6751): V4L: Memory leak! Fix count in videobuf-vmalloc mmap
Browse files Browse the repository at this point in the history
This is pretty serious bug.  map->count is never initialized after the
call to kmalloc making the count start at some random trash value.  The
end result is leaking videobufs.

Also, fix up the debug statements to print unsigned values.

Pushed to http://ifup.org/hg/v4l-dvb too

Signed-off-by: Brandon Philips <bphilips@suse.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Brandon Philips authored and Mauro Carvalho Chehab committed Dec 11, 2007
1 parent 843b137 commit 0b29669
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/media/video/videobuf-vmalloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ videobuf_vm_open(struct vm_area_struct *vma)
{
struct videobuf_mapping *map = vma->vm_private_data;

dprintk(2,"vm_open %p [count=%d,vma=%08lx-%08lx]\n",map,
dprintk(2,"vm_open %p [count=%u,vma=%08lx-%08lx]\n",map,
map->count,vma->vm_start,vma->vm_end);

map->count++;
Expand All @@ -64,7 +64,7 @@ videobuf_vm_close(struct vm_area_struct *vma)
struct videobuf_queue *q = map->q;
int i;

dprintk(2,"vm_close %p [count=%d,vma=%08lx-%08lx]\n",map,
dprintk(2,"vm_close %p [count=%u,vma=%08lx-%08lx]\n",map,
map->count,vma->vm_start,vma->vm_end);

map->count--;
Expand Down Expand Up @@ -221,7 +221,7 @@ static int __videobuf_mmap_mapper(struct videobuf_queue *q,
}

/* create mapping + update buffer list */
map = q->bufs[first]->map = kmalloc(sizeof(struct videobuf_mapping),GFP_KERNEL);
map = q->bufs[first]->map = kzalloc(sizeof(struct videobuf_mapping),GFP_KERNEL);
if (NULL == map)
return -ENOMEM;

Expand Down

0 comments on commit 0b29669

Please sign in to comment.