mtd: rawnand: qcom: Return actual error code instead of -ENODEV
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tue, 2 Mar 2021 13:27:57 +0000 (18:57 +0530)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 11 Mar 2021 08:37:30 +0000 (09:37 +0100)
In qcom_probe_nand_devices() function, the error code returned by
qcom_nand_host_init_and_register() is converted to -ENODEV in the case
of failure. This poses issue if -EPROBE_DEFER is returned when the
dependency is not available for a component like parser.

So let's restructure the error handling logic a bit and return the
actual error code in case of qcom_nand_host_init_and_register() failure.

Fixes: c76b78d8ec05 ("mtd: nand: Qualcomm NAND controller driver")
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/qcom_nandc.c

index 34d31c7c2dcfcc3116899c9e697fe008518c8225..b9194680cd3ce438faf89a611022abfa3bba0c89 100644 (file)
@@ -2959,7 +2959,7 @@ static int qcom_probe_nand_devices(struct qcom_nand_controller *nandc)
        struct device *dev = nandc->dev;
        struct device_node *dn = dev->of_node, *child;
        struct qcom_nand_host *host;
-       int ret;
+       int ret = -ENODEV;
 
        for_each_available_child_of_node(dn, child) {
                host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
@@ -2977,10 +2977,7 @@ static int qcom_probe_nand_devices(struct qcom_nand_controller *nandc)
                list_add_tail(&host->node, &nandc->host_list);
        }
 
-       if (list_empty(&nandc->host_list))
-               return -ENODEV;
-
-       return 0;
+       return ret;
 }
 
 /* parse custom DT properties here */