]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Mar 2021 13:44:29 +0000 (14:44 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Mar 2021 13:44:29 +0000 (14:44 +0100)
added patches:
alsa-hda-avoid-spurious-unsol-event-handling-during-s3-s4.patch
alsa-hda-drop-the-batch-workaround-for-amd-controllers.patch
alsa-hda-hdmi-cancel-pending-works-before-suspend.patch
alsa-usb-add-plantronics-c320-m-usb-ctrl-msg-delay-quirk.patch
alsa-usb-audio-apply-the-control-quirk-to-plantronics-headsets.patch
alsa-usb-audio-fix-cannot-get-freq-eq-errors-on-dell-ae515-sound-bar.patch
mmc-core-fix-partition-switch-time-for-emmc.patch
mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch
revert-95ebabde382c-capabilities-don-t-allow-writing-ambiguous-v3-file-capabilities.patch
s390-dasd-fix-hanging-dasd-driver-unbind.patch
s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind.patch

12 files changed:
queue-4.19/alsa-hda-avoid-spurious-unsol-event-handling-during-s3-s4.patch [new file with mode: 0644]
queue-4.19/alsa-hda-drop-the-batch-workaround-for-amd-controllers.patch [new file with mode: 0644]
queue-4.19/alsa-hda-hdmi-cancel-pending-works-before-suspend.patch [new file with mode: 0644]
queue-4.19/alsa-usb-add-plantronics-c320-m-usb-ctrl-msg-delay-quirk.patch [new file with mode: 0644]
queue-4.19/alsa-usb-audio-apply-the-control-quirk-to-plantronics-headsets.patch [new file with mode: 0644]
queue-4.19/alsa-usb-audio-fix-cannot-get-freq-eq-errors-on-dell-ae515-sound-bar.patch [new file with mode: 0644]
queue-4.19/mmc-core-fix-partition-switch-time-for-emmc.patch [new file with mode: 0644]
queue-4.19/mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch [new file with mode: 0644]
queue-4.19/revert-95ebabde382c-capabilities-don-t-allow-writing-ambiguous-v3-file-capabilities.patch [new file with mode: 0644]
queue-4.19/s390-dasd-fix-hanging-dasd-driver-unbind.patch [new file with mode: 0644]
queue-4.19/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/alsa-hda-avoid-spurious-unsol-event-handling-during-s3-s4.patch b/queue-4.19/alsa-hda-avoid-spurious-unsol-event-handling-during-s3-s4.patch
new file mode 100644 (file)
index 0000000..41d9d9b
--- /dev/null
@@ -0,0 +1,44 @@
+From 5ff9dde42e8c72ed8102eb8cb62e03f9dc2103ab Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 10 Mar 2021 12:28:08 +0100
+Subject: ALSA: hda: Avoid spurious unsol event handling during S3/S4
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 5ff9dde42e8c72ed8102eb8cb62e03f9dc2103ab upstream.
+
+When HD-audio bus receives unsolicited events during its system
+suspend/resume (S3 and S4) phase, the controller driver may still try
+to process events although the codec chips are already (or yet)
+powered down.  This might screw up the codec communication, resulting
+in CORB/RIRB errors.  Such events should be rather skipped, as the
+codec chip status such as the jack status will be fully refreshed at
+the system resume time.
+
+Since we're tracking the system suspend/resume state in codec
+power.power_state field, let's add the check in the common unsol event
+handler entry point to filter out such events.
+
+BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1182377
+Tested-by: Abhishek Sahu <abhsahu@nvidia.com>
+Cc: <stable@vger.kernel.org> # 183ab39eb0ea: ALSA: hda: Initialize power_state
+Link: https://lore.kernel.org/r/20210310112809.9215-3-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/hda_bind.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/sound/pci/hda/hda_bind.c
++++ b/sound/pci/hda/hda_bind.c
+@@ -46,6 +46,10 @@ static void hda_codec_unsol_event(struct
+       if (codec->bus->shutdown)
+               return;
++      /* ignore unsol events during system suspend/resume */
++      if (codec->core.dev.power.power_state.event != PM_EVENT_ON)
++              return;
++
+       if (codec->patch_ops.unsol_event)
+               codec->patch_ops.unsol_event(codec, ev);
+ }
diff --git a/queue-4.19/alsa-hda-drop-the-batch-workaround-for-amd-controllers.patch b/queue-4.19/alsa-hda-drop-the-batch-workaround-for-amd-controllers.patch
new file mode 100644 (file)
index 0000000..be785f3
--- /dev/null
@@ -0,0 +1,46 @@
+From 28e96c1693ec1cdc963807611f8b5ad400431e82 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 8 Mar 2021 17:07:26 +0100
+Subject: ALSA: hda: Drop the BATCH workaround for AMD controllers
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 28e96c1693ec1cdc963807611f8b5ad400431e82 upstream.
+
+The commit c02f77d32d2c ("ALSA: hda - Workaround for crackled sound on
+AMD controller (1022:1457)") introduced a few workarounds for the
+recent AMD HD-audio controller, and one of them is the forced BATCH
+PCM mode so that PulseAudio avoids the timer-based scheduling.  This
+was thought to cover for some badly working applications, but this
+actually worsens for more others.  In total, this wasn't a good idea
+to enforce it.
+
+This is a partial revert of the commit above for dropping the PCM
+BATCH enforcement part to recover from the regression again.
+
+Fixes: c02f77d32d2c ("ALSA: hda - Workaround for crackled sound on AMD controller (1022:1457)")
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=195303
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20210308160726.22930-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/hda_controller.c |    7 -------
+ 1 file changed, 7 deletions(-)
+
+--- a/sound/pci/hda/hda_controller.c
++++ b/sound/pci/hda/hda_controller.c
+@@ -624,13 +624,6 @@ static int azx_pcm_open(struct snd_pcm_s
+                                    20,
+                                    178000000);
+-      /* by some reason, the playback stream stalls on PulseAudio with
+-       * tsched=1 when a capture stream triggers.  Until we figure out the
+-       * real cause, disable tsched mode by telling the PCM info flag.
+-       */
+-      if (chip->driver_caps & AZX_DCAPS_AMD_WORKAROUND)
+-              runtime->hw.info |= SNDRV_PCM_INFO_BATCH;
+-
+       if (chip->align_buffer_size)
+               /* constrain buffer sizes to be multiple of 128
+                  bytes. This is more efficient in terms of memory
diff --git a/queue-4.19/alsa-hda-hdmi-cancel-pending-works-before-suspend.patch b/queue-4.19/alsa-hda-hdmi-cancel-pending-works-before-suspend.patch
new file mode 100644 (file)
index 0000000..6b0fa43
--- /dev/null
@@ -0,0 +1,57 @@
+From eea46a0879bcca23e15071f9968c0f6e6596e470 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Wed, 10 Mar 2021 12:28:09 +0100
+Subject: ALSA: hda/hdmi: Cancel pending works before suspend
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit eea46a0879bcca23e15071f9968c0f6e6596e470 upstream.
+
+The per_pin->work might be still floating at the suspend, and this may
+hit the access to the hardware at an unexpected timing.  Cancel the
+work properly at the suspend callback for avoiding the buggy access.
+
+Note that the bug doesn't trigger easily in the recent kernels since
+the work is queued only when the repoll count is set, and usually it's
+only at the resume callback, but it's still possible to hit in
+theory.
+
+BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1182377
+Reported-and-tested-by: Abhishek Sahu <abhsahu@nvidia.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20210310112809.9215-4-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_hdmi.c |   13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -2326,6 +2326,18 @@ static void generic_hdmi_free(struct hda
+ }
+ #ifdef CONFIG_PM
++static int generic_hdmi_suspend(struct hda_codec *codec)
++{
++      struct hdmi_spec *spec = codec->spec;
++      int pin_idx;
++
++      for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) {
++              struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx);
++              cancel_delayed_work_sync(&per_pin->work);
++      }
++      return 0;
++}
++
+ static int generic_hdmi_resume(struct hda_codec *codec)
+ {
+       struct hdmi_spec *spec = codec->spec;
+@@ -2349,6 +2361,7 @@ static const struct hda_codec_ops generi
+       .build_controls         = generic_hdmi_build_controls,
+       .unsol_event            = hdmi_unsol_event,
+ #ifdef CONFIG_PM
++      .suspend                = generic_hdmi_suspend,
+       .resume                 = generic_hdmi_resume,
+ #endif
+ };
diff --git a/queue-4.19/alsa-usb-add-plantronics-c320-m-usb-ctrl-msg-delay-quirk.patch b/queue-4.19/alsa-usb-add-plantronics-c320-m-usb-ctrl-msg-delay-quirk.patch
new file mode 100644 (file)
index 0000000..90c9610
--- /dev/null
@@ -0,0 +1,42 @@
+From fc7c5c208eb7bc2df3a9f4234f14eca250001cb6 Mon Sep 17 00:00:00 2001
+From: John Ernberg <john.ernberg@actia.se>
+Date: Wed, 3 Mar 2021 18:14:39 +0000
+Subject: ALSA: usb: Add Plantronics C320-M USB ctrl msg delay quirk
+
+From: John Ernberg <john.ernberg@actia.se>
+
+commit fc7c5c208eb7bc2df3a9f4234f14eca250001cb6 upstream.
+
+The microphone in the Plantronics C320-M headset will randomly
+fail to initialize properly, at least when using Microsoft Teams.
+Introducing a 20ms delay on the control messages appears to
+resolve the issue.
+
+Link: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1065
+Tested-by: Andreas Kempe <kempe@lysator.liu.se>
+Signed-off-by: John Ernberg <john.ernberg@actia.se>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20210303181405.39835-1-john.ernberg@actia.se
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/usb/quirks.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1338,6 +1338,14 @@ void snd_usb_ctl_msg_quirk(struct usb_de
+           && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
+               msleep(20);
++      /*
++       * Plantronics C320-M needs a delay to avoid random
++       * microhpone failures.
++       */
++      if (chip->usb_id == USB_ID(0x047f, 0xc025)  &&
++          (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
++              msleep(20);
++
+       /* Zoom R16/24, many Logitech(at least H650e/H570e/BCC950),
+        * Jabra 550a, Kingston HyperX needs a tiny delay here,
+        * otherwise requests like get/set frequency return
diff --git a/queue-4.19/alsa-usb-audio-apply-the-control-quirk-to-plantronics-headsets.patch b/queue-4.19/alsa-usb-audio-apply-the-control-quirk-to-plantronics-headsets.patch
new file mode 100644 (file)
index 0000000..476e4df
--- /dev/null
@@ -0,0 +1,43 @@
+From 06abcb18b3a021ba1a3f2020cbefb3ed04e59e72 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 4 Mar 2021 09:50:09 +0100
+Subject: ALSA: usb-audio: Apply the control quirk to Plantronics headsets
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 06abcb18b3a021ba1a3f2020cbefb3ed04e59e72 upstream.
+
+Other Plantronics headset models seem requiring the same workaround as
+C320-M to add the 20ms delay for the control messages, too.  Apply the
+workaround generically for devices with the vendor ID 0x047f.
+
+Note that the problem didn't surface before 5.11 just with luck.
+Since 5.11 got a big code rewrite about the stream handling, the
+parameter setup procedure has changed, and this seemed triggering the
+problem more often.
+
+BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1182552
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20210304085009.4770-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/usb/quirks.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1340,10 +1340,10 @@ void snd_usb_ctl_msg_quirk(struct usb_de
+               msleep(20);
+       /*
+-       * Plantronics C320-M needs a delay to avoid random
+-       * microhpone failures.
++       * Plantronics headsets (C320, C320-M, etc) need a delay to avoid
++       * random microhpone failures.
+        */
+-      if (chip->usb_id == USB_ID(0x047f, 0xc025)  &&
++      if (USB_ID_VENDOR(chip->usb_id) == 0x047f &&
+           (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS)
+               msleep(20);
diff --git a/queue-4.19/alsa-usb-audio-fix-cannot-get-freq-eq-errors-on-dell-ae515-sound-bar.patch b/queue-4.19/alsa-usb-audio-fix-cannot-get-freq-eq-errors-on-dell-ae515-sound-bar.patch
new file mode 100644 (file)
index 0000000..f14cd8b
--- /dev/null
@@ -0,0 +1,32 @@
+From fec60c3bc5d1713db2727cdffc638d48f9c07dc3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 4 Mar 2021 09:30:21 +0100
+Subject: ALSA: usb-audio: Fix "cannot get freq eq" errors on Dell AE515 sound bar
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit fec60c3bc5d1713db2727cdffc638d48f9c07dc3 upstream.
+
+Dell AE515 sound bar (413c:a506) spews the error messages when the
+driver tries to read the current sample frequency, hence it needs to
+be on the list in snd_usb_get_sample_rate_quirk().
+
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211551
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20210304083021.2152-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/usb/quirks.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1186,6 +1186,7 @@ bool snd_usb_get_sample_rate_quirk(struc
+       case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
+       case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */
+       case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */
++      case USB_ID(0x413c, 0xa506): /* Dell AE515 sound bar */
+               return true;
+       }
diff --git a/queue-4.19/mmc-core-fix-partition-switch-time-for-emmc.patch b/queue-4.19/mmc-core-fix-partition-switch-time-for-emmc.patch
new file mode 100644 (file)
index 0000000..f998da4
--- /dev/null
@@ -0,0 +1,57 @@
+From 66fbacccbab91e6e55d9c8f1fc0910a8eb6c81f7 Mon Sep 17 00:00:00 2001
+From: Adrian Hunter <adrian.hunter@intel.com>
+Date: Wed, 3 Mar 2021 11:26:14 +0200
+Subject: mmc: core: Fix partition switch time for eMMC
+
+From: Adrian Hunter <adrian.hunter@intel.com>
+
+commit 66fbacccbab91e6e55d9c8f1fc0910a8eb6c81f7 upstream.
+
+Avoid the following warning by always defining partition switch time:
+
+ [    3.209874] mmc1: unspecified timeout for CMD6 - use generic
+ [    3.222780] ------------[ cut here ]------------
+ [    3.233363] WARNING: CPU: 1 PID: 111 at drivers/mmc/core/mmc_ops.c:575 __mmc_switch+0x200/0x204
+
+Reported-by: Paul Fertser <fercerpav@gmail.com>
+Fixes: 1c447116d017 ("mmc: mmc: Fix partition switch timeout for some eMMCs")
+Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
+Link: https://lore.kernel.org/r/168bbfd6-0c5b-5ace-ab41-402e7937c46e@intel.com
+Cc: stable@vger.kernel.org
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mmc/core/mmc.c |   15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+--- a/drivers/mmc/core/mmc.c
++++ b/drivers/mmc/core/mmc.c
+@@ -426,10 +426,6 @@ static int mmc_decode_ext_csd(struct mmc
+               /* EXT_CSD value is in units of 10ms, but we store in ms */
+               card->ext_csd.part_time = 10 * ext_csd[EXT_CSD_PART_SWITCH_TIME];
+-              /* Some eMMC set the value too low so set a minimum */
+-              if (card->ext_csd.part_time &&
+-                  card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME)
+-                      card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME;
+               /* Sleep / awake timeout in 100ns units */
+               if (sa_shift > 0 && sa_shift <= 0x17)
+@@ -619,6 +615,17 @@ static int mmc_decode_ext_csd(struct mmc
+               card->ext_csd.data_sector_size = 512;
+       }
++      /*
++       * GENERIC_CMD6_TIME is to be used "unless a specific timeout is defined
++       * when accessing a specific field", so use it here if there is no
++       * PARTITION_SWITCH_TIME.
++       */
++      if (!card->ext_csd.part_time)
++              card->ext_csd.part_time = card->ext_csd.generic_cmd6_time;
++      /* Some eMMC set the value too low so set a minimum */
++      if (card->ext_csd.part_time < MMC_MIN_PART_SWITCH_TIME)
++              card->ext_csd.part_time = MMC_MIN_PART_SWITCH_TIME;
++
+       /* eMMC v5 or later */
+       if (card->ext_csd.rev >= 7) {
+               memcpy(card->ext_csd.fwrev, &ext_csd[EXT_CSD_FIRMWARE_VERSION],
diff --git a/queue-4.19/mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch b/queue-4.19/mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch
new file mode 100644 (file)
index 0000000..4120f73
--- /dev/null
@@ -0,0 +1,94 @@
+From f06391c45e83f9a731045deb23df7cc3814fd795 Mon Sep 17 00:00:00 2001
+From: Frank Li <lznuaa@gmail.com>
+Date: Wed, 3 Mar 2021 11:42:48 -0600
+Subject: mmc: cqhci: Fix random crash when remove mmc module/card
+
+From: Frank Li <lznuaa@gmail.com>
+
+commit f06391c45e83f9a731045deb23df7cc3814fd795 upstream.
+
+[ 6684.493350] Unable to handle kernel paging request at virtual address ffff800011c5b0f0
+[ 6684.498531] mmc0: card 0001 removed
+[ 6684.501556] Mem abort info:
+[ 6684.509681]   ESR = 0x96000047
+[ 6684.512786]   EC = 0x25: DABT (current EL), IL = 32 bits
+[ 6684.518394]   SET = 0, FnV = 0
+[ 6684.521707]   EA = 0, S1PTW = 0
+[ 6684.524998] Data abort info:
+[ 6684.528236]   ISV = 0, ISS = 0x00000047
+[ 6684.532986]   CM = 0, WnR = 1
+[ 6684.536129] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000081b22000
+[ 6684.543923] [ffff800011c5b0f0] pgd=00000000bffff003, p4d=00000000bffff003, pud=00000000bfffe003, pmd=00000000900e1003, pte=0000000000000000
+[ 6684.557915] Internal error: Oops: 96000047 [#1] PREEMPT SMP
+[ 6684.564240] Modules linked in: sdhci_esdhc_imx(-) sdhci_pltfm sdhci cqhci mmc_block mmc_core fsl_jr_uio caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine rng_core authenc libdes crct10dif_ce flexcan can_dev caam error [last unloaded: mmc_core]
+[ 6684.587281] CPU: 0 PID: 79138 Comm: kworker/0:3H Not tainted 5.10.9-01410-g3ba33182767b-dirty #10
+[ 6684.596160] Hardware name: Freescale i.MX8DXL EVK (DT)
+[ 6684.601320] Workqueue: kblockd blk_mq_run_work_fn
+
+[ 6684.606094] pstate: 40000005 (nZcv daif -PAN -UAO -TCO BTYPE=--)
+[ 6684.612286] pc : cqhci_request+0x148/0x4e8 [cqhci]
+^GMessage from syslogd@  at Thu Jan  1 01:51:24 1970 ...[ 6684.617085] lr : cqhci_request+0x314/0x4e8 [cqhci]
+[ 6684.626734] sp : ffff80001243b9f0
+[ 6684.630049] x29: ffff80001243b9f0 x28: ffff00002c3dd000
+[ 6684.635367] x27: 0000000000000001 x26: 0000000000000001
+[ 6684.640690] x25: ffff00002c451000 x24: 000000000000000f
+[ 6684.646007] x23: ffff000017e71c80 x22: ffff00002c451000
+[ 6684.651326] x21: ffff00002c0f3550 x20: ffff00002c0f3550
+[ 6684.656651] x19: ffff000017d46880 x18: ffff00002cea1500
+[ 6684.661977] x17: 0000000000000000 x16: 0000000000000000
+[ 6684.667294] x15: 000001ee628e3ed1 x14: 0000000000000278
+[ 6684.672610] x13: 0000000000000001 x12: 0000000000000001
+[ 6684.677927] x11: 0000000000000000 x10: 0000000000000000
+[ 6684.683243] x9 : 000000000000002b x8 : 0000000000001000
+[ 6684.688560] x7 : 0000000000000010 x6 : ffff00002c0f3678
+[ 6684.693886] x5 : 000000000000000f x4 : ffff800011c5b000
+[ 6684.699211] x3 : 000000000002d988 x2 : 0000000000000008
+[ 6684.704537] x1 : 00000000000000f0 x0 : 0002d9880008102f
+[ 6684.709854] Call trace:
+[ 6684.712313]  cqhci_request+0x148/0x4e8 [cqhci]
+[ 6684.716803]  mmc_cqe_start_req+0x58/0x68 [mmc_core]
+[ 6684.721698]  mmc_blk_mq_issue_rq+0x460/0x810 [mmc_block]
+[ 6684.727018]  mmc_mq_queue_rq+0x118/0x2b0 [mmc_block]
+
+The problem occurs when cqhci_request() get called after cqhci_disable() as
+it leads to access of allocated memory that has already been freed. Let's
+fix the problem by calling cqhci_disable() a bit later in the remove path.
+
+Signed-off-by: Frank Li <Frank.Li@nxp.com>
+Diagnosed-by: Adrian Hunter <adrian.hunter@intel.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+Link: https://lore.kernel.org/r/20210303174248.542175-1-Frank.Li@nxp.com
+Fixes: f690f4409ddd ("mmc: mmc: Enable CQE's")
+Cc: stable@vger.kernel.org
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mmc/core/bus.c |   11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+--- a/drivers/mmc/core/bus.c
++++ b/drivers/mmc/core/bus.c
+@@ -376,11 +376,6 @@ void mmc_remove_card(struct mmc_card *ca
+       mmc_remove_card_debugfs(card);
+ #endif
+-      if (host->cqe_enabled) {
+-              host->cqe_ops->cqe_disable(host);
+-              host->cqe_enabled = false;
+-      }
+-
+       if (mmc_card_present(card)) {
+               if (mmc_host_is_spi(card->host)) {
+                       pr_info("%s: SPI card removed\n",
+@@ -393,6 +388,10 @@ void mmc_remove_card(struct mmc_card *ca
+               of_node_put(card->dev.of_node);
+       }
++      if (host->cqe_enabled) {
++              host->cqe_ops->cqe_disable(host);
++              host->cqe_enabled = false;
++      }
++
+       put_device(&card->dev);
+ }
+-
diff --git a/queue-4.19/revert-95ebabde382c-capabilities-don-t-allow-writing-ambiguous-v3-file-capabilities.patch b/queue-4.19/revert-95ebabde382c-capabilities-don-t-allow-writing-ambiguous-v3-file-capabilities.patch
new file mode 100644 (file)
index 0000000..aedac54
--- /dev/null
@@ -0,0 +1,54 @@
+From 3b0c2d3eaa83da259d7726192cf55a137769012f Mon Sep 17 00:00:00 2001
+From: "Eric W. Biederman" <ebiederm@xmission.com>
+Date: Fri, 12 Mar 2021 15:07:09 -0600
+Subject: Revert 95ebabde382c ("capabilities: Don't allow writing ambiguous v3 file capabilities")
+
+From: Eric W. Biederman <ebiederm@xmission.com>
+
+commit 3b0c2d3eaa83da259d7726192cf55a137769012f upstream.
+
+It turns out that there are in fact userspace implementations that
+care and this recent change caused a regression.
+
+https://github.com/containers/buildah/issues/3071
+
+As the motivation for the original change was future development,
+and the impact is existing real world code just revert this change
+and allow the ambiguity in v3 file caps.
+
+Cc: stable@vger.kernel.org
+Fixes: 95ebabde382c ("capabilities: Don't allow writing ambiguous v3 file capabilities")
+Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ security/commoncap.c |   12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/security/commoncap.c
++++ b/security/commoncap.c
+@@ -506,8 +506,7 @@ int cap_convert_nscap(struct dentry *den
+       __u32 magic, nsmagic;
+       struct inode *inode = d_backing_inode(dentry);
+       struct user_namespace *task_ns = current_user_ns(),
+-              *fs_ns = inode->i_sb->s_user_ns,
+-              *ancestor;
++              *fs_ns = inode->i_sb->s_user_ns;
+       kuid_t rootid;
+       size_t newsize;
+@@ -530,15 +529,6 @@ int cap_convert_nscap(struct dentry *den
+       if (nsrootid == -1)
+               return -EINVAL;
+-      /*
+-       * Do not allow allow adding a v3 filesystem capability xattr
+-       * if the rootid field is ambiguous.
+-       */
+-      for (ancestor = task_ns->parent; ancestor; ancestor = ancestor->parent) {
+-              if (from_kuid(ancestor, rootid) == 0)
+-                      return -EINVAL;
+-      }
+-
+       newsize = sizeof(struct vfs_ns_cap_data);
+       nscap = kmalloc(newsize, GFP_ATOMIC);
+       if (!nscap)
diff --git a/queue-4.19/s390-dasd-fix-hanging-dasd-driver-unbind.patch b/queue-4.19/s390-dasd-fix-hanging-dasd-driver-unbind.patch
new file mode 100644 (file)
index 0000000..cb0ee64
--- /dev/null
@@ -0,0 +1,49 @@
+From 7d365bd0bff3c0310c39ebaffc9a8458e036d666 Mon Sep 17 00:00:00 2001
+From: Stefan Haberland <sth@linux.ibm.com>
+Date: Fri, 5 Mar 2021 13:54:38 +0100
+Subject: s390/dasd: fix hanging DASD driver unbind
+
+From: Stefan Haberland <sth@linux.ibm.com>
+
+commit 7d365bd0bff3c0310c39ebaffc9a8458e036d666 upstream.
+
+In case of an unbind of the DASD device driver the function
+dasd_generic_remove() is called which shuts down the device.
+Among others this functions removes the int_handler from the cdev.
+During shutdown the device cancels all outstanding IO requests and waits
+for completion of the clear request.
+Unfortunately the clear interrupt will never be received when there is no
+interrupt handler connected.
+
+Fix by moving the int_handler removal after the call to the state machine
+where no request or interrupt is outstanding.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
+Tested-by: Bjoern Walk <bwalk@linux.ibm.com>
+Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/s390/block/dasd.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/s390/block/dasd.c
++++ b/drivers/s390/block/dasd.c
+@@ -3426,8 +3426,6 @@ void dasd_generic_remove(struct ccw_devi
+       struct dasd_device *device;
+       struct dasd_block *block;
+-      cdev->handler = NULL;
+-
+       device = dasd_device_from_cdev(cdev);
+       if (IS_ERR(device)) {
+               dasd_remove_sysfs_files(cdev);
+@@ -3446,6 +3444,7 @@ void dasd_generic_remove(struct ccw_devi
+        * no quite down yet.
+        */
+       dasd_set_target_state(device, DASD_STATE_NEW);
++      cdev->handler = NULL;
+       /* dasd_delete_device destroys the device reference. */
+       block = device->block;
+       dasd_delete_device(device);
diff --git a/queue-4.19/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind.patch b/queue-4.19/s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind.patch
new file mode 100644 (file)
index 0000000..a23cdf5
--- /dev/null
@@ -0,0 +1,40 @@
+From 66f669a272898feb1c69b770e1504aa2ec7723d1 Mon Sep 17 00:00:00 2001
+From: Stefan Haberland <sth@linux.ibm.com>
+Date: Fri, 5 Mar 2021 13:54:39 +0100
+Subject: s390/dasd: fix hanging IO request during DASD driver unbind
+
+From: Stefan Haberland <sth@linux.ibm.com>
+
+commit 66f669a272898feb1c69b770e1504aa2ec7723d1 upstream.
+
+Prevent that an IO request is build during device shutdown initiated by
+a driver unbind. This request will never be able to be processed or
+canceled and will hang forever. This will lead also to a hanging unbind.
+
+Fix by checking not only if the device is in READY state but also check
+that there is no device offline initiated before building a new IO request.
+
+Fixes: e443343e509a ("s390/dasd: blk-mq conversion")
+
+Cc: <stable@vger.kernel.org> # v4.14+
+Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
+Tested-by: Bjoern Walk <bwalk@linux.ibm.com>
+Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/s390/block/dasd.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/s390/block/dasd.c
++++ b/drivers/s390/block/dasd.c
+@@ -2940,7 +2940,8 @@ static blk_status_t do_dasd_request(stru
+       basedev = block->base;
+       spin_lock_irq(&dq->lock);
+-      if (basedev->state < DASD_STATE_READY) {
++      if (basedev->state < DASD_STATE_READY ||
++          test_bit(DASD_FLAG_OFFLINE, &basedev->flags)) {
+               DBF_DEV_EVENT(DBF_ERR, basedev,
+                             "device not ready for request %p", req);
+               rc = BLK_STS_IOERR;
index 97789c6dac10bcc9d347ebbec63ae18d58304ee4..0592f17142016c0dd2a2e5459cd9db46f309ffb2 100644 (file)
@@ -83,3 +83,14 @@ crypto-arm-sha256-neon-avoid-adrl-pseudo-instruction.patch
 crypto-arm-sha512-neon-avoid-adrl-pseudo-instruction.patch
 arm-9025-1-kconfig-cpu_big_endian-depends-on-ld_is_l.patch
 arm-9029-1-make-iwmmxt.s-support-clang-s-integrated-.patch
+alsa-usb-add-plantronics-c320-m-usb-ctrl-msg-delay-quirk.patch
+alsa-hda-hdmi-cancel-pending-works-before-suspend.patch
+alsa-hda-drop-the-batch-workaround-for-amd-controllers.patch
+alsa-hda-avoid-spurious-unsol-event-handling-during-s3-s4.patch
+alsa-usb-audio-fix-cannot-get-freq-eq-errors-on-dell-ae515-sound-bar.patch
+alsa-usb-audio-apply-the-control-quirk-to-plantronics-headsets.patch
+revert-95ebabde382c-capabilities-don-t-allow-writing-ambiguous-v3-file-capabilities.patch
+s390-dasd-fix-hanging-dasd-driver-unbind.patch
+s390-dasd-fix-hanging-io-request-during-dasd-driver-unbind.patch
+mmc-core-fix-partition-switch-time-for-emmc.patch
+mmc-cqhci-fix-random-crash-when-remove-mmc-module-card.patch