em28xx_dvb_resume() unregisters i2c tuner, i2c demod, and dvb.
This erroneous cleanup results in i2c tuner, i2c demod, and dvb
devices unregistered and removed during resume. This error is a
result of merge conflict between two patches that went into 3.15.
Signed-off-by: Shuah Khan <[email protected]>
---
drivers/media/usb/em28xx/em28xx-dvb.c | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index a121ed9..d381861 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -1712,7 +1712,6 @@ static int em28xx_dvb_resume(struct em28xx *dev)
em28xx_info("Resuming DVB extension");
if (dev->dvb) {
struct em28xx_dvb *dvb = dev->dvb;
- struct i2c_client *client = dvb->i2c_client_tuner;
if (dvb->fe[0]) {
ret = dvb_frontend_resume(dvb->fe[0]);
@@ -1723,22 +1722,6 @@ static int em28xx_dvb_resume(struct em28xx *dev)
ret = dvb_frontend_resume(dvb->fe[1]);
em28xx_info("fe1 resume %d", ret);
}
- /* remove I2C tuner */
- if (client) {
- module_put(client->dev.driver->owner);
- i2c_unregister_device(client);
- }
-
- /* remove I2C demod */
- client = dvb->i2c_client_demod;
- if (client) {
- module_put(client->dev.driver->owner);
- i2c_unregister_device(client);
- }
-
- em28xx_unregister_dvb(dvb);
- kfree(dvb);
- dev->dvb = NULL;
}
return 0;
--
1.7.10.4
Reviewed-by: Antti Palosaari <[email protected]>
Antti
On 07/09/2014 04:21 PM, Shuah Khan wrote:
> em28xx_dvb_resume() unregisters i2c tuner, i2c demod, and dvb.
> This erroneous cleanup results in i2c tuner, i2c demod, and dvb
> devices unregistered and removed during resume. This error is a
> result of merge conflict between two patches that went into 3.15.
>
> Signed-off-by: Shuah Khan <[email protected]>
> ---
> drivers/media/usb/em28xx/em28xx-dvb.c | 17 -----------------
> 1 file changed, 17 deletions(-)
>
> diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
> index a121ed9..d381861 100644
> --- a/drivers/media/usb/em28xx/em28xx-dvb.c
> +++ b/drivers/media/usb/em28xx/em28xx-dvb.c
> @@ -1712,7 +1712,6 @@ static int em28xx_dvb_resume(struct em28xx *dev)
> em28xx_info("Resuming DVB extension");
> if (dev->dvb) {
> struct em28xx_dvb *dvb = dev->dvb;
> - struct i2c_client *client = dvb->i2c_client_tuner;
>
> if (dvb->fe[0]) {
> ret = dvb_frontend_resume(dvb->fe[0]);
> @@ -1723,22 +1722,6 @@ static int em28xx_dvb_resume(struct em28xx *dev)
> ret = dvb_frontend_resume(dvb->fe[1]);
> em28xx_info("fe1 resume %d", ret);
> }
> - /* remove I2C tuner */
> - if (client) {
> - module_put(client->dev.driver->owner);
> - i2c_unregister_device(client);
> - }
> -
> - /* remove I2C demod */
> - client = dvb->i2c_client_demod;
> - if (client) {
> - module_put(client->dev.driver->owner);
> - i2c_unregister_device(client);
> - }
> -
> - em28xx_unregister_dvb(dvb);
> - kfree(dvb);
> - dev->dvb = NULL;
> }
>
> return 0;
>
--
http://palosaari.fi/