diff options
-rw-r--r-- | linux/drivers/media/dvb/ttpci/av7110.c | 10 | ||||
-rw-r--r-- | linux/drivers/media/dvb/ttpci/budget-core.c | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/ttpci/av7110.c b/linux/drivers/media/dvb/ttpci/av7110.c index 3a2d1d23a..628a5e5ec 100644 --- a/linux/drivers/media/dvb/ttpci/av7110.c +++ b/linux/drivers/media/dvb/ttpci/av7110.c @@ -1409,6 +1409,13 @@ int client_register(struct i2c_client *client) struct saa7146_dev *dev = (struct saa7146_dev*)i2c_get_adapdata(client->adapter); struct av7110 *av7110 = (struct av7110*)dev->ext_priv; + if (!try_module_get(client->driver->owner)) { + printk("Unable to get module lock for '%s'.\n", + client->driver->name); + // XXX - Unregister + return -EIO; + } + /* fixme: check for "type" (ie. frontend type) */ if (client->driver->command) return client->driver->command(client, FE_REGISTER, av7110->dvb_adapter); @@ -1423,6 +1430,9 @@ int client_unregister(struct i2c_client *client) /* fixme: check for "type" (ie. frontend type) */ if (client->driver->command) return client->driver->command(client, FE_UNREGISTER, av7110->dvb_adapter); + + module_put(client->driver->owner); + return 0; } diff --git a/linux/drivers/media/dvb/ttpci/budget-core.c b/linux/drivers/media/dvb/ttpci/budget-core.c index c1172e96a..d1229fd43 100644 --- a/linux/drivers/media/dvb/ttpci/budget-core.c +++ b/linux/drivers/media/dvb/ttpci/budget-core.c @@ -271,6 +271,13 @@ int client_register(struct i2c_client *client) struct saa7146_dev *dev = (struct saa7146_dev*)i2c_get_adapdata(client->adapter); struct budget *budget = (struct budget*)dev->ext_priv; + if (!try_module_get(client->driver->owner)) { + printk("Unable to get module lock for '%s'.\n", + client->driver->name); + // XXX - Unregister + return -EIO; + } + if (client->driver->command) return client->driver->command(client, FE_REGISTER, budget->dvb_adapter); return 0; @@ -283,6 +290,9 @@ int client_unregister(struct i2c_client *client) if (client->driver->command) return client->driver->command(client, FE_UNREGISTER, budget->dvb_adapter); + + module_put(client->driver->owner); + return 0; } |