Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: dvb-core: fix a memory leak bug

In dvb_create_media_entity(), 'dvbdev->entity' is allocated through
kzalloc(). Then, 'dvbdev->pads' is allocated through kcalloc(). However, if
kcalloc() fails, the allocated 'dvbdev->entity' is not deallocated, leading
to a memory leak bug. To fix this issue, free 'dvbdev->entity' before
returning -ENOMEM.

Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>

authored by

Wenwen Wang and committed by
Mauro Carvalho Chehab
fcd5ce4b b1da86fc

+3 -1
+3 -1
drivers/media/dvb-core/dvbdev.c
··· 339 339 if (npads) { 340 340 dvbdev->pads = kcalloc(npads, sizeof(*dvbdev->pads), 341 341 GFP_KERNEL); 342 - if (!dvbdev->pads) 342 + if (!dvbdev->pads) { 343 + kfree(dvbdev->entity); 343 344 return -ENOMEM; 345 + } 344 346 } 345 347 346 348 switch (type) {