diff options
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r-- | drivers/mtd/nand/txx9ndfmc.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/mtd/nand/txx9ndfmc.c b/drivers/mtd/nand/txx9ndfmc.c index 812479264896..5f919e63b29b 100644 --- a/drivers/mtd/nand/txx9ndfmc.c +++ b/drivers/mtd/nand/txx9ndfmc.c | |||
@@ -64,7 +64,7 @@ struct txx9ndfmc_priv { | |||
64 | struct nand_chip chip; | 64 | struct nand_chip chip; |
65 | struct mtd_info mtd; | 65 | struct mtd_info mtd; |
66 | int cs; | 66 | int cs; |
67 | char mtdname[BUS_ID_SIZE + 2]; | 67 | const char *mtdname; |
68 | }; | 68 | }; |
69 | 69 | ||
70 | #define MAX_TXX9NDFMC_DEV 4 | 70 | #define MAX_TXX9NDFMC_DEV 4 |
@@ -334,11 +334,17 @@ static int __init txx9ndfmc_probe(struct platform_device *dev) | |||
334 | 334 | ||
335 | if (plat->ch_mask != 1) { | 335 | if (plat->ch_mask != 1) { |
336 | txx9_priv->cs = i; | 336 | txx9_priv->cs = i; |
337 | sprintf(txx9_priv->mtdname, "%s.%u", | 337 | txx9_priv->mtdname = kasprintf(GFP_KERNEL, "%s.%u", |
338 | dev_name(&dev->dev), i); | 338 | dev_name(&dev->dev), i); |
339 | if (!txx9_priv->mtdname) { | ||
340 | kfree(txx9_priv); | ||
341 | dev_err(&dev->dev, | ||
342 | "Unable to allocate TXx9 NDFMC MTD device name.\n"); | ||
343 | continue; | ||
344 | } | ||
339 | } else { | 345 | } else { |
340 | txx9_priv->cs = -1; | 346 | txx9_priv->cs = -1; |
341 | strcpy(txx9_priv->mtdname, dev_name(&dev->dev)); | 347 | txx9_priv->mtdname = dev_name(&dev->dev); |
342 | } | 348 | } |
343 | if (plat->wide_mask & (1 << i)) | 349 | if (plat->wide_mask & (1 << i)) |
344 | chip->options |= NAND_BUSWIDTH_16; | 350 | chip->options |= NAND_BUSWIDTH_16; |
@@ -385,6 +391,8 @@ static int __exit txx9ndfmc_remove(struct platform_device *dev) | |||
385 | kfree(drvdata->parts[i]); | 391 | kfree(drvdata->parts[i]); |
386 | #endif | 392 | #endif |
387 | del_mtd_device(mtd); | 393 | del_mtd_device(mtd); |
394 | if (txx9_priv->mtdname != dev_name(&dev->dev)) | ||
395 | kfree(txx9_priv->mtdname); | ||
388 | kfree(txx9_priv); | 396 | kfree(txx9_priv); |
389 | } | 397 | } |
390 | return 0; | 398 | return 0; |