summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/ttpci/budget-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/drivers/media/dvb/ttpci/budget-core.c')
-rw-r--r--linux/drivers/media/dvb/ttpci/budget-core.c10
1 files changed, 10 insertions, 0 deletions
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;
}