summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/dvb')
-rw-r--r--linux/drivers/media/dvb/ttpci/av7110.c10
-rw-r--r--linux/drivers/media/dvb/ttpci/budget-core.c10
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;
}