diff options
Diffstat (limited to 'drivers/i2c/chips/pca9539.c')
-rw-r--r-- | drivers/i2c/chips/pca9539.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/i2c/chips/pca9539.c b/drivers/i2c/chips/pca9539.c index cb22280cdd27..f43c4e79b55e 100644 --- a/drivers/i2c/chips/pca9539.c +++ b/drivers/i2c/chips/pca9539.c | |||
@@ -148,11 +148,16 @@ static int pca9539_detect(struct i2c_adapter *adapter, int address, int kind) | |||
148 | if ((err = i2c_attach_client(new_client))) | 148 | if ((err = i2c_attach_client(new_client))) |
149 | goto exit_kfree; | 149 | goto exit_kfree; |
150 | 150 | ||
151 | /* Register sysfs hooks (don't care about failure) */ | 151 | /* Register sysfs hooks */ |
152 | sysfs_create_group(&new_client->dev.kobj, &pca9539_defattr_group); | 152 | err = sysfs_create_group(&new_client->dev.kobj, |
153 | &pca9539_defattr_group); | ||
154 | if (err) | ||
155 | goto exit_detach; | ||
153 | 156 | ||
154 | return 0; | 157 | return 0; |
155 | 158 | ||
159 | exit_detach: | ||
160 | i2c_detach_client(new_client); | ||
156 | exit_kfree: | 161 | exit_kfree: |
157 | kfree(data); | 162 | kfree(data); |
158 | exit: | 163 | exit: |
@@ -163,6 +168,8 @@ static int pca9539_detach_client(struct i2c_client *client) | |||
163 | { | 168 | { |
164 | int err; | 169 | int err; |
165 | 170 | ||
171 | sysfs_remove_group(&client->dev.kobj, &pca9539_defattr_group); | ||
172 | |||
166 | if ((err = i2c_detach_client(client))) | 173 | if ((err = i2c_detach_client(client))) |
167 | return err; | 174 | return err; |
168 | 175 | ||