diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-11-15 22:40:38 +0100 |
---|---|---|
committer | Jean Delvare <khali@endymion.delvare> | 2010-11-15 22:40:38 +0100 |
commit | 2236baa75f704851d3cd3310569058151acb1f06 (patch) | |
tree | a34e5684bff7127a849c44de2a5b517811917d34 /drivers/i2c | |
parent | e1e18ee1cb58228a577668284c1dd03d859d7157 (diff) | |
download | kernel-common-2236baa75f704851d3cd3310569058151acb1f06.tar.gz kernel-common-2236baa75f704851d3cd3310569058151acb1f06.tar.bz2 kernel-common-2236baa75f704851d3cd3310569058151acb1f06.zip |
i2c: Sanity checks on adapter registration
Make sure I2C adapters being registered have the required struct
fields set. If they don't, problems will happen later.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-core.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index d231f683f576..6b4cc567645b 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -848,6 +848,18 @@ static int i2c_register_adapter(struct i2c_adapter *adap) goto out_list; } + /* Sanity checks */ + if (unlikely(adap->name[0] == '\0')) { + pr_err("i2c-core: Attempt to register an adapter with " + "no name!\n"); + return -EINVAL; + } + if (unlikely(!adap->algo)) { + pr_err("i2c-core: Attempt to register adapter '%s' with " + "no algo!\n", adap->name); + return -EINVAL; + } + rt_mutex_init(&adap->bus_lock); mutex_init(&adap->userspace_clients_lock); INIT_LIST_HEAD(&adap->userspace_clients); |