diff options
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; |
