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

media: dvb-usb: dib0700_devices: Add missing release_firmware()

Add missing release_firmware on the error paths.

drivers/media/usb/dvb-usb/dib0700_devices.c:2415 stk9090m_frontend_attach() warn: 'state->frontend_firmware' from request_firmware() not released on lines: 2415.
drivers/media/usb/dvb-usb/dib0700_devices.c:2497 nim9090md_frontend_attach() warn: 'state->frontend_firmware' from request_firmware() not released on lines: 2489,2497.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Ricardo Ribalda and committed by
Hans Verkuil
4b267c23 7bc69661

+15 -3
+15 -3
drivers/media/usb/dvb-usb/dib0700_devices.c
··· 2412 2412 2413 2413 adap->fe_adap[0].fe = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &stk9090m_config); 2414 2414 2415 - return adap->fe_adap[0].fe == NULL ? -ENODEV : 0; 2415 + if (!adap->fe_adap[0].fe) { 2416 + release_firmware(state->frontend_firmware); 2417 + return -ENODEV; 2418 + } 2419 + 2420 + return 0; 2416 2421 } 2417 2422 2418 2423 static int dib9090_tuner_attach(struct dvb_usb_adapter *adap) ··· 2490 2485 dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x20, 0x80); 2491 2486 adap->fe_adap[0].fe = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &nim9090md_config[0]); 2492 2487 2493 - if (adap->fe_adap[0].fe == NULL) 2488 + if (!adap->fe_adap[0].fe) { 2489 + release_firmware(state->frontend_firmware); 2494 2490 return -ENODEV; 2491 + } 2495 2492 2496 2493 i2c = dib9000_get_i2c_master(adap->fe_adap[0].fe, DIBX000_I2C_INTERFACE_GPIO_3_4, 0); 2497 2494 dib9000_i2c_enumeration(i2c, 1, 0x12, 0x82); ··· 2501 2494 fe_slave = dvb_attach(dib9000_attach, i2c, 0x82, &nim9090md_config[1]); 2502 2495 dib9000_set_slave_frontend(adap->fe_adap[0].fe, fe_slave); 2503 2496 2504 - return fe_slave == NULL ? -ENODEV : 0; 2497 + if (!fe_slave) { 2498 + release_firmware(state->frontend_firmware); 2499 + return -ENODEV; 2500 + } 2501 + 2502 + return 0; 2505 2503 } 2506 2504 2507 2505 static int nim9090md_tuner_attach(struct dvb_usb_adapter *adap)