diff options
Diffstat (limited to 'linux/drivers/media/dvb/ttpci/budget-core.c')
-rw-r--r-- | linux/drivers/media/dvb/ttpci/budget-core.c | 10 |
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; } |