From f268e4d97f5b458c5484b048d69fb265d3a868c8 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 15 Aug 2006 18:30:24 +0200 Subject: [PATCH] --- yaml --- r: 36091 b: refs/heads/master c: defcb46ed4666095677c8f52904b9e328587a20d h: refs/heads/master i: 36089: 91c7be9bee4a6d649b8ae779c5b5edc1a7fb2409 36087: 791e568bdddf03ea4994c2719b7dc9f2ed112859 v: v3 --- [refs] | 2 +- trunk/drivers/i2c/i2c-dev.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 7dc7a01e1af4..4ea83a536054 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b119c6c952a086f74202ccda4b7ed72161bb6522 +refs/heads/master: defcb46ed4666095677c8f52904b9e328587a20d diff --git a/trunk/drivers/i2c/i2c-dev.c b/trunk/drivers/i2c/i2c-dev.c index 2ce083391292..567fb05aeccc 100644 --- a/trunk/drivers/i2c/i2c-dev.c +++ b/trunk/drivers/i2c/i2c-dev.c @@ -406,6 +406,7 @@ static struct class *i2c_dev_class; static int i2cdev_attach_adapter(struct i2c_adapter *adap) { struct i2c_dev *i2c_dev; + int res; i2c_dev = get_free_i2c_dev(adap); if (IS_ERR(i2c_dev)) @@ -419,14 +420,20 @@ static int i2cdev_attach_adapter(struct i2c_adapter *adap) MKDEV(I2C_MAJOR, adap->nr), &adap->dev, "i2c-%d", adap->nr); - if (!i2c_dev->class_dev) + if (!i2c_dev->class_dev) { + res = -ENODEV; goto error; - class_device_create_file(i2c_dev->class_dev, &class_device_attr_name); + } + res = class_device_create_file(i2c_dev->class_dev, &class_device_attr_name); + if (res) + goto error_destroy; return 0; +error_destroy: + class_device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); error: return_i2c_dev(i2c_dev); kfree(i2c_dev); - return -ENODEV; + return res; } static int i2cdev_detach_adapter(struct i2c_adapter *adap) @@ -437,6 +444,7 @@ static int i2cdev_detach_adapter(struct i2c_adapter *adap) if (!i2c_dev) return -ENODEV; + class_device_remove_file(i2c_dev->class_dev, &class_device_attr_name); return_i2c_dev(i2c_dev); class_device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); kfree(i2c_dev);