diff options
Diffstat (limited to 'drivers/mtd/maps')
-rw-r--r-- | drivers/mtd/maps/pismo.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mtd/maps/pismo.c b/drivers/mtd/maps/pismo.c index c48cad271f5..0a5e243d2bc 100644 --- a/drivers/mtd/maps/pismo.c +++ b/drivers/mtd/maps/pismo.c | |||
@@ -233,6 +233,7 @@ static int __devexit pismo_remove(struct i2c_client *client) | |||
233 | /* FIXME: set_vpp needs saner arguments */ | 233 | /* FIXME: set_vpp needs saner arguments */ |
234 | pismo_setvpp_remove_fix(pismo); | 234 | pismo_setvpp_remove_fix(pismo); |
235 | 235 | ||
236 | i2c_set_clientdata(client, NULL); | ||
236 | kfree(pismo); | 237 | kfree(pismo); |
237 | 238 | ||
238 | return 0; | 239 | return 0; |
@@ -271,7 +272,7 @@ static int __devinit pismo_probe(struct i2c_client *client, | |||
271 | ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom)); | 272 | ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom)); |
272 | if (ret < 0) { | 273 | if (ret < 0) { |
273 | dev_err(&client->dev, "error reading EEPROM: %d\n", ret); | 274 | dev_err(&client->dev, "error reading EEPROM: %d\n", ret); |
274 | return ret; | 275 | goto exit_free; |
275 | } | 276 | } |
276 | 277 | ||
277 | dev_info(&client->dev, "%.15s board found\n", eeprom.board); | 278 | dev_info(&client->dev, "%.15s board found\n", eeprom.board); |
@@ -282,6 +283,11 @@ static int __devinit pismo_probe(struct i2c_client *client, | |||
282 | pdata->cs_addrs[i]); | 283 | pdata->cs_addrs[i]); |
283 | 284 | ||
284 | return 0; | 285 | return 0; |
286 | |||
287 | exit_free: | ||
288 | i2c_set_clientdata(client, NULL); | ||
289 | kfree(pismo); | ||
290 | return ret; | ||
285 | } | 291 | } |
286 | 292 | ||
287 | static const struct i2c_device_id pismo_id[] = { | 293 | static const struct i2c_device_id pismo_id[] = { |