summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/eeprom/at24.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c
index a323d25dd4..0f54d1b6de 100644
--- a/drivers/eeprom/at24.c
+++ b/drivers/eeprom/at24.c
@@ -480,14 +480,21 @@ static int at24_probe(struct device_d *dev)
}
}
- devfs_create(&at24->cdev);
+ err = devfs_create(&at24->cdev);
+ if (err)
+ goto err_devfs_create;
of_parse_partitions(&at24->cdev, dev->device_node);
return 0;
+err_devfs_create:
err_clients:
- gpio_free(at24->wp_gpio);
+ for (i = 1; i < num_addresses; i++)
+ kfree(at24->client[i]);
+
+ if (gpio_is_valid(at24->wp_gpio))
+ gpio_free(at24->wp_gpio);
kfree(at24->writebuf);
kfree(at24);
err_out: