diff options
author | Jean Delvare <khali@linux-fr.org> | 2006-09-03 16:20:24 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-26 18:38:51 -0400 |
commit | 7d9db67febf67dd76329a9dd8f97cf4611a8ac2e (patch) | |
tree | 6354fa99b17f89c8f26ccf7c440d0d29096f2dc2 /drivers/i2c/chips/eeprom.c | |
parent | b32d20dc8b187e03605f091dbde9a78676a2a642 (diff) |
i2c: __must_check fixes (chip drivers)
i2c: __must_check fixes (chip drivers)
Check for error on sysfs file creation.
Delete sysfs files on device removal.
The approach taken for the most complex case (pcf8591) is similar to
what Mark M. Hoffman proposed for hardware monitoring chip drivers.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Ben Gardner <bgardner@wabtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/i2c/chips/eeprom.c')
-rw-r--r-- | drivers/i2c/chips/eeprom.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/i2c/chips/eeprom.c b/drivers/i2c/chips/eeprom.c index 13c108269a6d..cec3a0c3894d 100644 --- a/drivers/i2c/chips/eeprom.c +++ b/drivers/i2c/chips/eeprom.c | |||
@@ -209,10 +209,14 @@ static int eeprom_detect(struct i2c_adapter *adapter, int address, int kind) | |||
209 | } | 209 | } |
210 | 210 | ||
211 | /* create the sysfs eeprom file */ | 211 | /* create the sysfs eeprom file */ |
212 | sysfs_create_bin_file(&new_client->dev.kobj, &eeprom_attr); | 212 | err = sysfs_create_bin_file(&new_client->dev.kobj, &eeprom_attr); |
213 | if (err) | ||
214 | goto exit_detach; | ||
213 | 215 | ||
214 | return 0; | 216 | return 0; |
215 | 217 | ||
218 | exit_detach: | ||
219 | i2c_detach_client(new_client); | ||
216 | exit_kfree: | 220 | exit_kfree: |
217 | kfree(data); | 221 | kfree(data); |
218 | exit: | 222 | exit: |
@@ -223,6 +227,8 @@ static int eeprom_detach_client(struct i2c_client *client) | |||
223 | { | 227 | { |
224 | int err; | 228 | int err; |
225 | 229 | ||
230 | sysfs_remove_bin_file(&client->dev.kobj, &eeprom_attr); | ||
231 | |||
226 | err = i2c_detach_client(client); | 232 | err = i2c_detach_client(client); |
227 | if (err) | 233 | if (err) |
228 | return err; | 234 | return err; |