From cf3167cf1e969b17671a4d3d956d22718a8ceb85 Mon Sep 17 00:00:00 2001 From: Antti Palosaari Date: Fri, 26 Sep 2014 22:45:36 -0300 Subject: [PATCH] [media] pt3: fix DTV FE I2C driver load error paths Get rid of 'module_is_live' usage. on x86_64: when CONFIG_MODULES is not enabled: ../drivers/media/pci/pt3/pt3.c: In function 'pt3_attach_fe': ../drivers/media/pci/pt3/pt3.c:433:6: error: implicit declaration of function 'module_is_live' [-Werror=implicit-function-declaration] Reported-by: Randy Dunlap Cc: Akihiro Tsukada Cc: Stephen Rothwell Signed-off-by: Antti Palosaari Signed-off-by: Mauro Carvalho Chehab --- drivers/media/pci/pt3/pt3.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/media/pci/pt3/pt3.c b/drivers/media/pci/pt3/pt3.c index 90f86ce7a001..1fdeac11501a 100644 --- a/drivers/media/pci/pt3/pt3.c +++ b/drivers/media/pci/pt3/pt3.c @@ -393,7 +393,7 @@ static int pt3_attach_fe(struct pt3_board *pt3, int i) return -ENODEV; pt3->adaps[i]->i2c_demod = cl; if (!try_module_get(cl->dev.driver->owner)) - goto err_demod; + goto err_demod_i2c_unregister_device; if (!strncmp(cl->name, TC90522_I2C_DEV_SAT, sizeof(cl->name))) { struct qm1d1c0042_config tcfg; @@ -415,28 +415,27 @@ static int pt3_attach_fe(struct pt3_board *pt3, int i) cl = i2c_new_device(cfg.tuner_i2c, &info); } if (!cl || !cl->dev.driver) - goto err_demod; + goto err_demod_module_put; pt3->adaps[i]->i2c_tuner = cl; if (!try_module_get(cl->dev.driver->owner)) - goto err_tuner; + goto err_tuner_i2c_unregister_device; dvb_adap = &pt3->adaps[one_adapter ? 0 : i]->dvb_adap; ret = dvb_register_frontend(dvb_adap, cfg.fe); if (ret < 0) - goto err_tuner; + goto err_tuner_module_put; pt3->adaps[i]->fe = cfg.fe; return 0; -err_tuner: +err_tuner_module_put: + module_put(pt3->adaps[i]->i2c_tuner->dev.driver->owner); +err_tuner_i2c_unregister_device: i2c_unregister_device(pt3->adaps[i]->i2c_tuner); - if (pt3->adaps[i]->i2c_tuner->dev.driver->owner && - module_is_live(pt3->adaps[i]->i2c_tuner->dev.driver->owner)) - module_put(pt3->adaps[i]->i2c_tuner->dev.driver->owner); -err_demod: +err_demod_module_put: + module_put(pt3->adaps[i]->i2c_demod->dev.driver->owner); +err_demod_i2c_unregister_device: i2c_unregister_device(pt3->adaps[i]->i2c_demod); - if (pt3->adaps[i]->i2c_demod->dev.driver->owner && - module_is_live(pt3->adaps[i]->i2c_demod->dev.driver->owner)) - module_put(pt3->adaps[i]->i2c_demod->dev.driver->owner); + return ret; } -- 2.39.5