Linux kernel -stable discussions
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree
@ 2026-11-07 11:14 Sasha Levin
  2026-11-07 20:41 ` Rosen Penev
  2026-11-10  3:58 ` [PATCH 5.10.y 1/2] mtd: rawnand: ndfc: fix gcc uninitialized var Sasha Levin
  0 siblings, 2 replies; 5+ messages in thread
From: Sasha Levin @ 2026-11-07 11:14 UTC (permalink / raw)
  To: rosenp, miquel.raynal; +Cc: stable

The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 0d66f9895f286d2fab396a71e6efeb95c4a7e5a6
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '20261107061443-failed-5.10-0d66f9895f28@kernel.org' --subject-prefix 'PATCH 5.10.y' 'HEAD^..'

Thanks,
Sasha

------------------ original commit in Linus's tree ------------------

From 0d66f9895f286d2fab396a71e6efeb95c4a7e5a6 Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Mon, 24 Aug 2026 13:21:20 -0700
Subject: [PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()

Replace the open-coded of_iomap()/iounmap() with the managed
devm_platform_ioremap_resource() helper. This fixes a mapping leak on
driver remove (the old code never called iounmap()) and simplifies the
error path by dropping the manual cleanup in ndfc_probe().

There is no overlapping memory-region concern introduced by this
change: each supported board DT describes a single ndfc node with a
unique 0x2000 register region, and the EBC parent uses dcr-reg rather
than a MEM reg resource, so the newly added request_mem_region() cannot
conflict with an existing reservation. Distinct chip selects map to
distinct 64-bit physical addresses, so CS instances do not overlap.

Fixes: a808ad3b0d28 ("[MTD] [NAND] ndfc driver")
Cc: stable@vger.kernel.org
Assisted-by: opencode:hy3-free
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 drivers/mtd/nand/raw/ndfc.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/mtd/nand/raw/ndfc.c b/drivers/mtd/nand/raw/ndfc.c
index a48274297d3b1..d6db04d48c45a 100644
--- a/drivers/mtd/nand/raw/ndfc.c
+++ b/drivers/mtd/nand/raw/ndfc.c
@@ -185,10 +185,15 @@ static int ndfc_chip_init(struct ndfc_controller *ndfc,
 static int ndfc_probe(struct platform_device *ofdev)
 {
 	struct ndfc_controller *ndfc;
+	void __iomem *ndfcbase;
 	const __be32 *reg;
 	u32 ccr;
 	u32 cs;
-	int err, len = 0;
+	int len = 0;
+
+	ndfcbase = devm_platform_ioremap_resource(ofdev, 0);
+	if (IS_ERR(ndfcbase))
+		return PTR_ERR(ndfcbase);
 
 	/* Read the reg property to get the chip select */
 	reg = of_get_property(ofdev->dev.of_node, "reg", &len);
@@ -210,11 +215,7 @@ static int ndfc_probe(struct platform_device *ofdev)
 	ndfc->ofdev = ofdev;
 	dev_set_drvdata(&ofdev->dev, ndfc);
 
-	ndfc->ndfcbase = of_iomap(ofdev->dev.of_node, 0);
-	if (!ndfc->ndfcbase) {
-		dev_err(&ofdev->dev, "failed to get memory\n");
-		return -EIO;
-	}
+	ndfc->ndfcbase = ndfcbase;
 
 	ccr = NDFC_CCR_BS(ndfc->chip_select);
 
@@ -232,13 +233,7 @@ static int ndfc_probe(struct platform_device *ofdev)
 		iowrite32be(be32_to_cpup(reg), ndfc->ndfcbase + offset);
 	}
 
-	err = ndfc_chip_init(ndfc, ofdev->dev.of_node);
-	if (err) {
-		iounmap(ndfc->ndfcbase);
-		return err;
-	}
-
-	return 0;
+	return ndfc_chip_init(ndfc, ofdev->dev.of_node);
 }
 
 static void ndfc_remove(struct platform_device *ofdev)
-- 
2.53.0





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree
  2026-11-07 11:14 FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree Sasha Levin
@ 2026-11-07 20:41 ` Rosen Penev
  2026-11-09  0:34   ` Sasha Levin
  2026-11-10  3:58 ` [PATCH 5.10.y 1/2] mtd: rawnand: ndfc: fix gcc uninitialized var Sasha Levin
  1 sibling, 1 reply; 5+ messages in thread
From: Rosen Penev @ 2026-11-07 20:41 UTC (permalink / raw)
  To: Sasha Levin; +Cc: miquel.raynal, stable

On Sat, Nov 7, 2026 at 3:14 AM Sasha Levin <sashal@kernel.org> wrote:
>
> The patch below does not apply to the 5.10-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@vger.kernel.org>.
>
> To reproduce the conflict and resubmit, you may use the following commands:
>
> git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
> git checkout FETCH_HEAD
> git cherry-pick -x 0d66f9895f286d2fab396a71e6efeb95c4a7e5a6
Requires cceca8cb776b03e83985578f84bd730c30d57f70 as a prerequisite. I
guess I messed up and didn't add a Fixes: tag to it.
> # <resolve conflicts, build, test, etc.>
> git commit -s
> git send-email --to '<stable@vger.kernel.org>' --in-reply-to '20261107061443-failed-5.10-0d66f9895f28@kernel.org' --subject-prefix 'PATCH 5.10.y' 'HEAD^..'
>
> Thanks,
> Sasha
>
> ------------------ original commit in Linus's tree ------------------
>
> From 0d66f9895f286d2fab396a71e6efeb95c4a7e5a6 Mon Sep 17 00:00:00 2001
> From: Rosen Penev <rosenp@gmail.com>
> Date: Mon, 24 Aug 2026 13:21:20 -0700
> Subject: [PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()
>
> Replace the open-coded of_iomap()/iounmap() with the managed
> devm_platform_ioremap_resource() helper. This fixes a mapping leak on
> driver remove (the old code never called iounmap()) and simplifies the
> error path by dropping the manual cleanup in ndfc_probe().
>
> There is no overlapping memory-region concern introduced by this
> change: each supported board DT describes a single ndfc node with a
> unique 0x2000 register region, and the EBC parent uses dcr-reg rather
> than a MEM reg resource, so the newly added request_mem_region() cannot
> conflict with an existing reservation. Distinct chip selects map to
> distinct 64-bit physical addresses, so CS instances do not overlap.
>
> Fixes: a808ad3b0d28 ("[MTD] [NAND] ndfc driver")
> Cc: stable@vger.kernel.org
> Assisted-by: opencode:hy3-free
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
> ---
>  drivers/mtd/nand/raw/ndfc.c | 21 ++++++++-------------
>  1 file changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/ndfc.c b/drivers/mtd/nand/raw/ndfc.c
> index a48274297d3b1..d6db04d48c45a 100644
> --- a/drivers/mtd/nand/raw/ndfc.c
> +++ b/drivers/mtd/nand/raw/ndfc.c
> @@ -185,10 +185,15 @@ static int ndfc_chip_init(struct ndfc_controller *ndfc,
>  static int ndfc_probe(struct platform_device *ofdev)
>  {
>         struct ndfc_controller *ndfc;
> +       void __iomem *ndfcbase;
>         const __be32 *reg;
>         u32 ccr;
>         u32 cs;
> -       int err, len = 0;
> +       int len = 0;
> +
> +       ndfcbase = devm_platform_ioremap_resource(ofdev, 0);
> +       if (IS_ERR(ndfcbase))
> +               return PTR_ERR(ndfcbase);
>
>         /* Read the reg property to get the chip select */
>         reg = of_get_property(ofdev->dev.of_node, "reg", &len);
> @@ -210,11 +215,7 @@ static int ndfc_probe(struct platform_device *ofdev)
>         ndfc->ofdev = ofdev;
>         dev_set_drvdata(&ofdev->dev, ndfc);
>
> -       ndfc->ndfcbase = of_iomap(ofdev->dev.of_node, 0);
> -       if (!ndfc->ndfcbase) {
> -               dev_err(&ofdev->dev, "failed to get memory\n");
> -               return -EIO;
> -       }
> +       ndfc->ndfcbase = ndfcbase;
>
>         ccr = NDFC_CCR_BS(ndfc->chip_select);
>
> @@ -232,13 +233,7 @@ static int ndfc_probe(struct platform_device *ofdev)
>                 iowrite32be(be32_to_cpup(reg), ndfc->ndfcbase + offset);
>         }
>
> -       err = ndfc_chip_init(ndfc, ofdev->dev.of_node);
> -       if (err) {
> -               iounmap(ndfc->ndfcbase);
> -               return err;
> -       }
> -
> -       return 0;
> +       return ndfc_chip_init(ndfc, ofdev->dev.of_node);
>  }
>
>  static void ndfc_remove(struct platform_device *ofdev)
> --
> 2.53.0
>
>
>
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree
  2026-11-07 20:41 ` Rosen Penev
@ 2026-11-09  0:34   ` Sasha Levin
  0 siblings, 0 replies; 5+ messages in thread
From: Sasha Levin @ 2026-11-09  0:34 UTC (permalink / raw)
  To: Rosen Penev; +Cc: Sasha Levin, miquel.raynal, stable

> Requires cceca8cb776b03e83985578f84bd730c30d57f70 as a prerequisite. I
> guess I messed up and didn't add a Fixes: tag to it.

Thanks. Queued for 6.18, 6.12, 6.6, 6.1 and 5.15, together with cceca8cb776b
("mtd: rawnand: ndfc: fix gcc uninitialized var") and 4f2692a5383e ("mtd:
rawnand: ndfc: use ioread32be/iowrite32be and allow COMPILE_TEST"), which
0d66f9895f28 ("mtd: rawnand: ndfc: use devm_platform_ioremap_resource()") needs
for context, and 97f9e509d839 ("mtd: rawnand: ndfc: add CONFIG_OF dependency")
on top of 4f2692a5383e.

5.10 is different: 4f2692a5383e conflicts in the Kconfig there, since 5.10 has
no `select MTD_NAND_ECC_SW_HAMMING`. A 5.10.y backport is welcome.

-- 
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 5.10.y 1/2] mtd: rawnand: ndfc: fix gcc uninitialized var
  2026-11-07 11:14 FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree Sasha Levin
  2026-11-07 20:41 ` Rosen Penev
@ 2026-11-10  3:58 ` Sasha Levin
  2026-11-10  3:58   ` [PATCH 5.10.y 2/2] mtd: rawnand: ndfc: use devm_platform_ioremap_resource() Sasha Levin
  1 sibling, 1 reply; 5+ messages in thread
From: Sasha Levin @ 2026-11-10  3:58 UTC (permalink / raw)
  To: stable; +Cc: Rosen Penev, kernel test robot, Miquel Raynal, Sasha Levin

From: Rosen Penev <rosenp@gmail.com>

[ Upstream commit cceca8cb776b03e83985578f84bd730c30d57f70 ]

Now that this can be built with COMPILE_TEST, an unassigned variable was
found. Set to 0 to fix the W=1 error under GCC.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202606141301.iyVdFgl7-lkp@intel.com/
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Stable-dep-of: 0d66f9895f28 ("mtd: rawnand: ndfc: use devm_platform_ioremap_resource()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/ndfc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/raw/ndfc.c b/drivers/mtd/nand/raw/ndfc.c
index 0fb4ba93c41e0..b9223cdaa8e34 100644
--- a/drivers/mtd/nand/raw/ndfc.c
+++ b/drivers/mtd/nand/raw/ndfc.c
@@ -188,7 +188,7 @@ static int ndfc_probe(struct platform_device *ofdev)
 	const __be32 *reg;
 	u32 ccr;
 	u32 cs;
-	int err, len;
+	int err, len = 0;
 
 	/* Read the reg property to get the chip select */
 	reg = of_get_property(ofdev->dev.of_node, "reg", &len);
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 5.10.y 2/2] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()
  2026-11-10  3:58 ` [PATCH 5.10.y 1/2] mtd: rawnand: ndfc: fix gcc uninitialized var Sasha Levin
@ 2026-11-10  3:58   ` Sasha Levin
  0 siblings, 0 replies; 5+ messages in thread
From: Sasha Levin @ 2026-11-10  3:58 UTC (permalink / raw)
  To: stable; +Cc: Rosen Penev, Miquel Raynal, Sasha Levin

From: Rosen Penev <rosenp@gmail.com>

[ Upstream commit 0d66f9895f286d2fab396a71e6efeb95c4a7e5a6 ]

Replace the open-coded of_iomap()/iounmap() with the managed
devm_platform_ioremap_resource() helper. This fixes a mapping leak on
driver remove (the old code never called iounmap()) and simplifies the
error path by dropping the manual cleanup in ndfc_probe().

There is no overlapping memory-region concern introduced by this
change: each supported board DT describes a single ndfc node with a
unique 0x2000 register region, and the EBC parent uses dcr-reg rather
than a MEM reg resource, so the newly added request_mem_region() cannot
conflict with an existing reservation. Distinct chip selects map to
distinct 64-bit physical addresses, so CS instances do not overlap.

Fixes: a808ad3b0d28 ("[MTD] [NAND] ndfc driver")
Cc: stable@vger.kernel.org
Assisted-by: opencode:hy3-free
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/mtd/nand/raw/ndfc.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/mtd/nand/raw/ndfc.c b/drivers/mtd/nand/raw/ndfc.c
index b9223cdaa8e34..97a2e36d812ac 100644
--- a/drivers/mtd/nand/raw/ndfc.c
+++ b/drivers/mtd/nand/raw/ndfc.c
@@ -185,10 +185,15 @@ static int ndfc_chip_init(struct ndfc_controller *ndfc,
 static int ndfc_probe(struct platform_device *ofdev)
 {
 	struct ndfc_controller *ndfc;
+	void __iomem *ndfcbase;
 	const __be32 *reg;
 	u32 ccr;
 	u32 cs;
-	int err, len = 0;
+	int len = 0;
+
+	ndfcbase = devm_platform_ioremap_resource(ofdev, 0);
+	if (IS_ERR(ndfcbase))
+		return PTR_ERR(ndfcbase);
 
 	/* Read the reg property to get the chip select */
 	reg = of_get_property(ofdev->dev.of_node, "reg", &len);
@@ -210,11 +215,7 @@ static int ndfc_probe(struct platform_device *ofdev)
 	ndfc->ofdev = ofdev;
 	dev_set_drvdata(&ofdev->dev, ndfc);
 
-	ndfc->ndfcbase = of_iomap(ofdev->dev.of_node, 0);
-	if (!ndfc->ndfcbase) {
-		dev_err(&ofdev->dev, "failed to get memory\n");
-		return -EIO;
-	}
+	ndfc->ndfcbase = ndfcbase;
 
 	ccr = NDFC_CCR_BS(ndfc->chip_select);
 
@@ -232,13 +233,7 @@ static int ndfc_probe(struct platform_device *ofdev)
 		out_be32(ndfc->ndfcbase + offset, be32_to_cpup(reg));
 	}
 
-	err = ndfc_chip_init(ndfc, ofdev->dev.of_node);
-	if (err) {
-		iounmap(ndfc->ndfcbase);
-		return err;
-	}
-
-	return 0;
+	return ndfc_chip_init(ndfc, ofdev->dev.of_node);
 }
 
 static int ndfc_remove(struct platform_device *ofdev)
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-11-10  3:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-07 11:14 FAILED: patch "[PATCH] mtd: rawnand: ndfc: use devm_platform_ioremap_resource()" failed to apply to 5.10-stable tree Sasha Levin
2026-11-07 20:41 ` Rosen Penev
2026-11-09  0:34   ` Sasha Levin
2026-11-10  3:58 ` [PATCH 5.10.y 1/2] mtd: rawnand: ndfc: fix gcc uninitialized var Sasha Levin
2026-11-10  3:58   ` [PATCH 5.10.y 2/2] mtd: rawnand: ndfc: use devm_platform_ioremap_resource() Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox