diff --git a/drivers/mtd/nand/socrates_nand.c b/drivers/mtd/nand/socrates_nand.c index f44c7c884a20..e77da7efa200 100644 --- a/drivers/mtd/nand/socrates_nand.c +++ b/drivers/mtd/nand/socrates_nand.c @@ -149,17 +149,13 @@ static int socrates_nand_probe(struct platform_device *ofdev) struct mtd_part_parser_data ppdata; /* Allocate memory for the device structure (and zero it) */ - host = kzalloc(sizeof(struct socrates_nand_host), GFP_KERNEL); - if (!host) { - printk(KERN_ERR - "socrates_nand: failed to allocate device structure.\n"); + host = devm_kzalloc(&ofdev->dev, sizeof(*host), GFP_KERNEL); + if (!host) return -ENOMEM; - } host->io_base = of_iomap(ofdev->dev.of_node, 0); if (host->io_base == NULL) { printk(KERN_ERR "socrates_nand: ioremap failed\n"); - kfree(host); return -EIO; } @@ -212,7 +208,6 @@ static int socrates_nand_probe(struct platform_device *ofdev) out: iounmap(host->io_base); - kfree(host); return res; } @@ -227,7 +222,6 @@ static int socrates_nand_remove(struct platform_device *ofdev) nand_release(mtd); iounmap(host->io_base); - kfree(host); return 0; }