Patch "media: dvd_usb: memory leak in cinergyt2_fe_attach" has been added to the 5.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    media: dvd_usb: memory leak in cinergyt2_fe_attach

to the 5.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     media-dvd_usb-memory-leak-in-cinergyt2_fe_attach.patch
and it can be found in the queue-5.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 325742683d50b56a59c5c16e037a494604493a69
Author: Dongliang Mu <mudongliangabcd@xxxxxxxxx>
Date:   Tue May 25 15:06:52 2021 +0200

    media: dvd_usb: memory leak in cinergyt2_fe_attach
    
    [ Upstream commit 9ad1efee086e0e913914fa2b2173efb830bad68c ]
    
    When the driver fails to talk with the hardware with dvb_usb_generic_rw,
    it will return an error to dvb_usb_adapter_frontend_init. However, the
    driver forgets to free the resource (e.g., struct cinergyt2_fe_state),
    which leads to a memory leak.
    
    Fix this by freeing struct cinergyt2_fe_state when dvb_usb_generic_rw
    fails in cinergyt2_frontend_attach.
    
    backtrace:
      [<0000000056e17b1a>] kmalloc include/linux/slab.h:552 [inline]
      [<0000000056e17b1a>] kzalloc include/linux/slab.h:682 [inline]
      [<0000000056e17b1a>] cinergyt2_fe_attach+0x21/0x80 drivers/media/usb/dvb-usb/cinergyT2-fe.c:271
      [<00000000ae0b1711>] cinergyt2_frontend_attach+0x21/0x70 drivers/media/usb/dvb-usb/cinergyT2-core.c:74
      [<00000000d0254861>] dvb_usb_adapter_frontend_init+0x11b/0x1b0 drivers/media/usb/dvb-usb/dvb-usb-dvb.c:290
      [<0000000002e08ac6>] dvb_usb_adapter_init drivers/media/usb/dvb-usb/dvb-usb-init.c:84 [inline]
      [<0000000002e08ac6>] dvb_usb_init drivers/media/usb/dvb-usb/dvb-usb-init.c:173 [inline]
      [<0000000002e08ac6>] dvb_usb_device_init.cold+0x4d0/0x6ae drivers/media/usb/dvb-usb/dvb-usb-init.c:287
    
    Reported-by: syzbot+e1de8986786b3722050e@xxxxxxxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Dongliang Mu <mudongliangabcd@xxxxxxxxx>
    Signed-off-by: Sean Young <sean@xxxxxxxx>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/media/usb/dvb-usb/cinergyT2-core.c b/drivers/media/usb/dvb-usb/cinergyT2-core.c
index 969a7ec71dff..4116ba5c45fc 100644
--- a/drivers/media/usb/dvb-usb/cinergyT2-core.c
+++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c
@@ -78,6 +78,8 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap)
 
 	ret = dvb_usb_generic_rw(d, st->data, 1, st->data, 3, 0);
 	if (ret < 0) {
+		if (adap->fe_adap[0].fe)
+			adap->fe_adap[0].fe->ops.release(adap->fe_adap[0].fe);
 		deb_rc("cinergyt2_power_ctrl() Failed to retrieve sleep state info\n");
 	}
 	mutex_unlock(&d->data_mutex);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux