]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: em28xx: Fix exception handling in em28xx_alloc_urbs()
authorMarkus Elfring <elfring@users.sourceforge.net>
Mon, 26 Aug 2019 11:14:02 +0000 (08:14 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:51:07 +0000 (14:51 +0100)
[ Upstream commit ecbce48f1ff2442371ebcd12ec0ecddb431fbd72 ]

A null pointer would be passed to a call of the function "kfree" directly
after a call of the function "kcalloc" failed at one place.
Pass the data structure member "urb" instead for which memory
was allocated before (so that this resource will be properly cleaned up).

This issue was detected by using the Coccinelle software.

Fixes: d571b592c6206d33731f41aa710fa0f69ac8611b ("media: em28xx: don't use coherent buffer for DMA transfers")
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/usb/em28xx/em28xx-core.c

index 5657f8710ca6b60ee3afe681eff32fcb96a964d8..69445c8e38e2849cdaa6c6efa371a5e2c2cb685f 100644 (file)
@@ -930,7 +930,7 @@ int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk,
 
        usb_bufs->buf = kcalloc(num_bufs, sizeof(void *), GFP_KERNEL);
        if (!usb_bufs->buf) {
-               kfree(usb_bufs->buf);
+               kfree(usb_bufs->urb);
                return -ENOMEM;
        }