diff options
author | Wenwen Wang <wenwen@cs.uga.edu> | 2019-08-18 00:45:40 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-10-05 13:13:45 +0200 |
commit | 8c17f6f5d0d6aab72a2af25c9911ac66e984be06 (patch) | |
tree | 3f6f4ff9b4fb28f4119068a480e4e50e949d800f /drivers/media | |
parent | de23b986dd21e3a69d7d7df4ce92695e2a5f9ecb (diff) | |
download | linux-stable-8c17f6f5d0d6aab72a2af25c9911ac66e984be06.tar.gz linux-stable-8c17f6f5d0d6aab72a2af25c9911ac66e984be06.tar.bz2 linux-stable-8c17f6f5d0d6aab72a2af25c9911ac66e984be06.zip |
media: dvb-core: fix a memory leak bug
[ Upstream commit fcd5ce4b3936242e6679875a4d3c3acfc8743e15 ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/dvb-core/dvbdev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c index a3393cd4e584..7557fbf9d306 100644 --- a/drivers/media/dvb-core/dvbdev.c +++ b/drivers/media/dvb-core/dvbdev.c @@ -339,8 +339,10 @@ static int dvb_create_media_entity(struct dvb_device *dvbdev, if (npads) { dvbdev->pads = kcalloc(npads, sizeof(*dvbdev->pads), GFP_KERNEL); - if (!dvbdev->pads) + if (!dvbdev->pads) { + kfree(dvbdev->entity); return -ENOMEM; + } } switch (type) { |