diff mbox

[for-4.5,v2] mtd: nand: assign reasonable default name for NAND drivers

Message ID 1452019185-134498-1-git-send-email-computersforpeace@gmail.com
State Accepted
Commit f7a8e38f07a17be90758559fe66fe7337096053f
Headers show

Commit Message

Brian Norris Jan. 5, 2016, 6:39 p.m. UTC
Commits such as commit 853f1c58c4b2 ("mtd: nand: omap2: show parent
device structure in sysfs") attempt to rely on the core MTD code to set
the MTD name based on the parent device. However, nand_base tries to set
a different default name according to the flash name (e.g., extracted
from the ONFI parameter page), which means NAND drivers will never make
use of the MTD defaults. This is not the intention of commit
853f1c58c4b2.

This results in problems when trying to use the cmdline partition
parser, since the MTD name is different than expected. Let's fix this by
providing a default NAND name, where possible.

Note that this is not really a great default name in the long run, since
this means that if there are multiple MTDs attached to the same
controller device, they will have the same name. But that is an existing
issue and requires future work on a better controller vs. flash chip
abstraction to fix properly.

Fixes: 853f1c58c4b2 ("mtd: nand: omap2: show parent device structure in sysfs")
Reported-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Tested-by: Heiko Schocher <hs@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Frans Klaver <fransklaver@gmail.com>
Cc: <stable@vger.kernel.org>
---
v2:
 * target 4.5, as 4.4 is getting late
 * add -stable tags
 * move assignment directly into nand_scan_ident() (nand_set_defaults() has a
   slightly different purpose and gets reused, so it's not as good of a
   candidate)

I kept the Tested-by since the v2 change is trivial

 drivers/mtd/nand/nand_base.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Brian Norris Jan. 6, 2016, 10:53 p.m. UTC | #1
On Tue, Jan 05, 2016 at 10:39:45AM -0800, Brian Norris wrote:
> Commits such as commit 853f1c58c4b2 ("mtd: nand: omap2: show parent
> device structure in sysfs") attempt to rely on the core MTD code to set
> the MTD name based on the parent device. However, nand_base tries to set
> a different default name according to the flash name (e.g., extracted
> from the ONFI parameter page), which means NAND drivers will never make
> use of the MTD defaults. This is not the intention of commit
> 853f1c58c4b2.
> 
> This results in problems when trying to use the cmdline partition
> parser, since the MTD name is different than expected. Let's fix this by
> providing a default NAND name, where possible.
> 
> Note that this is not really a great default name in the long run, since
> this means that if there are multiple MTDs attached to the same
> controller device, they will have the same name. But that is an existing
> issue and requires future work on a better controller vs. flash chip
> abstraction to fix properly.
> 
> Fixes: 853f1c58c4b2 ("mtd: nand: omap2: show parent device structure in sysfs")
> Reported-by: Heiko Schocher <hs@denx.de>
> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> Tested-by: Heiko Schocher <hs@denx.de>
> Cc: Heiko Schocher <hs@denx.de>
> Cc: Frans Klaver <fransklaver@gmail.com>
> Cc: <stable@vger.kernel.org>
> ---
> v2:
>  * target 4.5, as 4.4 is getting late
>  * add -stable tags
>  * move assignment directly into nand_scan_ident() (nand_set_defaults() has a
>    slightly different purpose and gets reused, so it's not as good of a
>    candidate)

Applied to l2-mtd.git, for 4.5 (+ stable)
diff mbox

Patch

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 928081bbdafd..50514f2501bb 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3996,6 +3996,9 @@  int nand_scan_ident(struct mtd_info *mtd, int maxchips,
 	if (ret)
 		return ret;
 
+	if (!mtd->name && mtd->dev.parent)
+		mtd->name = dev_name(mtd->dev.parent);
+
 	/* Set the default functions */
 	nand_set_defaults(chip, chip->options & NAND_BUSWIDTH_16);