From: Greg Kroah-Hartman Date: Sat, 29 May 2021 13:53:08 +0000 (+0200) Subject: 5.12-stable patches X-Git-Tag: v4.4.271~129 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=07c30f390c6ef3d22886a5cc33f8ff086181b8a3;p=thirdparty%2Fkernel%2Fstable-queue.git 5.12-stable patches added patches: alsa-hda-realtek-chain-in-pop-reduction-fixup-for-thinkstation-p340.patch alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-15-g8.patch alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-17-g8.patch alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-g8.patch alsa-hda-realtek-fix-mute-micmute-leds-for-hp-855-g8.patch alsa-hda-realtek-headphone-volume-is-controlled-by-front-mixer.patch alsa-hda-realtek-the-bass-speaker-can-t-output-sound-on-yoga-9i.patch alsa-usb-audio-fix-control-request-direction.patch alsa-usb-audio-scarlett2-fix-device-hang-with-ehci-pci.patch alsa-usb-audio-scarlett2-improve-driver-startup-messages.patch can-isotp-prevent-race-between-isotp_bind-and-isotp_setsockopt.patch cifs-fix-string-declarations-and-assignments-in-tracepoints.patch cifs-set-server-cipher_type-to-aes-128-ccm-for-smb3.0.patch iommu-vt-d-fix-sysfs-leak-in-alloc_iommu.patch mtd-rawnand-cs553x-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-fsmc-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-lpc32xx_slc-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-ndfc-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-sharpsl-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-tmio-fix-external-use-of-sw-hamming-ecc-helper.patch mtd-rawnand-txx9ndfmc-fix-external-use-of-sw-hamming-ecc-helper.patch nfsv4-fix-a-null-pointer-dereference-in-pnfs_mark_matching_lsegs_return.patch scsi-target-core-avoid-smp_processor_id-in-preemptible-code.patch --- diff --git a/queue-5.12/alsa-hda-realtek-chain-in-pop-reduction-fixup-for-thinkstation-p340.patch b/queue-5.12/alsa-hda-realtek-chain-in-pop-reduction-fixup-for-thinkstation-p340.patch new file mode 100644 index 00000000000..5e93d98196b --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-chain-in-pop-reduction-fixup-for-thinkstation-p340.patch @@ -0,0 +1,66 @@ +From 29c8f40b54a45dd23971e2bc395697731bcffbe1 Mon Sep 17 00:00:00 2001 +From: Peter Ujfalusi +Date: Mon, 24 May 2021 23:37:26 +0300 +Subject: ALSA: hda/realtek: Chain in pop reduction fixup for ThinkStation P340 + +From: Peter Ujfalusi + +commit 29c8f40b54a45dd23971e2bc395697731bcffbe1 upstream. + +Lenovo ThinkStation P340 uses ALC623 codec (SSID 17aa:1048) and it produces +bug plock/pop noise over line out (green jack on the back) which can be +fixed by applying ALC269_FIXUP_NO_SHUTUP tot he machine. + +Convert the existing entry for the same SSID to chain to apply this fixup +as well. + +Suggested-by: Takashi Iwai +Signed-off-by: Peter Ujfalusi +Cc: +Link: https://lore.kernel.org/r/20210524203726.2278-1-peter.ujfalusi@linux.intel.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6559,6 +6559,7 @@ enum { + ALC295_FIXUP_HP_OMEN, + ALC285_FIXUP_HP_SPECTRE_X360, + ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP, ++ ALC623_FIXUP_LENOVO_THINKSTATION_P340, + }; + + static const struct hda_fixup alc269_fixups[] = { +@@ -8125,6 +8126,12 @@ static const struct hda_fixup alc269_fix + .chained = true, + .chain_id = ALC285_FIXUP_THINKPAD_HEADSET_JACK, + }, ++ [ALC623_FIXUP_LENOVO_THINKSTATION_P340] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = alc_fixup_no_shutup, ++ .chained = true, ++ .chain_id = ALC283_FIXUP_HEADSET_MIC, ++ }, + }; + + static const struct snd_pci_quirk alc269_fixup_tbl[] = { +@@ -8442,7 +8449,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x1558, 0xc019, "Clevo NH77D[BE]Q", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1558, 0xc022, "Clevo NH77[DC][QW]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x17aa, 0x1036, "Lenovo P520", ALC233_FIXUP_LENOVO_MULTI_CODECS), +- SND_PCI_QUIRK(0x17aa, 0x1048, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), ++ SND_PCI_QUIRK(0x17aa, 0x1048, "ThinkCentre Station", ALC623_FIXUP_LENOVO_THINKSTATION_P340), + SND_PCI_QUIRK(0x17aa, 0x20f2, "Thinkpad SL410/510", ALC269_FIXUP_SKU_IGNORE), + SND_PCI_QUIRK(0x17aa, 0x215e, "Thinkpad L512", ALC269_FIXUP_SKU_IGNORE), + SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), +@@ -8709,6 +8716,7 @@ static const struct hda_model_fixup alc2 + {.id = ALC295_FIXUP_HP_OMEN, .name = "alc295-hp-omen"}, + {.id = ALC285_FIXUP_HP_SPECTRE_X360, .name = "alc285-hp-spectre-x360"}, + {.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP, .name = "alc287-ideapad-bass-spk-amp"}, ++ {.id = ALC623_FIXUP_LENOVO_THINKSTATION_P340, .name = "alc623-lenovo-thinkstation-p340"}, + {} + }; + #define ALC225_STANDARD_PINS \ diff --git a/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-15-g8.patch b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-15-g8.patch new file mode 100644 index 00000000000..6b57a3089e7 --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-15-g8.patch @@ -0,0 +1,33 @@ +From e650c1a959da49f2b873cb56564b825882c22e7a Mon Sep 17 00:00:00 2001 +From: Jeremy Szu +Date: Thu, 20 May 2021 01:03:55 +0800 +Subject: ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook Fury 15 G8 + +From: Jeremy Szu + +commit e650c1a959da49f2b873cb56564b825882c22e7a upstream. + +The HP ZBook Fury 15.6 Inch G8 is using ALC285 codec which is +using 0x04 to control mute LED and 0x01 to control micmute LED. +In the other hand, there is no output from right channel of speaker. +Therefore, add a quirk to make it works. + +Signed-off-by: Jeremy Szu +Cc: +Link: https://lore.kernel.org/r/20210519170357.58410-3-jeremy.szu@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -8314,6 +8314,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), + SND_PCI_QUIRK(0x103c, 0x8846, "HP EliteBook 850 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x884c, "HP EliteBook 840 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x8870, "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), diff --git a/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-17-g8.patch b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-17-g8.patch new file mode 100644 index 00000000000..89a3ead5bd3 --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-17-g8.patch @@ -0,0 +1,33 @@ +From 50dbfae972cbe0e3c631e73c7c58cbc48bfc6a49 Mon Sep 17 00:00:00 2001 +From: Jeremy Szu +Date: Thu, 20 May 2021 01:03:56 +0800 +Subject: ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook Fury 17 G8 + +From: Jeremy Szu + +commit 50dbfae972cbe0e3c631e73c7c58cbc48bfc6a49 upstream. + +The HP ZBook Studio 17.3 Inch G8 is using ALC285 codec which is +using 0x04 to control mute LED and 0x01 to control micmute LED. +In the other hand, there is no output from right channel of speaker. +Therefore, add a quirk to make it works. + +Signed-off-by: Jeremy Szu +Cc: +Link: https://lore.kernel.org/r/20210519170357.58410-4-jeremy.szu@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -8314,6 +8314,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), + SND_PCI_QUIRK(0x103c, 0x8846, "HP EliteBook 850 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x884c, "HP EliteBook 840 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x886d, "HP ZBook Fury 17.3 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8870, "HP ZBook Fury 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), diff --git a/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-g8.patch b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-g8.patch new file mode 100644 index 00000000000..dbf27bba880 --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-g8.patch @@ -0,0 +1,33 @@ +From bbe183e07817a46cf8d3d7fc88093df81d23a957 Mon Sep 17 00:00:00 2001 +From: Jeremy Szu +Date: Thu, 20 May 2021 01:03:54 +0800 +Subject: ALSA: hda/realtek: fix mute/micmute LEDs and speaker for HP Zbook G8 + +From: Jeremy Szu + +commit bbe183e07817a46cf8d3d7fc88093df81d23a957 upstream. + +The HP ZBook Studio 15.6 Inch G8 is using ALC285 codec which is +using 0x04 to control mute LED and 0x01 to control micmute LED. +In the other hand, there is no output from right channel of speaker. +Therefore, add a quirk to make it works. + +Signed-off-by: Jeremy Szu +Cc: +Link: https://lore.kernel.org/r/20210519170357.58410-2-jeremy.szu@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -8314,6 +8314,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), + SND_PCI_QUIRK(0x103c, 0x8846, "HP EliteBook 850 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x884c, "HP EliteBook 840 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x8873, "HP ZBook Studio 15.6 Inch G8 Mobile Workstation PC", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), diff --git a/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-for-hp-855-g8.patch b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-for-hp-855-g8.patch new file mode 100644 index 00000000000..7f01cc0dfbc --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-fix-mute-micmute-leds-for-hp-855-g8.patch @@ -0,0 +1,32 @@ +From 0e68c4b11f1e66d211ad242007e9f1076a6b7709 Mon Sep 17 00:00:00 2001 +From: Jeremy Szu +Date: Thu, 20 May 2021 01:03:53 +0800 +Subject: ALSA: hda/realtek: fix mute/micmute LEDs for HP 855 G8 + +From: Jeremy Szu + +commit 0e68c4b11f1e66d211ad242007e9f1076a6b7709 upstream. + +The HP EliteBook 855 G8 Notebook PC is using ALC285 codec which needs +ALC285_FIXUP_HP_MUTE_LED fixup to make it works. After applying the +fixup, the mute/micmute LEDs work good. + +Signed-off-by: Jeremy Szu +Cc: +Link: https://lore.kernel.org/r/20210519170357.58410-1-jeremy.szu@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -8314,6 +8314,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x87f7, "HP Spectre x360 14", ALC245_FIXUP_HP_X360_AMP), + SND_PCI_QUIRK(0x103c, 0x8846, "HP EliteBook 850 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x884c, "HP EliteBook 840 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), + SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), diff --git a/queue-5.12/alsa-hda-realtek-headphone-volume-is-controlled-by-front-mixer.patch b/queue-5.12/alsa-hda-realtek-headphone-volume-is-controlled-by-front-mixer.patch new file mode 100644 index 00000000000..306f775fdc1 --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-headphone-volume-is-controlled-by-front-mixer.patch @@ -0,0 +1,70 @@ +From 119b75c150773425a89033215eab4d15d4198f8b Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Sat, 22 May 2021 11:47:41 +0800 +Subject: ALSA: hda/realtek: Headphone volume is controlled by Front mixer + +From: Hui Wang + +commit 119b75c150773425a89033215eab4d15d4198f8b upstream. + +On some ASUS and MSI machines, the audio codec is alc1220 and the +Headphone is connected to audio mixer 0xf and DAC 0x5, in theory +the Headphone volume is controlled by DAC 0x5 (Heapdhone Playback +Volume), but somehow it is controlled by DAC 0x2 (Front Playback +Volume), maybe this is a defect on the codec alc1220. + +Because of this issue, the PA couldn't switch the headphone and +Lineout correctly, If we apply the quirk CLEVO_P950 to those machines, +the Lineout and Headphone will share the audio mixer 0xc and DAC 0x2, +and generate Headphone+LO mixer, then PA could handle them when +switching between them. + +BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1206 +Cc: +Signed-off-by: Hui Wang +Link: https://lore.kernel.org/r/20210522034741.13415-1-hui.wang@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -2603,6 +2603,28 @@ static const struct hda_model_fixup alc8 + {} + }; + ++static const struct snd_hda_pin_quirk alc882_pin_fixup_tbl[] = { ++ SND_HDA_PIN_QUIRK(0x10ec1220, 0x1043, "ASUS", ALC1220_FIXUP_CLEVO_P950, ++ {0x14, 0x01014010}, ++ {0x15, 0x01011012}, ++ {0x16, 0x01016011}, ++ {0x18, 0x01a19040}, ++ {0x19, 0x02a19050}, ++ {0x1a, 0x0181304f}, ++ {0x1b, 0x0221401f}, ++ {0x1e, 0x01456130}), ++ SND_HDA_PIN_QUIRK(0x10ec1220, 0x1462, "MS-7C35", ALC1220_FIXUP_CLEVO_P950, ++ {0x14, 0x01015010}, ++ {0x15, 0x01011012}, ++ {0x16, 0x01011011}, ++ {0x18, 0x01a11040}, ++ {0x19, 0x02a19050}, ++ {0x1a, 0x0181104f}, ++ {0x1b, 0x0221401f}, ++ {0x1e, 0x01451130}), ++ {} ++}; ++ + /* + * BIOS auto configuration + */ +@@ -2644,6 +2666,7 @@ static int patch_alc882(struct hda_codec + + snd_hda_pick_fixup(codec, alc882_fixup_models, alc882_fixup_tbl, + alc882_fixups); ++ snd_hda_pick_pin_fixup(codec, alc882_pin_fixup_tbl, alc882_fixups, true); + snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); + + alc_auto_parse_customize_define(codec); diff --git a/queue-5.12/alsa-hda-realtek-the-bass-speaker-can-t-output-sound-on-yoga-9i.patch b/queue-5.12/alsa-hda-realtek-the-bass-speaker-can-t-output-sound-on-yoga-9i.patch new file mode 100644 index 00000000000..098076b80da --- /dev/null +++ b/queue-5.12/alsa-hda-realtek-the-bass-speaker-can-t-output-sound-on-yoga-9i.patch @@ -0,0 +1,65 @@ +From 9ebaef0540a981093bce5df15af32354d32391d9 Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Sat, 22 May 2021 12:26:45 +0800 +Subject: ALSA: hda/realtek: the bass speaker can't output sound on Yoga 9i + +From: Hui Wang + +commit 9ebaef0540a981093bce5df15af32354d32391d9 upstream. + +The Lenovo Yoga 9i has bass speaker, but the bass speaker can't work, +that is because there is an i2s amplifier on that speaker, need to +run ideapad_s740_coef() to initialize the amplifier. + +And also needs to apply ALC285_FIXUP_THINKPAD_HEADSET_JACK to rename +the speaker's mixer control name, otherwise the PA can't handle them. + +BugLink: http://bugs.launchpad.net/bugs/1926165 +Signed-off-by: Hui Wang +Cc: +Link: https://lore.kernel.org/r/20210522042645.14221-1-hui.wang@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6535,6 +6535,7 @@ enum { + ALC295_FIXUP_ASUS_DACS, + ALC295_FIXUP_HP_OMEN, + ALC285_FIXUP_HP_SPECTRE_X360, ++ ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP, + }; + + static const struct hda_fixup alc269_fixups[] = { +@@ -8095,6 +8096,12 @@ static const struct hda_fixup alc269_fix + .chained = true, + .chain_id = ALC285_FIXUP_SPEAKER2_TO_DAC1, + }, ++ [ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = alc285_fixup_ideapad_s740_coef, ++ .chained = true, ++ .chain_id = ALC285_FIXUP_THINKPAD_HEADSET_JACK, ++ }, + }; + + static const struct snd_pci_quirk alc269_fixup_tbl[] = { +@@ -8462,6 +8469,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x17aa, 0x3178, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC), + SND_PCI_QUIRK(0x17aa, 0x3818, "Lenovo C940", ALC298_FIXUP_LENOVO_SPK_VOLUME), + SND_PCI_QUIRK(0x17aa, 0x3827, "Ideapad S740", ALC285_FIXUP_IDEAPAD_S740_COEF), ++ SND_PCI_QUIRK(0x17aa, 0x3843, "Yoga 9i", ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP), + SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), + SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), + SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI), +@@ -8677,6 +8685,7 @@ static const struct hda_model_fixup alc2 + {.id = ALC245_FIXUP_HP_X360_AMP, .name = "alc245-hp-x360-amp"}, + {.id = ALC295_FIXUP_HP_OMEN, .name = "alc295-hp-omen"}, + {.id = ALC285_FIXUP_HP_SPECTRE_X360, .name = "alc285-hp-spectre-x360"}, ++ {.id = ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP, .name = "alc287-ideapad-bass-spk-amp"}, + {} + }; + #define ALC225_STANDARD_PINS \ diff --git a/queue-5.12/alsa-usb-audio-fix-control-request-direction.patch b/queue-5.12/alsa-usb-audio-fix-control-request-direction.patch new file mode 100644 index 00000000000..e497a934e4d --- /dev/null +++ b/queue-5.12/alsa-usb-audio-fix-control-request-direction.patch @@ -0,0 +1,36 @@ +From 51cb8e206afd463e66f16869e5ddc95bef107142 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Fri, 21 May 2021 15:37:42 +0200 +Subject: ALSA: usb-audio: fix control-request direction + +From: Johan Hovold + +commit 51cb8e206afd463e66f16869e5ddc95bef107142 upstream. + +The direction of the pipe argument must match the request-type direction +bit or control requests may fail depending on the host-controller-driver +implementation. + +Fix the UAC2_CS_CUR request which erroneously used usb_sndctrlpipe(). + +Fixes: 93db51d06b32 ("ALSA: usb-audio: Check valid altsetting at parsing rates for UAC2/3") +Cc: stable@vger.kernel.org # 5.10 +Signed-off-by: Johan Hovold +Link: https://lore.kernel.org/r/20210521133742.18098-1-johan@kernel.org +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/usb/format.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/usb/format.c ++++ b/sound/usb/format.c +@@ -436,7 +436,7 @@ static bool check_valid_altsetting_v2v3( + if (snd_BUG_ON(altsetting >= 64 - 8)) + return false; + +- err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), UAC2_CS_CUR, ++ err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR, + USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_DIR_IN, + UAC2_AS_VAL_ALT_SETTINGS << 8, + iface, &raw_data, sizeof(raw_data)); diff --git a/queue-5.12/alsa-usb-audio-scarlett2-fix-device-hang-with-ehci-pci.patch b/queue-5.12/alsa-usb-audio-scarlett2-fix-device-hang-with-ehci-pci.patch new file mode 100644 index 00000000000..aa5e418c4e9 --- /dev/null +++ b/queue-5.12/alsa-usb-audio-scarlett2-fix-device-hang-with-ehci-pci.patch @@ -0,0 +1,34 @@ +From 764fa6e686e0107c0357a988d193de04cf047583 Mon Sep 17 00:00:00 2001 +From: "Geoffrey D. Bennett" +Date: Fri, 21 May 2021 17:50:12 +0930 +Subject: ALSA: usb-audio: scarlett2: Fix device hang with ehci-pci + +From: Geoffrey D. Bennett + +commit 764fa6e686e0107c0357a988d193de04cf047583 upstream. + +Use usb_rcvctrlpipe() not usb_sndctrlpipe() for USB control input in +the Scarlett Gen 2 mixer driver. This fixes the device hang during +initialisation when used with the ehci-pci host driver. + +Fixes: 9e4d5c1be21f ("ALSA: usb-audio: Scarlett Gen 2 mixer interface") +Signed-off-by: Geoffrey D. Bennett +Cc: +Link: https://lore.kernel.org/r/66a3d05dac325d5b53e4930578e143cef1f50dbe.1621584566.git.g@b4.vu +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/usb/mixer_scarlett_gen2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/usb/mixer_scarlett_gen2.c ++++ b/sound/usb/mixer_scarlett_gen2.c +@@ -635,7 +635,7 @@ static int scarlett2_usb( + /* send a second message to get the response */ + + err = snd_usb_ctl_msg(mixer->chip->dev, +- usb_sndctrlpipe(mixer->chip->dev, 0), ++ usb_rcvctrlpipe(mixer->chip->dev, 0), + SCARLETT2_USB_VENDOR_SPECIFIC_CMD_RESP, + USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, + 0, diff --git a/queue-5.12/alsa-usb-audio-scarlett2-improve-driver-startup-messages.patch b/queue-5.12/alsa-usb-audio-scarlett2-improve-driver-startup-messages.patch new file mode 100644 index 00000000000..bcf11b04b78 --- /dev/null +++ b/queue-5.12/alsa-usb-audio-scarlett2-improve-driver-startup-messages.patch @@ -0,0 +1,145 @@ +From 265d1a90e4fb6d3264d8122fbd10760e5e733be6 Mon Sep 17 00:00:00 2001 +From: "Geoffrey D. Bennett" +Date: Fri, 21 May 2021 17:50:13 +0930 +Subject: ALSA: usb-audio: scarlett2: Improve driver startup messages + +From: Geoffrey D. Bennett + +commit 265d1a90e4fb6d3264d8122fbd10760e5e733be6 upstream. + +Add separate init function to call the existing controls_create +function so a custom error can be displayed if initialisation fails. + +Use info level instead of error for notifications. + +Display the VID/PID so device_setup is targeted to the right device. + +Display "enabled" message to easily confirm that the driver is loaded. + +Signed-off-by: Geoffrey D. Bennett +Cc: +Link: https://lore.kernel.org/r/b5d140c65f640faf2427e085fbbc0297b32e5fce.1621584566.git.g@b4.vu +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/usb/mixer_quirks.c | 2 - + sound/usb/mixer_scarlett_gen2.c | 79 +++++++++++++++++++++++++--------------- + sound/usb/mixer_scarlett_gen2.h | 2 - + 3 files changed, 52 insertions(+), 31 deletions(-) + +--- a/sound/usb/mixer_quirks.c ++++ b/sound/usb/mixer_quirks.c +@@ -3017,7 +3017,7 @@ int snd_usb_mixer_apply_create_quirk(str + case USB_ID(0x1235, 0x8203): /* Focusrite Scarlett 6i6 2nd Gen */ + case USB_ID(0x1235, 0x8204): /* Focusrite Scarlett 18i8 2nd Gen */ + case USB_ID(0x1235, 0x8201): /* Focusrite Scarlett 18i20 2nd Gen */ +- err = snd_scarlett_gen2_controls_create(mixer); ++ err = snd_scarlett_gen2_init(mixer); + break; + + case USB_ID(0x041e, 0x323b): /* Creative Sound Blaster E1 */ +--- a/sound/usb/mixer_scarlett_gen2.c ++++ b/sound/usb/mixer_scarlett_gen2.c +@@ -1997,38 +1997,11 @@ static int scarlett2_mixer_status_create + return usb_submit_urb(mixer->urb, GFP_KERNEL); + } + +-/* Entry point */ +-int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer) ++int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer, ++ const struct scarlett2_device_info *info) + { +- const struct scarlett2_device_info *info; + int err; + +- /* only use UAC_VERSION_2 */ +- if (!mixer->protocol) +- return 0; +- +- switch (mixer->chip->usb_id) { +- case USB_ID(0x1235, 0x8203): +- info = &s6i6_gen2_info; +- break; +- case USB_ID(0x1235, 0x8204): +- info = &s18i8_gen2_info; +- break; +- case USB_ID(0x1235, 0x8201): +- info = &s18i20_gen2_info; +- break; +- default: /* device not (yet) supported */ +- return -EINVAL; +- } +- +- if (!(mixer->chip->setup & SCARLETT2_ENABLE)) { +- usb_audio_err(mixer->chip, +- "Focusrite Scarlett Gen 2 Mixer Driver disabled; " +- "use options snd_usb_audio device_setup=1 " +- "to enable and report any issues to g@b4.vu"); +- return 0; +- } +- + /* Initialise private data, routing, sequence number */ + err = scarlett2_init_private(mixer, info); + if (err < 0) +@@ -2073,3 +2046,51 @@ int snd_scarlett_gen2_controls_create(st + + return 0; + } ++ ++int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer) ++{ ++ struct snd_usb_audio *chip = mixer->chip; ++ const struct scarlett2_device_info *info; ++ int err; ++ ++ /* only use UAC_VERSION_2 */ ++ if (!mixer->protocol) ++ return 0; ++ ++ switch (chip->usb_id) { ++ case USB_ID(0x1235, 0x8203): ++ info = &s6i6_gen2_info; ++ break; ++ case USB_ID(0x1235, 0x8204): ++ info = &s18i8_gen2_info; ++ break; ++ case USB_ID(0x1235, 0x8201): ++ info = &s18i20_gen2_info; ++ break; ++ default: /* device not (yet) supported */ ++ return -EINVAL; ++ } ++ ++ if (!(chip->setup & SCARLETT2_ENABLE)) { ++ usb_audio_info(chip, ++ "Focusrite Scarlett Gen 2 Mixer Driver disabled; " ++ "use options snd_usb_audio vid=0x%04x pid=0x%04x " ++ "device_setup=1 to enable and report any issues " ++ "to g@b4.vu", ++ USB_ID_VENDOR(chip->usb_id), ++ USB_ID_PRODUCT(chip->usb_id)); ++ return 0; ++ } ++ ++ usb_audio_info(chip, ++ "Focusrite Scarlett Gen 2 Mixer Driver enabled pid=0x%04x", ++ USB_ID_PRODUCT(chip->usb_id)); ++ ++ err = snd_scarlett_gen2_controls_create(mixer, info); ++ if (err < 0) ++ usb_audio_err(mixer->chip, ++ "Error initialising Scarlett Mixer Driver: %d", ++ err); ++ ++ return err; ++} +--- a/sound/usb/mixer_scarlett_gen2.h ++++ b/sound/usb/mixer_scarlett_gen2.h +@@ -2,6 +2,6 @@ + #ifndef __USB_MIXER_SCARLETT_GEN2_H + #define __USB_MIXER_SCARLETT_GEN2_H + +-int snd_scarlett_gen2_controls_create(struct usb_mixer_interface *mixer); ++int snd_scarlett_gen2_init(struct usb_mixer_interface *mixer); + + #endif /* __USB_MIXER_SCARLETT_GEN2_H */ diff --git a/queue-5.12/can-isotp-prevent-race-between-isotp_bind-and-isotp_setsockopt.patch b/queue-5.12/can-isotp-prevent-race-between-isotp_bind-and-isotp_setsockopt.patch new file mode 100644 index 00000000000..5a9964be396 --- /dev/null +++ b/queue-5.12/can-isotp-prevent-race-between-isotp_bind-and-isotp_setsockopt.patch @@ -0,0 +1,116 @@ +From 2b17c400aeb44daf041627722581ade527bb3c1d Mon Sep 17 00:00:00 2001 +From: Norbert Slusarek +Date: Wed, 12 May 2021 00:43:54 +0200 +Subject: can: isotp: prevent race between isotp_bind() and isotp_setsockopt() + +From: Norbert Slusarek + +commit 2b17c400aeb44daf041627722581ade527bb3c1d upstream. + +A race condition was found in isotp_setsockopt() which allows to +change socket options after the socket was bound. +For the specific case of SF_BROADCAST support, this might lead to possible +use-after-free because can_rx_unregister() is not called. + +Checking for the flag under the socket lock in isotp_bind() and taking +the lock in isotp_setsockopt() fixes the issue. + +Fixes: 921ca574cd38 ("can: isotp: add SF_BROADCAST support for functional addressing") +Link: https://lore.kernel.org/r/trinity-e6ae9efa-9afb-4326-84c0-f3609b9b8168-1620773528307@3c-app-gmx-bs06 +Reported-by: Norbert Slusarek +Signed-off-by: Thadeu Lima de Souza Cascardo +Signed-off-by: Norbert Slusarek +Acked-by: Oliver Hartkopp +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman +--- + net/can/isotp.c | 49 +++++++++++++++++++++++++++++++++---------------- + 1 file changed, 33 insertions(+), 16 deletions(-) + +--- a/net/can/isotp.c ++++ b/net/can/isotp.c +@@ -1062,27 +1062,31 @@ static int isotp_bind(struct socket *soc + if (len < ISOTP_MIN_NAMELEN) + return -EINVAL; + ++ if (addr->can_addr.tp.tx_id & (CAN_ERR_FLAG | CAN_RTR_FLAG)) ++ return -EADDRNOTAVAIL; ++ ++ if (!addr->can_ifindex) ++ return -ENODEV; ++ ++ lock_sock(sk); ++ + /* do not register frame reception for functional addressing */ + if (so->opt.flags & CAN_ISOTP_SF_BROADCAST) + do_rx_reg = 0; + + /* do not validate rx address for functional addressing */ + if (do_rx_reg) { +- if (addr->can_addr.tp.rx_id == addr->can_addr.tp.tx_id) +- return -EADDRNOTAVAIL; ++ if (addr->can_addr.tp.rx_id == addr->can_addr.tp.tx_id) { ++ err = -EADDRNOTAVAIL; ++ goto out; ++ } + +- if (addr->can_addr.tp.rx_id & (CAN_ERR_FLAG | CAN_RTR_FLAG)) +- return -EADDRNOTAVAIL; ++ if (addr->can_addr.tp.rx_id & (CAN_ERR_FLAG | CAN_RTR_FLAG)) { ++ err = -EADDRNOTAVAIL; ++ goto out; ++ } + } + +- if (addr->can_addr.tp.tx_id & (CAN_ERR_FLAG | CAN_RTR_FLAG)) +- return -EADDRNOTAVAIL; +- +- if (!addr->can_ifindex) +- return -ENODEV; +- +- lock_sock(sk); +- + if (so->bound && addr->can_ifindex == so->ifindex && + addr->can_addr.tp.rx_id == so->rxid && + addr->can_addr.tp.tx_id == so->txid) +@@ -1164,16 +1168,13 @@ static int isotp_getname(struct socket * + return ISOTP_MIN_NAMELEN; + } + +-static int isotp_setsockopt(struct socket *sock, int level, int optname, ++static int isotp_setsockopt_locked(struct socket *sock, int level, int optname, + sockptr_t optval, unsigned int optlen) + { + struct sock *sk = sock->sk; + struct isotp_sock *so = isotp_sk(sk); + int ret = 0; + +- if (level != SOL_CAN_ISOTP) +- return -EINVAL; +- + if (so->bound) + return -EISCONN; + +@@ -1248,6 +1249,22 @@ static int isotp_setsockopt(struct socke + return ret; + } + ++static int isotp_setsockopt(struct socket *sock, int level, int optname, ++ sockptr_t optval, unsigned int optlen) ++ ++{ ++ struct sock *sk = sock->sk; ++ int ret; ++ ++ if (level != SOL_CAN_ISOTP) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ret = isotp_setsockopt_locked(sock, level, optname, optval, optlen); ++ release_sock(sk); ++ return ret; ++} ++ + static int isotp_getsockopt(struct socket *sock, int level, int optname, + char __user *optval, int __user *optlen) + { diff --git a/queue-5.12/cifs-fix-string-declarations-and-assignments-in-tracepoints.patch b/queue-5.12/cifs-fix-string-declarations-and-assignments-in-tracepoints.patch new file mode 100644 index 00000000000..ae4ddf1e3e2 --- /dev/null +++ b/queue-5.12/cifs-fix-string-declarations-and-assignments-in-tracepoints.patch @@ -0,0 +1,123 @@ +From eb0688180549e3b72464e9f78df58cb7a5592c7f Mon Sep 17 00:00:00 2001 +From: Shyam Prasad N +Date: Fri, 21 May 2021 06:35:52 +0000 +Subject: cifs: fix string declarations and assignments in tracepoints + +From: Shyam Prasad N + +commit eb0688180549e3b72464e9f78df58cb7a5592c7f upstream. + +We missed using the variable length string macros in several +tracepoints. Fixed them in this change. + +There's probably more useful macros that we can use to print +others like flags etc. But I'll submit sepawrate patches for +those at a future date. + +Signed-off-by: Shyam Prasad N +Cc: # v5.12 +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/cifs/trace.h | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +--- a/fs/cifs/trace.h ++++ b/fs/cifs/trace.h +@@ -12,6 +12,11 @@ + + #include + ++/* ++ * Please use this 3-part article as a reference for writing new tracepoints: ++ * https://lwn.net/Articles/379903/ ++ */ ++ + /* For logging errors in read or write */ + DECLARE_EVENT_CLASS(smb3_rw_err_class, + TP_PROTO(unsigned int xid, +@@ -529,16 +534,16 @@ DECLARE_EVENT_CLASS(smb3_exit_err_class, + TP_ARGS(xid, func_name, rc), + TP_STRUCT__entry( + __field(unsigned int, xid) +- __field(const char *, func_name) ++ __string(func_name, func_name) + __field(int, rc) + ), + TP_fast_assign( + __entry->xid = xid; +- __entry->func_name = func_name; ++ __assign_str(func_name, func_name); + __entry->rc = rc; + ), + TP_printk("\t%s: xid=%u rc=%d", +- __entry->func_name, __entry->xid, __entry->rc) ++ __get_str(func_name), __entry->xid, __entry->rc) + ) + + #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ +@@ -583,14 +588,14 @@ DECLARE_EVENT_CLASS(smb3_enter_exit_clas + TP_ARGS(xid, func_name), + TP_STRUCT__entry( + __field(unsigned int, xid) +- __field(const char *, func_name) ++ __string(func_name, func_name) + ), + TP_fast_assign( + __entry->xid = xid; +- __entry->func_name = func_name; ++ __assign_str(func_name, func_name); + ), + TP_printk("\t%s: xid=%u", +- __entry->func_name, __entry->xid) ++ __get_str(func_name), __entry->xid) + ) + + #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ +@@ -857,16 +862,16 @@ DECLARE_EVENT_CLASS(smb3_reconnect_class + TP_STRUCT__entry( + __field(__u64, currmid) + __field(__u64, conn_id) +- __field(char *, hostname) ++ __string(hostname, hostname) + ), + TP_fast_assign( + __entry->currmid = currmid; + __entry->conn_id = conn_id; +- __entry->hostname = hostname; ++ __assign_str(hostname, hostname); + ), + TP_printk("conn_id=0x%llx server=%s current_mid=%llu", + __entry->conn_id, +- __entry->hostname, ++ __get_str(hostname), + __entry->currmid) + ) + +@@ -891,7 +896,7 @@ DECLARE_EVENT_CLASS(smb3_credit_class, + TP_STRUCT__entry( + __field(__u64, currmid) + __field(__u64, conn_id) +- __field(char *, hostname) ++ __string(hostname, hostname) + __field(int, credits) + __field(int, credits_to_add) + __field(int, in_flight) +@@ -899,7 +904,7 @@ DECLARE_EVENT_CLASS(smb3_credit_class, + TP_fast_assign( + __entry->currmid = currmid; + __entry->conn_id = conn_id; +- __entry->hostname = hostname; ++ __assign_str(hostname, hostname); + __entry->credits = credits; + __entry->credits_to_add = credits_to_add; + __entry->in_flight = in_flight; +@@ -907,7 +912,7 @@ DECLARE_EVENT_CLASS(smb3_credit_class, + TP_printk("conn_id=0x%llx server=%s current_mid=%llu " + "credits=%d credit_change=%d in_flight=%d", + __entry->conn_id, +- __entry->hostname, ++ __get_str(hostname), + __entry->currmid, + __entry->credits, + __entry->credits_to_add, diff --git a/queue-5.12/cifs-set-server-cipher_type-to-aes-128-ccm-for-smb3.0.patch b/queue-5.12/cifs-set-server-cipher_type-to-aes-128-ccm-for-smb3.0.patch new file mode 100644 index 00000000000..48ddeab9fb8 --- /dev/null +++ b/queue-5.12/cifs-set-server-cipher_type-to-aes-128-ccm-for-smb3.0.patch @@ -0,0 +1,48 @@ +From 6d2fcfe6b517fe7cbf2687adfb0a16cdcd5d9243 Mon Sep 17 00:00:00 2001 +From: Aurelien Aptel +Date: Fri, 21 May 2021 17:19:27 +0200 +Subject: cifs: set server->cipher_type to AES-128-CCM for SMB3.0 + +From: Aurelien Aptel + +commit 6d2fcfe6b517fe7cbf2687adfb0a16cdcd5d9243 upstream. + +SMB3.0 doesn't have encryption negotiate context but simply uses +the SMB2_GLOBAL_CAP_ENCRYPTION flag. + +When that flag is present in the neg response cifs.ko uses AES-128-CCM +which is the only cipher available in this context. + +cipher_type was set to the server cipher only when parsing encryption +negotiate context (SMB3.1.1). + +For SMB3.0 it was set to 0. This means cipher_type value can be 0 or 1 +for AES-128-CCM. + +Fix this by checking for SMB3.0 and encryption capability and setting +cipher_type appropriately. + +Signed-off-by: Aurelien Aptel +Cc: +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/cifs/smb2pdu.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/fs/cifs/smb2pdu.c ++++ b/fs/cifs/smb2pdu.c +@@ -958,6 +958,13 @@ SMB2_negotiate(const unsigned int xid, s + /* Internal types */ + server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES; + ++ /* ++ * SMB3.0 supports only 1 cipher and doesn't have a encryption neg context ++ * Set the cipher type manually. ++ */ ++ if (server->dialect == SMB30_PROT_ID && (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) ++ server->cipher_type = SMB2_ENCRYPTION_AES128_CCM; ++ + security_blob = smb2_get_data_area_len(&blob_offset, &blob_length, + (struct smb2_sync_hdr *)rsp); + /* diff --git a/queue-5.12/iommu-vt-d-fix-sysfs-leak-in-alloc_iommu.patch b/queue-5.12/iommu-vt-d-fix-sysfs-leak-in-alloc_iommu.patch new file mode 100644 index 00000000000..0d41297f967 --- /dev/null +++ b/queue-5.12/iommu-vt-d-fix-sysfs-leak-in-alloc_iommu.patch @@ -0,0 +1,44 @@ +From 0ee74d5a48635c848c20f152d0d488bf84641304 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer +Date: Tue, 25 May 2021 15:08:02 +0800 +Subject: iommu/vt-d: Fix sysfs leak in alloc_iommu() + +From: Rolf Eike Beer + +commit 0ee74d5a48635c848c20f152d0d488bf84641304 upstream. + +iommu_device_sysfs_add() is called before, so is has to be cleaned on subsequent +errors. + +Fixes: 39ab9555c2411 ("iommu: Add sysfs bindings for struct iommu_device") +Cc: stable@vger.kernel.org # 4.11.x +Signed-off-by: Rolf Eike Beer +Acked-by: Lu Baolu +Link: https://lore.kernel.org/r/17411490.HIIP88n32C@mobilepool36.emlix.com +Link: https://lore.kernel.org/r/20210525070802.361755-2-baolu.lu@linux.intel.com +Signed-off-by: Joerg Roedel +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iommu/intel/dmar.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/iommu/intel/dmar.c ++++ b/drivers/iommu/intel/dmar.c +@@ -1144,7 +1144,7 @@ static int alloc_iommu(struct dmar_drhd_ + + err = iommu_device_register(&iommu->iommu); + if (err) +- goto err_unmap; ++ goto err_sysfs; + } + + drhd->iommu = iommu; +@@ -1152,6 +1152,8 @@ static int alloc_iommu(struct dmar_drhd_ + + return 0; + ++err_sysfs: ++ iommu_device_sysfs_remove(&iommu->iommu); + err_unmap: + unmap_iommu(iommu); + error_free_seq_id: diff --git a/queue-5.12/mtd-rawnand-cs553x-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-cs553x-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..337ce826f5a --- /dev/null +++ b/queue-5.12/mtd-rawnand-cs553x-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,60 @@ +From 56a8d3fd1f342d10ee7b27e9ac0f4d00b5fbb91c Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:34 +0200 +Subject: mtd: rawnand: cs553x: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit 56a8d3fd1f342d10ee7b27e9ac0f4d00b5fbb91c upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-2-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/cs553x_nand.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/cs553x_nand.c ++++ b/drivers/mtd/nand/raw/cs553x_nand.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -240,6 +241,15 @@ static int cs_calculate_ecc(struct nand_ + return 0; + } + ++static int cs553x_ecc_correct(struct nand_chip *chip, ++ unsigned char *buf, ++ unsigned char *read_ecc, ++ unsigned char *calc_ecc) ++{ ++ return ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); ++} ++ + static struct cs553x_nand_controller *controllers[4]; + + static int cs553x_attach_chip(struct nand_chip *chip) +@@ -251,7 +261,7 @@ static int cs553x_attach_chip(struct nan + chip->ecc.bytes = 3; + chip->ecc.hwctl = cs_enable_hwecc; + chip->ecc.calculate = cs_calculate_ecc; +- chip->ecc.correct = rawnand_sw_hamming_correct; ++ chip->ecc.correct = cs553x_ecc_correct; + chip->ecc.strength = 1; + + return 0; diff --git a/queue-5.12/mtd-rawnand-fsmc-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-fsmc-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..341996df67e --- /dev/null +++ b/queue-5.12/mtd-rawnand-fsmc-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,60 @@ +From ad9ffdce453934cdc22fac0a0268119bd630260f Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:35 +0200 +Subject: mtd: rawnand: fsmc: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit ad9ffdce453934cdc22fac0a0268119bd630260f upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-3-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/fsmc_nand.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/fsmc_nand.c ++++ b/drivers/mtd/nand/raw/fsmc_nand.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -432,6 +433,15 @@ static int fsmc_read_hwecc_ecc1(struct n + return 0; + } + ++static int fsmc_correct_ecc1(struct nand_chip *chip, ++ unsigned char *buf, ++ unsigned char *read_ecc, ++ unsigned char *calc_ecc) ++{ ++ return ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); ++} ++ + /* Count the number of 0's in buff upto a max of max_bits */ + static int count_written_bits(u8 *buff, int size, int max_bits) + { +@@ -917,7 +927,7 @@ static int fsmc_nand_attach_chip(struct + case NAND_ECC_ENGINE_TYPE_ON_HOST: + dev_info(host->dev, "Using 1-bit HW ECC scheme\n"); + nand->ecc.calculate = fsmc_read_hwecc_ecc1; +- nand->ecc.correct = rawnand_sw_hamming_correct; ++ nand->ecc.correct = fsmc_correct_ecc1; + nand->ecc.hwctl = fsmc_enable_hwecc; + nand->ecc.bytes = 3; + nand->ecc.strength = 1; diff --git a/queue-5.12/mtd-rawnand-lpc32xx_slc-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-lpc32xx_slc-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..82f78af241b --- /dev/null +++ b/queue-5.12/mtd-rawnand-lpc32xx_slc-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,67 @@ +From c4b7d7c480d607e4f52d310d9d16b194868d0917 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:36 +0200 +Subject: mtd: rawnand: lpc32xx_slc: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit c4b7d7c480d607e4f52d310d9d16b194868d0917 upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Cc: Vladimir Zapolskiy +Reported-by: Trevor Woerner +Signed-off-by: Miquel Raynal +Tested-by: Trevor Woerner +Acked-by: Vladimir Zapolskiy +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-4-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/lpc32xx_slc.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/lpc32xx_slc.c ++++ b/drivers/mtd/nand/raw/lpc32xx_slc.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + #define LPC32XX_MODNAME "lpc32xx-nand" + +@@ -345,6 +346,18 @@ static int lpc32xx_nand_ecc_calculate(st + } + + /* ++ * Corrects the data ++ */ ++static int lpc32xx_nand_ecc_correct(struct nand_chip *chip, ++ unsigned char *buf, ++ unsigned char *read_ecc, ++ unsigned char *calc_ecc) ++{ ++ return ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); ++} ++ ++/* + * Read a single byte from NAND device + */ + static uint8_t lpc32xx_nand_read_byte(struct nand_chip *chip) +@@ -802,7 +815,7 @@ static int lpc32xx_nand_attach_chip(stru + chip->ecc.write_oob = lpc32xx_nand_write_oob_syndrome; + chip->ecc.read_oob = lpc32xx_nand_read_oob_syndrome; + chip->ecc.calculate = lpc32xx_nand_ecc_calculate; +- chip->ecc.correct = rawnand_sw_hamming_correct; ++ chip->ecc.correct = lpc32xx_nand_ecc_correct; + chip->ecc.hwctl = lpc32xx_nand_ecc_enable; + + /* diff --git a/queue-5.12/mtd-rawnand-ndfc-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-ndfc-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..ad162d8ebcc --- /dev/null +++ b/queue-5.12/mtd-rawnand-ndfc-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,60 @@ +From 3e09c0252501829b14b10f14e1982aaab77d0b80 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:37 +0200 +Subject: mtd: rawnand: ndfc: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit 3e09c0252501829b14b10f14e1982aaab77d0b80 upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-5-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/ndfc.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/ndfc.c ++++ b/drivers/mtd/nand/raw/ndfc.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -100,6 +101,15 @@ static int ndfc_calculate_ecc(struct nan + return 0; + } + ++static int ndfc_correct_ecc(struct nand_chip *chip, ++ unsigned char *buf, ++ unsigned char *read_ecc, ++ unsigned char *calc_ecc) ++{ ++ return ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); ++} ++ + /* + * Speedups for buffer read/write/verify + * +@@ -145,7 +155,7 @@ static int ndfc_chip_init(struct ndfc_co + chip->controller = &ndfc->ndfc_control; + chip->legacy.read_buf = ndfc_read_buf; + chip->legacy.write_buf = ndfc_write_buf; +- chip->ecc.correct = rawnand_sw_hamming_correct; ++ chip->ecc.correct = ndfc_correct_ecc; + chip->ecc.hwctl = ndfc_enable_hwecc; + chip->ecc.calculate = ndfc_calculate_ecc; + chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST; diff --git a/queue-5.12/mtd-rawnand-sharpsl-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-sharpsl-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..92b387f65ea --- /dev/null +++ b/queue-5.12/mtd-rawnand-sharpsl-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,60 @@ +From 46fcb57e6b7283533ebf8ba17a6bd30fa88bdc9f Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:38 +0200 +Subject: mtd: rawnand: sharpsl: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit 46fcb57e6b7283533ebf8ba17a6bd30fa88bdc9f upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-6-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/sharpsl.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/sharpsl.c ++++ b/drivers/mtd/nand/raw/sharpsl.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -96,6 +97,15 @@ static int sharpsl_nand_calculate_ecc(st + return readb(sharpsl->io + ECCCNTR) != 0; + } + ++static int sharpsl_nand_correct_ecc(struct nand_chip *chip, ++ unsigned char *buf, ++ unsigned char *read_ecc, ++ unsigned char *calc_ecc) ++{ ++ return ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); ++} ++ + static int sharpsl_attach_chip(struct nand_chip *chip) + { + if (chip->ecc.engine_type != NAND_ECC_ENGINE_TYPE_ON_HOST) +@@ -106,7 +116,7 @@ static int sharpsl_attach_chip(struct na + chip->ecc.strength = 1; + chip->ecc.hwctl = sharpsl_nand_enable_hwecc; + chip->ecc.calculate = sharpsl_nand_calculate_ecc; +- chip->ecc.correct = rawnand_sw_hamming_correct; ++ chip->ecc.correct = sharpsl_nand_correct_ecc; + + return 0; + } diff --git a/queue-5.12/mtd-rawnand-tmio-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-tmio-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..a1106f78aa4 --- /dev/null +++ b/queue-5.12/mtd-rawnand-tmio-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,51 @@ +From 6a4c5ada577467a5f79e06f2c5e69c09983c22fb Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:39 +0200 +Subject: mtd: rawnand: tmio: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit 6a4c5ada577467a5f79e06f2c5e69c09983c22fb upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-7-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/tmio_nand.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/drivers/mtd/nand/raw/tmio_nand.c ++++ b/drivers/mtd/nand/raw/tmio_nand.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -292,11 +293,12 @@ static int tmio_nand_correct_data(struct + int r0, r1; + + /* assume ecc.size = 512 and ecc.bytes = 6 */ +- r0 = rawnand_sw_hamming_correct(chip, buf, read_ecc, calc_ecc); ++ r0 = ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); + if (r0 < 0) + return r0; +- r1 = rawnand_sw_hamming_correct(chip, buf + 256, read_ecc + 3, +- calc_ecc + 3); ++ r1 = ecc_sw_hamming_correct(buf + 256, read_ecc + 3, calc_ecc + 3, ++ chip->ecc.size, false); + if (r1 < 0) + return r1; + return r0 + r1; diff --git a/queue-5.12/mtd-rawnand-txx9ndfmc-fix-external-use-of-sw-hamming-ecc-helper.patch b/queue-5.12/mtd-rawnand-txx9ndfmc-fix-external-use-of-sw-hamming-ecc-helper.patch new file mode 100644 index 00000000000..6e090c45537 --- /dev/null +++ b/queue-5.12/mtd-rawnand-txx9ndfmc-fix-external-use-of-sw-hamming-ecc-helper.patch @@ -0,0 +1,46 @@ +From 3d227a0b0ce319edbff6fd0d8af4d66689e477cc Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 13 Apr 2021 18:18:40 +0200 +Subject: mtd: rawnand: txx9ndfmc: Fix external use of SW Hamming ECC helper + +From: Miquel Raynal + +commit 3d227a0b0ce319edbff6fd0d8af4d66689e477cc upstream. + +Since the Hamming software ECC engine has been updated to become a +proper and independent ECC engine, it is now mandatory to either +initialize the engine before using any one of his functions or use one +of the bare helpers which only perform the calculations. As there is no +actual need for a proper ECC initialization, let's just use the bare +helper instead of the rawnand one. + +Fixes: 90ccf0a0192f ("mtd: nand: ecc-hamming: Rename the exported functions") +Cc: stable@vger.kernel.org +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20210413161840.345208-8-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/mtd/nand/raw/txx9ndfmc.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/raw/txx9ndfmc.c ++++ b/drivers/mtd/nand/raw/txx9ndfmc.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -193,8 +194,8 @@ static int txx9ndfmc_correct_data(struct + int stat; + + for (eccsize = chip->ecc.size; eccsize > 0; eccsize -= 256) { +- stat = rawnand_sw_hamming_correct(chip, buf, read_ecc, +- calc_ecc); ++ stat = ecc_sw_hamming_correct(buf, read_ecc, calc_ecc, ++ chip->ecc.size, false); + if (stat < 0) + return stat; + corrected += stat; diff --git a/queue-5.12/nfsv4-fix-a-null-pointer-dereference-in-pnfs_mark_matching_lsegs_return.patch b/queue-5.12/nfsv4-fix-a-null-pointer-dereference-in-pnfs_mark_matching_lsegs_return.patch new file mode 100644 index 00000000000..6c35712a03b --- /dev/null +++ b/queue-5.12/nfsv4-fix-a-null-pointer-dereference-in-pnfs_mark_matching_lsegs_return.patch @@ -0,0 +1,60 @@ +From a421d218603ffa822a0b8045055c03eae394a7eb Mon Sep 17 00:00:00 2001 +From: Anna Schumaker +Date: Wed, 19 May 2021 12:54:51 -0400 +Subject: NFSv4: Fix a NULL pointer dereference in pnfs_mark_matching_lsegs_return() + +From: Anna Schumaker + +commit a421d218603ffa822a0b8045055c03eae394a7eb upstream. + +Commit de144ff4234f changes _pnfs_return_layout() to call +pnfs_mark_matching_lsegs_return() passing NULL as the struct +pnfs_layout_range argument. Unfortunately, +pnfs_mark_matching_lsegs_return() doesn't check if we have a value here +before dereferencing it, causing an oops. + +I'm able to hit this crash consistently when running connectathon basic +tests on NFS v4.1/v4.2 against Ontap. + +Fixes: de144ff4234f ("NFSv4: Don't discard segments marked for return in _pnfs_return_layout()") +Cc: stable@vger.kernel.org +Signed-off-by: Anna Schumaker +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman +--- + fs/nfs/pnfs.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- a/fs/nfs/pnfs.c ++++ b/fs/nfs/pnfs.c +@@ -1317,6 +1317,11 @@ _pnfs_return_layout(struct inode *ino) + { + struct pnfs_layout_hdr *lo = NULL; + struct nfs_inode *nfsi = NFS_I(ino); ++ struct pnfs_layout_range range = { ++ .iomode = IOMODE_ANY, ++ .offset = 0, ++ .length = NFS4_MAX_UINT64, ++ }; + LIST_HEAD(tmp_list); + const struct cred *cred; + nfs4_stateid stateid; +@@ -1344,16 +1349,10 @@ _pnfs_return_layout(struct inode *ino) + } + valid_layout = pnfs_layout_is_valid(lo); + pnfs_clear_layoutcommit(ino, &tmp_list); +- pnfs_mark_matching_lsegs_return(lo, &tmp_list, NULL, 0); ++ pnfs_mark_matching_lsegs_return(lo, &tmp_list, &range, 0); + +- if (NFS_SERVER(ino)->pnfs_curr_ld->return_range) { +- struct pnfs_layout_range range = { +- .iomode = IOMODE_ANY, +- .offset = 0, +- .length = NFS4_MAX_UINT64, +- }; ++ if (NFS_SERVER(ino)->pnfs_curr_ld->return_range) + NFS_SERVER(ino)->pnfs_curr_ld->return_range(lo, &range); +- } + + /* Don't send a LAYOUTRETURN if list was initially empty */ + if (!test_bit(NFS_LAYOUT_RETURN_REQUESTED, &lo->plh_flags) || diff --git a/queue-5.12/scsi-target-core-avoid-smp_processor_id-in-preemptible-code.patch b/queue-5.12/scsi-target-core-avoid-smp_processor_id-in-preemptible-code.patch new file mode 100644 index 00000000000..994bcfbc73c --- /dev/null +++ b/queue-5.12/scsi-target-core-avoid-smp_processor_id-in-preemptible-code.patch @@ -0,0 +1,124 @@ +From 70ca3c57ff914113f681e657634f7fbfa68e1ad1 Mon Sep 17 00:00:00 2001 +From: Shin'ichiro Kawasaki +Date: Sat, 15 May 2021 16:03:15 +0900 +Subject: scsi: target: core: Avoid smp_processor_id() in preemptible code + +From: Shin'ichiro Kawasaki + +commit 70ca3c57ff914113f681e657634f7fbfa68e1ad1 upstream. + +The BUG message "BUG: using smp_processor_id() in preemptible [00000000] +code" was observed for TCMU devices with kernel config DEBUG_PREEMPT. + +The message was observed when blktests block/005 was run on TCMU devices +with fileio backend or user:zbc backend [1]. The commit 1130b499b4a7 +("scsi: target: tcm_loop: Use LIO wq cmd submission helper") triggered the +symptom. The commit modified work queue to handle commands and changed +'current->nr_cpu_allowed' at smp_processor_id() call. + +The message was also observed at system shutdown when TCMU devices were not +cleaned up [2]. The function smp_processor_id() was called in SCSI host +work queue for abort handling, and triggered the BUG message. This symptom +was observed regardless of the commit 1130b499b4a7 ("scsi: target: +tcm_loop: Use LIO wq cmd submission helper"). + +To avoid the preemptible code check at smp_processor_id(), get CPU ID with +raw_smp_processor_id() instead. The CPU ID is used for performance +improvement then thread move to other CPU will not affect the code. + +[1] + +[ 56.468103] run blktests block/005 at 2021-05-12 14:16:38 +[ 57.369473] check_preemption_disabled: 85 callbacks suppressed +[ 57.369480] BUG: using smp_processor_id() in preemptible [00000000] code: fio/1511 +[ 57.369506] BUG: using smp_processor_id() in preemptible [00000000] code: fio/1510 +[ 57.369512] BUG: using smp_processor_id() in preemptible [00000000] code: fio/1506 +[ 57.369552] caller is __target_init_cmd+0x157/0x170 [target_core_mod] +[ 57.369606] CPU: 4 PID: 1506 Comm: fio Not tainted 5.13.0-rc1+ #34 +[ 57.369613] Hardware name: System manufacturer System Product Name/PRIME Z270-A, BIOS 1302 03/15/2018 +[ 57.369617] Call Trace: +[ 57.369621] BUG: using smp_processor_id() in preemptible [00000000] code: fio/1507 +[ 57.369628] dump_stack+0x6d/0x89 +[ 57.369642] check_preemption_disabled+0xc8/0xd0 +[ 57.369628] caller is __target_init_cmd+0x157/0x170 [target_core_mod] +[ 57.369655] __target_init_cmd+0x157/0x170 [target_core_mod] +[ 57.369695] target_init_cmd+0x76/0x90 [target_core_mod] +[ 57.369732] tcm_loop_queuecommand+0x109/0x210 [tcm_loop] +[ 57.369744] scsi_queue_rq+0x38e/0xc40 +[ 57.369761] __blk_mq_try_issue_directly+0x109/0x1c0 +[ 57.369779] blk_mq_try_issue_directly+0x43/0x90 +[ 57.369790] blk_mq_submit_bio+0x4e5/0x5d0 +[ 57.369812] submit_bio_noacct+0x46e/0x4e0 +[ 57.369830] __blkdev_direct_IO_simple+0x1a3/0x2d0 +[ 57.369859] ? set_init_blocksize.isra.0+0x60/0x60 +[ 57.369880] generic_file_read_iter+0x89/0x160 +[ 57.369898] blkdev_read_iter+0x44/0x60 +[ 57.369906] new_sync_read+0x102/0x170 +[ 57.369929] vfs_read+0xd4/0x160 +[ 57.369941] __x64_sys_pread64+0x6e/0xa0 +[ 57.369946] ? lockdep_hardirqs_on+0x79/0x100 +[ 57.369958] do_syscall_64+0x3a/0x70 +[ 57.369965] entry_SYSCALL_64_after_hwframe+0x44/0xae +[ 57.369973] RIP: 0033:0x7f7ed4c1399f +[ 57.369979] Code: 08 89 3c 24 48 89 4c 24 18 e8 7d f3 ff ff 4c 8b 54 24 18 48 8b 54 24 10 41 89 c0 48 8b 74 24 08 8b 3c 24 b8 11 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 31 44 89 c7 48 89 04 24 e8 cd f3 ff ff 48 8b +[ 57.369983] RSP: 002b:00007ffd7918c580 EFLAGS: 00000293 ORIG_RAX: 0000000000000011 +[ 57.369990] RAX: ffffffffffffffda RBX: 00000000015b4540 RCX: 00007f7ed4c1399f +[ 57.369993] RDX: 0000000000001000 RSI: 00000000015de000 RDI: 0000000000000009 +[ 57.369996] RBP: 00000000015b4540 R08: 0000000000000000 R09: 0000000000000001 +[ 57.369999] R10: 0000000000e5c000 R11: 0000000000000293 R12: 00007f7eb5269a70 +[ 57.370002] R13: 0000000000000000 R14: 0000000000001000 R15: 00000000015b4568 +[ 57.370031] CPU: 7 PID: 1507 Comm: fio Not tainted 5.13.0-rc1+ #34 +[ 57.370036] Hardware name: System manufacturer System Product Name/PRIME Z270-A, BIOS 1302 03/15/2018 +[ 57.370039] Call Trace: +[ 57.370045] dump_stack+0x6d/0x89 +[ 57.370056] check_preemption_disabled+0xc8/0xd0 +[ 57.370068] __target_init_cmd+0x157/0x170 [target_core_mod] +[ 57.370121] target_init_cmd+0x76/0x90 [target_core_mod] +[ 57.370178] tcm_loop_queuecommand+0x109/0x210 [tcm_loop] +[ 57.370197] scsi_queue_rq+0x38e/0xc40 +[ 57.370224] __blk_mq_try_issue_directly+0x109/0x1c0 +... + +[2] + +[ 117.458597] BUG: using smp_processor_id() in preemptible [00000000] code: kworker/u16:8 +[ 117.467279] caller is __target_init_cmd+0x157/0x170 [target_core_mod] +[ 117.473893] CPU: 1 PID: 418 Comm: kworker/u16:6 Not tainted 5.13.0-rc1+ #34 +[ 117.481150] Hardware name: System manufacturer System Product Name/PRIME Z270-A, BIOS 8 +[ 117.481153] Workqueue: scsi_tmf_7 scmd_eh_abort_handler +[ 117.481156] Call Trace: +[ 117.481158] dump_stack+0x6d/0x89 +[ 117.481162] check_preemption_disabled+0xc8/0xd0 +[ 117.512575] target_submit_tmr+0x41/0x150 [target_core_mod] +[ 117.519705] tcm_loop_issue_tmr+0xa7/0x100 [tcm_loop] +[ 117.524913] tcm_loop_abort_task+0x43/0x60 [tcm_loop] +[ 117.530137] scmd_eh_abort_handler+0x7b/0x230 +[ 117.534681] process_one_work+0x268/0x580 +[ 117.538862] worker_thread+0x55/0x3b0 +[ 117.542652] ? process_one_work+0x580/0x580 +[ 117.548351] kthread+0x143/0x160 +[ 117.551675] ? kthread_create_worker_on_cpu+0x40/0x40 +[ 117.556873] ret_from_fork+0x1f/0x30 + +Link: https://lore.kernel.org/r/20210515070315.215801-1-shinichiro.kawasaki@wdc.com +Fixes: 1526d9f10c61 ("scsi: target: Make state_list per CPU") +Cc: stable@vger.kernel.org # v5.11+ +Reviewed-by: Mike Christie +Signed-off-by: Shin'ichiro Kawasaki +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/target/target_core_transport.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/target/target_core_transport.c ++++ b/drivers/target/target_core_transport.c +@@ -1400,7 +1400,7 @@ void transport_init_se_cmd( + cmd->orig_fe_lun = unpacked_lun; + + if (!(cmd->se_cmd_flags & SCF_USE_CPUID)) +- cmd->cpuid = smp_processor_id(); ++ cmd->cpuid = raw_smp_processor_id(); + + cmd->state_active = false; + } diff --git a/queue-5.12/series b/queue-5.12/series new file mode 100644 index 00000000000..b85743e938e --- /dev/null +++ b/queue-5.12/series @@ -0,0 +1,23 @@ +alsa-hda-realtek-the-bass-speaker-can-t-output-sound-on-yoga-9i.patch +alsa-hda-realtek-headphone-volume-is-controlled-by-front-mixer.patch +alsa-hda-realtek-chain-in-pop-reduction-fixup-for-thinkstation-p340.patch +alsa-hda-realtek-fix-mute-micmute-leds-for-hp-855-g8.patch +alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-g8.patch +alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-15-g8.patch +alsa-hda-realtek-fix-mute-micmute-leds-and-speaker-for-hp-zbook-fury-17-g8.patch +alsa-usb-audio-fix-control-request-direction.patch +alsa-usb-audio-scarlett2-fix-device-hang-with-ehci-pci.patch +alsa-usb-audio-scarlett2-improve-driver-startup-messages.patch +cifs-fix-string-declarations-and-assignments-in-tracepoints.patch +cifs-set-server-cipher_type-to-aes-128-ccm-for-smb3.0.patch +mtd-rawnand-cs553x-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-txx9ndfmc-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-sharpsl-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-lpc32xx_slc-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-ndfc-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-tmio-fix-external-use-of-sw-hamming-ecc-helper.patch +mtd-rawnand-fsmc-fix-external-use-of-sw-hamming-ecc-helper.patch +can-isotp-prevent-race-between-isotp_bind-and-isotp_setsockopt.patch +nfsv4-fix-a-null-pointer-dereference-in-pnfs_mark_matching_lsegs_return.patch +scsi-target-core-avoid-smp_processor_id-in-preemptible-code.patch +iommu-vt-d-fix-sysfs-leak-in-alloc_iommu.patch