summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Aafloy <devnull@localhost>2004-07-09 21:17:57 +0000
committerKenneth Aafloy <devnull@localhost>2004-07-09 21:17:57 +0000
commit1cae21dd782d79409d619f72c5eecc64b7a13036 (patch)
tree10c237c1e414b6c543a6865755b813f6a69b815d
parentc0a384d17920ec41c09e994da04c9d5a32131bab (diff)
downloadmediapointer-dvb-s2-1cae21dd782d79409d619f72c5eecc64b7a13036.tar.gz
mediapointer-dvb-s2-1cae21dd782d79409d619f72c5eecc64b7a13036.tar.bz2
Make budget-core and dvb-ttpci lock the module that attaches to them.
-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;
}