diff --git a/[refs] b/[refs] index 135d0a602087..c41cda34baa2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d682420cead1ce06d8cd44ae193414404f0e7f5 +refs/heads/master: 395b228858778d3c44f7c413693a6acaa8bb62dc diff --git a/trunk/drivers/mtd/maps/pismo.c b/trunk/drivers/mtd/maps/pismo.c index c48cad271f5d..0a5e243d2bc6 100644 --- a/trunk/drivers/mtd/maps/pismo.c +++ b/trunk/drivers/mtd/maps/pismo.c @@ -233,6 +233,7 @@ static int __devexit pismo_remove(struct i2c_client *client) /* FIXME: set_vpp needs saner arguments */ pismo_setvpp_remove_fix(pismo); + i2c_set_clientdata(client, NULL); kfree(pismo); return 0; @@ -271,7 +272,7 @@ static int __devinit pismo_probe(struct i2c_client *client, ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom)); if (ret < 0) { dev_err(&client->dev, "error reading EEPROM: %d\n", ret); - return ret; + goto exit_free; } dev_info(&client->dev, "%.15s board found\n", eeprom.board); @@ -282,6 +283,11 @@ static int __devinit pismo_probe(struct i2c_client *client, pdata->cs_addrs[i]); return 0; + + exit_free: + i2c_set_clientdata(client, NULL); + kfree(pismo); + return ret; } static const struct i2c_device_id pismo_id[] = {