提交 3b952436 编写于 作者: A Antti Palosaari 提交者: Mauro Carvalho Chehab

[media] cx23885: do not unregister demod I2C client twice on error

Demod I2C client should be NULL after demod is unregistered on error
path, otherwise it will be unregistered again when driver is unload.
Signed-off-by: NAntti Palosaari <crope@iki.fi>
Signed-off-by: NMauro Carvalho Chehab <mchehab@osg.samsung.com>
上级 99f3cd52
...@@ -1793,12 +1793,14 @@ static int dvb_register(struct cx23885_tsport *port) ...@@ -1793,12 +1793,14 @@ static int dvb_register(struct cx23885_tsport *port)
client_tuner->dev.driver == NULL) { client_tuner->dev.driver == NULL) {
module_put(client_demod->dev.driver->owner); module_put(client_demod->dev.driver->owner);
i2c_unregister_device(client_demod); i2c_unregister_device(client_demod);
port->i2c_client_demod = NULL;
goto frontend_detach; goto frontend_detach;
} }
if (!try_module_get(client_tuner->dev.driver->owner)) { if (!try_module_get(client_tuner->dev.driver->owner)) {
i2c_unregister_device(client_tuner); i2c_unregister_device(client_tuner);
module_put(client_demod->dev.driver->owner); module_put(client_demod->dev.driver->owner);
i2c_unregister_device(client_demod); i2c_unregister_device(client_demod);
port->i2c_client_demod = NULL;
goto frontend_detach; goto frontend_detach;
} }
port->i2c_client_tuner = client_tuner; port->i2c_client_tuner = client_tuner;
...@@ -1843,12 +1845,14 @@ static int dvb_register(struct cx23885_tsport *port) ...@@ -1843,12 +1845,14 @@ static int dvb_register(struct cx23885_tsport *port)
client_tuner->dev.driver == NULL) { client_tuner->dev.driver == NULL) {
module_put(client_demod->dev.driver->owner); module_put(client_demod->dev.driver->owner);
i2c_unregister_device(client_demod); i2c_unregister_device(client_demod);
port->i2c_client_demod = NULL;
goto frontend_detach; goto frontend_detach;
} }
if (!try_module_get(client_tuner->dev.driver->owner)) { if (!try_module_get(client_tuner->dev.driver->owner)) {
i2c_unregister_device(client_tuner); i2c_unregister_device(client_tuner);
module_put(client_demod->dev.driver->owner); module_put(client_demod->dev.driver->owner);
i2c_unregister_device(client_demod); i2c_unregister_device(client_demod);
port->i2c_client_demod = NULL;
goto frontend_detach; goto frontend_detach;
} }
port->i2c_client_tuner = client_tuner; port->i2c_client_tuner = client_tuner;
...@@ -1989,6 +1993,7 @@ static int dvb_register(struct cx23885_tsport *port) ...@@ -1989,6 +1993,7 @@ static int dvb_register(struct cx23885_tsport *port)
client_tuner->dev.driver == NULL) { client_tuner->dev.driver == NULL) {
module_put(client_demod->dev.driver->owner); module_put(client_demod->dev.driver->owner);
i2c_unregister_device(client_demod); i2c_unregister_device(client_demod);
port->i2c_client_demod = NULL;
goto frontend_detach; goto frontend_detach;
} }
if (!try_module_get(client_tuner->dev.driver->owner)) { if (!try_module_get(client_tuner->dev.driver->owner)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册