media: lgdt3306a: Fix module count mismatch on usb unplug
authorBrad Love <brad@nextdimension.cc>
Fri, 5 Jan 2018 14:57:12 +0000 (09:57 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Mar 2018 09:39:30 +0000 (04:39 -0500)
When used as an i2c device there is a module usage count mismatch on
removal, preventing the driver from being used thereafter. dvb_attach
increments the usage count so it is properly balanced on removal.

On disconnect of Hauppauge SoloHD/DualHD before:

lsmod | grep lgdt3306a
lgdt3306a              28672  -1
i2c_mux                16384  1 lgdt3306a

On disconnect of Hauppauge SoloHD/DualHD after:

lsmod | grep lgdt3306a
lgdt3306a              28672  0
i2c_mux                16384  1 lgdt3306a

Signed-off-by: Brad Love <brad@nextdimension.cc>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/lgdt3306a.c

index fb9c7bc40a9cc64159f473c30f4404412342e503..adcaf9b20ce3617f3914824c491c531d9a2e67c1 100644 (file)
@@ -2215,7 +2215,7 @@ static int lgdt3306a_probe(struct i2c_client *client,
                        sizeof(struct lgdt3306a_config));
 
        config->i2c_addr = client->addr;
-       fe = lgdt3306a_attach(config, client->adapter);
+       fe = dvb_attach(lgdt3306a_attach, config, client->adapter);
        if (fe == NULL) {
                ret = -ENODEV;
                goto err_fe;