From d6086c17ab968cdca03cb1f9e1f11428d2be7080 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 23 Jun 2019 16:50:02 +0200 Subject: [PATCH] drop mmc patch that breaks 4.4 and 4.9 builds --- ...sdio-irqs-when-the-card-is-suspended.patch | 77 ------------------- queue-4.4/series | 1 - ...sdio-irqs-when-the-card-is-suspended.patch | 77 ------------------- queue-4.9/series | 1 - 4 files changed, 156 deletions(-) delete mode 100644 queue-4.4/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch delete mode 100644 queue-4.9/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch diff --git a/queue-4.4/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch b/queue-4.4/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch deleted file mode 100644 index 1475a075cd4..00000000000 --- a/queue-4.4/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 83293386bc95cf5e9f0c0175794455835bd1cb4a Mon Sep 17 00:00:00 2001 -From: Ulf Hansson -Date: Tue, 18 Jun 2019 14:05:17 +0200 -Subject: mmc: core: Prevent processing SDIO IRQs when the card is suspended - -From: Ulf Hansson - -commit 83293386bc95cf5e9f0c0175794455835bd1cb4a upstream. - -Processing of SDIO IRQs must obviously be prevented while the card is -system suspended, otherwise we may end up trying to communicate with an -uninitialized SDIO card. - -Reports throughout the years shows that this is not only a theoretical -problem, but a real issue. So, let's finally fix this problem, by keeping -track of the state for the card and bail out before processing the SDIO -IRQ, in case the card is suspended. - -Cc: stable@vger.kernel.org -Reported-by: Douglas Anderson -Tested-by: Douglas Anderson -Signed-off-by: Ulf Hansson -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/mmc/core/sdio.c | 13 ++++++++++++- - drivers/mmc/core/sdio_irq.c | 4 ++++ - 2 files changed, 16 insertions(+), 1 deletion(-) - ---- a/drivers/mmc/core/sdio.c -+++ b/drivers/mmc/core/sdio.c -@@ -897,6 +897,10 @@ static int mmc_sdio_pre_suspend(struct m - */ - static int mmc_sdio_suspend(struct mmc_host *host) - { -+ /* Prevent processing of SDIO IRQs in suspended state. */ -+ mmc_card_set_suspended(host->card); -+ cancel_delayed_work_sync(&host->sdio_irq_work); -+ - mmc_claim_host(host); - - if (mmc_card_keep_power(host) && mmc_card_wake_sdio_irq(host)) -@@ -955,13 +959,20 @@ static int mmc_sdio_resume(struct mmc_ho - err = sdio_enable_4bit_bus(host->card); - } - -- if (!err && host->sdio_irqs) { -+ if (err) -+ goto out; -+ -+ /* Allow SDIO IRQs to be processed again. */ -+ mmc_card_clr_suspended(host->card); -+ -+ if (host->sdio_irqs) { - if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) - wake_up_process(host->sdio_irq_thread); - else if (host->caps & MMC_CAP_SDIO_IRQ) - host->ops->enable_sdio_irq(host, 1); - } - -+out: - mmc_release_host(host); - - host->pm_flags &= ~MMC_PM_KEEP_POWER; ---- a/drivers/mmc/core/sdio_irq.c -+++ b/drivers/mmc/core/sdio_irq.c -@@ -35,6 +35,10 @@ static int process_sdio_pending_irqs(str - unsigned char pending; - struct sdio_func *func; - -+ /* Don't process SDIO IRQs if the card is suspended. */ -+ if (mmc_card_suspended(card)) -+ return 0; -+ - /* - * Optimization, if there is only 1 function interrupt registered - * and we know an IRQ was signaled then call irq handler directly. diff --git a/queue-4.4/series b/queue-4.4/series index d0950814478..806c840575c 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -1,4 +1,3 @@ tracing-silence-gcc-9-array-bounds-warning.patch gcc-9-silence-address-of-packed-member-warning.patch -mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch usb-chipidea-udc-workaround-for-endpoint-conflict-issue.patch diff --git a/queue-4.9/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch b/queue-4.9/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch deleted file mode 100644 index 9e792484caf..00000000000 --- a/queue-4.9/mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 83293386bc95cf5e9f0c0175794455835bd1cb4a Mon Sep 17 00:00:00 2001 -From: Ulf Hansson -Date: Tue, 18 Jun 2019 14:05:17 +0200 -Subject: mmc: core: Prevent processing SDIO IRQs when the card is suspended - -From: Ulf Hansson - -commit 83293386bc95cf5e9f0c0175794455835bd1cb4a upstream. - -Processing of SDIO IRQs must obviously be prevented while the card is -system suspended, otherwise we may end up trying to communicate with an -uninitialized SDIO card. - -Reports throughout the years shows that this is not only a theoretical -problem, but a real issue. So, let's finally fix this problem, by keeping -track of the state for the card and bail out before processing the SDIO -IRQ, in case the card is suspended. - -Cc: stable@vger.kernel.org -Reported-by: Douglas Anderson -Tested-by: Douglas Anderson -Signed-off-by: Ulf Hansson -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/mmc/core/sdio.c | 13 ++++++++++++- - drivers/mmc/core/sdio_irq.c | 4 ++++ - 2 files changed, 16 insertions(+), 1 deletion(-) - ---- a/drivers/mmc/core/sdio.c -+++ b/drivers/mmc/core/sdio.c -@@ -895,6 +895,10 @@ static int mmc_sdio_pre_suspend(struct m - */ - static int mmc_sdio_suspend(struct mmc_host *host) - { -+ /* Prevent processing of SDIO IRQs in suspended state. */ -+ mmc_card_set_suspended(host->card); -+ cancel_delayed_work_sync(&host->sdio_irq_work); -+ - mmc_claim_host(host); - - if (mmc_card_keep_power(host) && mmc_card_wake_sdio_irq(host)) -@@ -953,13 +957,20 @@ static int mmc_sdio_resume(struct mmc_ho - err = sdio_enable_4bit_bus(host->card); - } - -- if (!err && host->sdio_irqs) { -+ if (err) -+ goto out; -+ -+ /* Allow SDIO IRQs to be processed again. */ -+ mmc_card_clr_suspended(host->card); -+ -+ if (host->sdio_irqs) { - if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD)) - wake_up_process(host->sdio_irq_thread); - else if (host->caps & MMC_CAP_SDIO_IRQ) - host->ops->enable_sdio_irq(host, 1); - } - -+out: - mmc_release_host(host); - - host->pm_flags &= ~MMC_PM_KEEP_POWER; ---- a/drivers/mmc/core/sdio_irq.c -+++ b/drivers/mmc/core/sdio_irq.c -@@ -35,6 +35,10 @@ static int process_sdio_pending_irqs(str - unsigned char pending; - struct sdio_func *func; - -+ /* Don't process SDIO IRQs if the card is suspended. */ -+ if (mmc_card_suspended(card)) -+ return 0; -+ - /* - * Optimization, if there is only 1 function interrupt registered - * and we know an IRQ was signaled then call irq handler directly. diff --git a/queue-4.9/series b/queue-4.9/series index 3b4b4666015..994f413becf 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -1,5 +1,4 @@ tracing-silence-gcc-9-array-bounds-warning.patch gcc-9-silence-address-of-packed-member-warning.patch -mmc-core-prevent-processing-sdio-irqs-when-the-card-is-suspended.patch scsi-ufs-avoid-runtime-suspend-possibly-being-blocked-forever.patch usb-chipidea-udc-workaround-for-endpoint-conflict-issue.patch -- 2.47.3