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 <[email protected]>
---
Randy, please apply this patch and check if it catches anything.

 drivers/i2c/i2c-core.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

--- linux-2.6.37-rc1.orig/drivers/i2c/i2c-core.c        2010-11-05 
11:37:34.000000000 +0100
+++ linux-2.6.37-rc1/drivers/i2c/i2c-core.c     2010-11-05 11:54:34.000000000 
+0100
@@ -848,6 +848,21 @@ static int i2c_register_adapter(struct i
                goto out_list;
        }
 
+       /* Sanity checks */
+       if (adap->name[0] == '\0') {
+               pr_err("i2c-core: Attempt to register an adapter with "
+                      "no name!\n");
+               return -EINVAL;
+       }
+       if (!adap->algo) {
+               pr_err("i2c-core: Attempt to register adapter '%s' with "
+                      "no algo!\n", adap->name);
+               return -EINVAL;
+       }
+       if (!adap->owner)
+               pr_warn("i2c-core: Attempt to register adapter '%s' with "
+                      "no owner!\n", adap->name);
+
        rt_mutex_init(&adap->bus_lock);
        mutex_init(&adap->userspace_clients_lock);
        INIT_LIST_HEAD(&adap->userspace_clients);


-- 
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to