From bd7f7356b2af64cf003415a153438a341935f120 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 20 Jul 2020 13:23:28 +0200 Subject: [PATCH] 4.14-stable patches added patches: mtd-rawnand-brcmnand-fix-cs0-layout.patch mtd-rawnand-oxnas-keep-track-of-registered-devices.patch mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch mtd-rawnand-oxnas-unregister-all-devices-on-error.patch --- .../mtd-rawnand-brcmnand-fix-cs0-layout.patch | 40 +++++++++++++ ...nas-keep-track-of-registered-devices.patch | 58 +++++++++++++++++++ ...ease-all-devices-in-the-_remove-path.patch | 39 +++++++++++++ ...xnas-unregister-all-devices-on-error.patch | 48 +++++++++++++++ queue-4.14/series | 4 ++ 5 files changed, 189 insertions(+) create mode 100644 queue-4.14/mtd-rawnand-brcmnand-fix-cs0-layout.patch create mode 100644 queue-4.14/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch create mode 100644 queue-4.14/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch create mode 100644 queue-4.14/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch diff --git a/queue-4.14/mtd-rawnand-brcmnand-fix-cs0-layout.patch b/queue-4.14/mtd-rawnand-brcmnand-fix-cs0-layout.patch new file mode 100644 index 00000000000..d098de1a14d --- /dev/null +++ b/queue-4.14/mtd-rawnand-brcmnand-fix-cs0-layout.patch @@ -0,0 +1,40 @@ +From 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Fri, 22 May 2020 14:15:21 +0200 +Subject: mtd: rawnand: brcmnand: fix CS0 layout +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Álvaro Fernández Rojas + +commit 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b upstream. + +Only v3.3-v5.0 have a different CS0 layout. +Controllers before v3.3 use the same layout for every CS. + +Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") +Signed-off-by: Álvaro Fernández Rojas +Acked-by: Florian Fainelli +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200522121524.4161539-3-noltari@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/brcmnand/brcmnand.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/brcmnand/brcmnand.c ++++ b/drivers/mtd/nand/brcmnand/brcmnand.c +@@ -491,8 +491,9 @@ static int brcmnand_revision_init(struct + } else { + ctrl->cs_offsets = brcmnand_cs_offsets; + +- /* v5.0 and earlier has a different CS0 offset layout */ +- if (ctrl->nand_version <= 0x0500) ++ /* v3.3-5.0 have a different CS0 offset layout */ ++ if (ctrl->nand_version >= 0x0303 && ++ ctrl->nand_version <= 0x0500) + ctrl->cs0_offsets = brcmnand_cs_offsets_cs0; + } + diff --git a/queue-4.14/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch b/queue-4.14/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch new file mode 100644 index 00000000000..8d07793d943 --- /dev/null +++ b/queue-4.14/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch @@ -0,0 +1,58 @@ +From 383fc3f613e7eac9f2e3c13b6f9fb8c1f39cb9d5 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:08 +0200 +Subject: mtd: rawnand: oxnas: Keep track of registered devices + +From: Miquel Raynal + +commit 383fc3f613e7eac9f2e3c13b6f9fb8c1f39cb9d5 upstream. + +All initialized and registered devices should be listed somewhere so +that we can unregister/free them in the _remove() path. + +This patch is not a fix per-se but is needed to apply three other +fixes coming right after, explaining the Fixes/Cc: stable tags. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-36-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/oxnas_nand.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/mtd/nand/oxnas_nand.c ++++ b/drivers/mtd/nand/oxnas_nand.c +@@ -36,6 +36,7 @@ struct oxnas_nand_ctrl { + void __iomem *io_base; + struct clk *clk; + struct nand_chip *chips[OXNAS_NAND_MAX_CHIPS]; ++ unsigned int nchips; + }; + + static uint8_t oxnas_nand_read_byte(struct mtd_info *mtd) +@@ -86,7 +87,6 @@ static int oxnas_nand_probe(struct platf + struct nand_chip *chip; + struct mtd_info *mtd; + struct resource *res; +- int nchips = 0; + int count = 0; + int err = 0; + +@@ -150,12 +150,12 @@ static int oxnas_nand_probe(struct platf + if (err) + goto err_cleanup_nand; + +- oxnas->chips[nchips] = chip; +- ++nchips; ++ oxnas->chips[oxnas->nchips] = chip; ++ ++oxnas->nchips; + } + + /* Exit if no chips found */ +- if (!nchips) { ++ if (!oxnas->nchips) { + err = -ENODEV; + goto err_clk_unprepare; + } diff --git a/queue-4.14/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch b/queue-4.14/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch new file mode 100644 index 00000000000..d2bfb1c2cc2 --- /dev/null +++ b/queue-4.14/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch @@ -0,0 +1,39 @@ +From 0a5f45e57e35d0840bedb816974ce2e63406cd8b Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:11 +0200 +Subject: mtd: rawnand: oxnas: Release all devices in the _remove() path + +From: Miquel Raynal + +commit 0a5f45e57e35d0840bedb816974ce2e63406cd8b upstream. + +oxnans_nand_remove() should release all MTD devices and clean all NAND +devices, not only the first one registered. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-39-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/oxnas_nand.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/oxnas_nand.c ++++ b/drivers/mtd/nand/oxnas_nand.c +@@ -184,9 +184,13 @@ err_clk_unprepare: + static int oxnas_nand_remove(struct platform_device *pdev) + { + struct oxnas_nand_ctrl *oxnas = platform_get_drvdata(pdev); ++ struct nand_chip *chip; ++ int i; + +- if (oxnas->chips[0]) +- nand_release(oxnas->chips[0]); ++ for (i = 0; i < oxnas->nchips; i++) { ++ chip = oxnas->chips[i]; ++ nand_release(chip); ++ } + + clk_disable_unprepare(oxnas->clk); + diff --git a/queue-4.14/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch b/queue-4.14/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch new file mode 100644 index 00000000000..532a50e8a92 --- /dev/null +++ b/queue-4.14/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch @@ -0,0 +1,48 @@ +From b60391eb17b2956ff2fc4c348e5a464da21ff9cb Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:10 +0200 +Subject: mtd: rawnand: oxnas: Unregister all devices on error + +From: Miquel Raynal + +commit b60391eb17b2956ff2fc4c348e5a464da21ff9cb upstream. + +On error, the oxnas probe path just frees the device which failed and +aborts the probe, leaving unreleased resources. + +Fix this situation by calling mtd_device_unregister()/nand_cleanup() +on these. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-38-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/oxnas_nand.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/mtd/nand/oxnas_nand.c ++++ b/drivers/mtd/nand/oxnas_nand.c +@@ -89,6 +89,7 @@ static int oxnas_nand_probe(struct platf + struct resource *res; + int count = 0; + int err = 0; ++ int i; + + /* Allocate memory for the device structure (and zero it) */ + oxnas = devm_kzalloc(&pdev->dev, sizeof(*oxnas), +@@ -168,6 +169,13 @@ err_cleanup_nand: + nand_cleanup(chip); + err_release_child: + of_node_put(nand_np); ++ ++ for (i = 0; i < oxnas->nchips; i++) { ++ chip = oxnas->chips[i]; ++ WARN_ON(mtd_device_unregister(nand_to_mtd(chip))); ++ nand_cleanup(chip); ++ } ++ + err_clk_unprepare: + clk_disable_unprepare(oxnas->clk); + return err; diff --git a/queue-4.14/series b/queue-4.14/series index 9a1dd2c4377..4c258fcc0dc 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -88,3 +88,7 @@ revert-thermal-mediatek-fix-register-index-error.patch arm-dts-socfpga-align-l2-cache-controller-nodename-w.patch copy_xstate_to_kernel-fix-typo-which-caused-gdb-regression.patch perf-stat-zero-all-the-ena-and-run-array-slot-stats-for-interval-mode.patch +mtd-rawnand-brcmnand-fix-cs0-layout.patch +mtd-rawnand-oxnas-keep-track-of-registered-devices.patch +mtd-rawnand-oxnas-unregister-all-devices-on-error.patch +mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch -- 2.47.3