FAILED: patch "[PATCH] mmc: mmc_spi: fix error handling in mmc_spi_probe()" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-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 <[email protected]>.
Possible dependencies:
cf4c9d2ac1e4 ("mmc: mmc_spi: fix error handling in mmc_spi_probe()") 1ae51603528c ("mmc: mmc_spi: Indentation fixes") 5716fb9bd9c6 ("mmc: spi: Convert to use GPIO descriptors")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From cf4c9d2ac1e42c7d18b921bec39486896645b714 Mon Sep 17 00:00:00 2001
From: Yang Yingliang <[email protected]>
Date: Tue, 31 Jan 2023 09:38:35 +0800
Subject: [PATCH] mmc: mmc_spi: fix error handling in mmc_spi_probe()
If mmc_add_host() fails, it doesn't need to call mmc_remove_host(), or it will cause null-ptr-deref, because of deleting a not added device in mmc_remove_host().
To fix this, goto label 'fail_glue_init', if mmc_add_host() fails, and change the label 'fail_add_host' to 'fail_gpiod_request'.
drivers/mmc/host/mmc_spi.c +4 -4
@@ -1437,7 +1437,7 @@ static int mmc_spi_probe(struct spi_device *spi) status =mmc_add_host (mmc);if (status !=0 ) - goto fail_add_host; + goto fail_glue_init;/* * Index 0 is card detect
@@ -1445,7 +1445,7 @@ static int mmc_spi_probe(struct spi_device *spi)*/ status =mmc_gpiod_request_cd (mmc,NULL ,0 , false,1000 );if (status == -EPROBE_DEFER ) - goto fail_add_host; + goto fail_gpiod_request;if (!status) {/* * The platform has a CD GPIO signal that may support
@@ -1460,7 +1460,7 @@ static int mmc_spi_probe(struct spi_device *spi)/* Index 1 is write protect/read only */ status =mmc_gpiod_request_ro (mmc,NULL ,1 ,0 );if (status == -EPROBE_DEFER ) - goto fail_add_host; + goto fail_gpiod_request;if (!status) has_ro = true;
@@ -1474,7 +1474,7 @@ static int mmc_spi_probe(struct spi_device *spi) ? ", cd polling" : "");return 0 ; -fail_add_host: +fail_gpiod_request:mmc_remove_host (mmc); fail_glue_init:mmc_spi_dma_free (host);