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