From: Sasha Levin Date: Sun, 11 Oct 2020 21:31:39 +0000 (-0400) Subject: Fixes for 4.4 X-Git-Tag: v4.4.239~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2cf17faa16fa65cae735db2227b07febc0d79576;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.4 Signed-off-by: Sasha Levin --- diff --git a/queue-4.4/mtd-nand-provide-nand_cleanup-function-to-free-nand-.patch b/queue-4.4/mtd-nand-provide-nand_cleanup-function-to-free-nand-.patch new file mode 100644 index 00000000000..5550e06a18c --- /dev/null +++ b/queue-4.4/mtd-nand-provide-nand_cleanup-function-to-free-nand-.patch @@ -0,0 +1,95 @@ +From e5ff569730ff0bb3007c1f24247d48b15695c88c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 21 Sep 2016 11:44:41 +0200 +Subject: mtd: nand: Provide nand_cleanup() function to free NAND related + resources + +From: Richard Weinberger + +[ Upstream commit d44154f969a44269a9288c274c1c2fd9e85df8a5 ] + +Provide a nand_cleanup() function to free all nand related resources +without unregistering the mtd device. +This should allow drivers to call mtd_device_unregister() and handle +its return value and still being able to cleanup all nand related +resources. + +Signed-off-by: Richard Weinberger +Signed-off-by: Daniel Walter +Signed-off-by: Boris Brezillon +Signed-off-by: Sasha Levin +--- + drivers/mtd/nand/nand_base.c | 22 +++++++++++++++------- + include/linux/mtd/nand.h | 6 +++++- + 2 files changed, 20 insertions(+), 8 deletions(-) + +diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c +index 8406f346b0be5..09864226428b2 100644 +--- a/drivers/mtd/nand/nand_base.c ++++ b/drivers/mtd/nand/nand_base.c +@@ -4427,18 +4427,14 @@ int nand_scan(struct mtd_info *mtd, int maxchips) + EXPORT_SYMBOL(nand_scan); + + /** +- * nand_release - [NAND Interface] Free resources held by the NAND device +- * @mtd: MTD device structure ++ * nand_cleanup - [NAND Interface] Free resources held by the NAND device ++ * @chip: NAND chip object + */ +-void nand_release(struct mtd_info *mtd) ++void nand_cleanup(struct nand_chip *chip) + { +- struct nand_chip *chip = mtd->priv; +- + if (chip->ecc.mode == NAND_ECC_SOFT_BCH) + nand_bch_free((struct nand_bch_control *)chip->ecc.priv); + +- mtd_device_unregister(mtd); +- + /* Free bad block table memory */ + kfree(chip->bbt); + if (!(chip->options & NAND_OWN_BUFFERS)) +@@ -4449,6 +4445,18 @@ void nand_release(struct mtd_info *mtd) + & NAND_BBT_DYNAMICSTRUCT) + kfree(chip->badblock_pattern); + } ++EXPORT_SYMBOL_GPL(nand_cleanup); ++ ++/** ++ * nand_release - [NAND Interface] Unregister the MTD device and free resources ++ * held by the NAND device ++ * @mtd: MTD device structure ++ */ ++void nand_release(struct mtd_info *mtd) ++{ ++ mtd_device_unregister(mtd); ++ nand_cleanup(mtd->priv); ++} + EXPORT_SYMBOL_GPL(nand_release); + + static int __init nand_base_init(void) +diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h +index 93fc372007937..1a066faf7b801 100644 +--- a/include/linux/mtd/nand.h ++++ b/include/linux/mtd/nand.h +@@ -38,7 +38,7 @@ extern int nand_scan_ident(struct mtd_info *mtd, int max_chips, + struct nand_flash_dev *table); + extern int nand_scan_tail(struct mtd_info *mtd); + +-/* Free resources held by the NAND device */ ++/* Unregister the MTD device and free resources held by the NAND device */ + extern void nand_release(struct mtd_info *mtd); + + /* Internal helper for board drivers which need to override command function */ +@@ -1029,4 +1029,8 @@ int nand_check_erased_ecc_chunk(void *data, int datalen, + void *ecc, int ecclen, + void *extraoob, int extraooblen, + int threshold); ++ ++/* Free resources held by the NAND device */ ++void nand_cleanup(struct nand_chip *chip); ++ + #endif /* __LINUX_MTD_NAND_H */ +-- +2.25.1 + diff --git a/queue-4.4/series b/queue-4.4/series index a4b2940d538..4e8747fdd9d 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -27,3 +27,4 @@ perf-top-fix-stdio-interface-input-handling-with-glibc-2.28.patch sctp-fix-sctp_auth_init_hmacs-error-path.patch team-set-dev-needed_headroom-in-team_setup_by_port.patch net-team-fix-memory-leak-in-__team_options_register.patch +mtd-nand-provide-nand_cleanup-function-to-free-nand-.patch