Patch "mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mtd-rawnand-fix-nand_choose_best_timings-on-unsuppor.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 18ebdf4af3a945217a0e5a84b07a1dadc378f4b5
Author: Herve Codina <herve.codina@xxxxxxxxxxx>
Date:   Fri Nov 19 16:03:14 2021 +0100

    mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface
    
    [ Upstream commit 36a65982a98c4bc72fdcfef2c4aaf90193746631 ]
    
    When the NV-DDR interface is not supported by the NAND chip,
    the value of onfi->nvddr_timing_modes is 0. In this case,
    the best_mode variable value in nand_choose_best_nvddr_timings()
    is -1. The last for-loop is skipped and the function returns an
    uninitialized value.
    If this returned value is 0, the nand_choose_best_sdr_timings()
    is not executed and no 'best timing' are set. This leads the host
    controller and the NAND chip working at default mode 0 timing
    even if a better timing can be used.
    
    Fix this uninitialized returned value.
    
    nand_choose_best_sdr_timings() is pretty similar to
    nand_choose_best_nvddr_timings(). Even if onfi->sdr_timing_modes
    should never be seen as 0, nand_choose_best_sdr_timings() returned
    value is fixed.
    
    Fixes: a9ecc8c814e9 ("mtd: rawnand: Choose the best timings, NV-DDR included")
    Signed-off-by: Herve Codina <herve.codina@xxxxxxxxxxx>
    Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx>
    Link: https://lore.kernel.org/linux-mtd/20211119150316.43080-3-herve.codina@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index 5c6b065837eff..a130320de4128 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -926,7 +926,7 @@ int nand_choose_best_sdr_timings(struct nand_chip *chip,
 				 struct nand_sdr_timings *spec_timings)
 {
 	const struct nand_controller_ops *ops = chip->controller->ops;
-	int best_mode = 0, mode, ret;
+	int best_mode = 0, mode, ret = -EOPNOTSUPP;
 
 	iface->type = NAND_SDR_IFACE;
 
@@ -977,7 +977,7 @@ int nand_choose_best_nvddr_timings(struct nand_chip *chip,
 				   struct nand_nvddr_timings *spec_timings)
 {
 	const struct nand_controller_ops *ops = chip->controller->ops;
-	int best_mode = 0, mode, ret;
+	int best_mode = 0, mode, ret = -EOPNOTSUPP;
 
 	iface->type = NAND_NVDDR_IFACE;
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux