]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Aug 2022 09:47:14 +0000 (11:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Aug 2022 09:47:14 +0000 (11:47 +0200)
added patches:
alsa-hda-cirrus-support-for-imac-12-1-model.patch
alsa-hda-conexant-add-quirk-for-lenovo-20149-notebook-model.patch
alsa-hda-realtek-add-a-quirk-for-hp-omen-15-8786-mute-led.patch
alsa-hda-realtek-add-quirk-for-another-asus-k42jz-model.patch
crypto-ccp-use-kzalloc-for-sev-ioctl-interfaces-to-prevent-kernel-memory-leak.patch
fbcon-fix-accelerated-fbdev-scrolling-while-logo-is-still-shown.patch
fbcon-fix-boundary-checks-for-fbcon-vc-n1-n2-parameters.patch
fix-short-copy-handling-in-copy_mc_pipe_to_iter.patch
fs-add-missing-umask-strip-in-vfs_tmpfile.patch
loongarch-cpuinfo-fix-a-warning-for-config_cpumask_offstack.patch
ovl-drop-warn_on-dentry-is-null-in-ovl_encode_fh.patch
thermal-sysfs-fix-cooling_device_stats_setup-error-code-path.patch
tty-8250-add-support-for-brainboxes-px-cards.patch
tty-vt-initialize-unicode-screen-buffer.patch
usbnet-fix-linkwatch-use-after-free-on-disconnect.patch
usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch
vfs-check-the-truncate-maximum-size-in-inode_newsize_ok.patch

18 files changed:
queue-5.19/alsa-hda-cirrus-support-for-imac-12-1-model.patch [new file with mode: 0644]
queue-5.19/alsa-hda-conexant-add-quirk-for-lenovo-20149-notebook-model.patch [new file with mode: 0644]
queue-5.19/alsa-hda-realtek-add-a-quirk-for-hp-omen-15-8786-mute-led.patch [new file with mode: 0644]
queue-5.19/alsa-hda-realtek-add-quirk-for-another-asus-k42jz-model.patch [new file with mode: 0644]
queue-5.19/crypto-ccp-use-kzalloc-for-sev-ioctl-interfaces-to-prevent-kernel-memory-leak.patch [new file with mode: 0644]
queue-5.19/fbcon-fix-accelerated-fbdev-scrolling-while-logo-is-still-shown.patch [new file with mode: 0644]
queue-5.19/fbcon-fix-boundary-checks-for-fbcon-vc-n1-n2-parameters.patch [new file with mode: 0644]
queue-5.19/fix-short-copy-handling-in-copy_mc_pipe_to_iter.patch [new file with mode: 0644]
queue-5.19/fs-add-missing-umask-strip-in-vfs_tmpfile.patch [new file with mode: 0644]
queue-5.19/loongarch-cpuinfo-fix-a-warning-for-config_cpumask_offstack.patch [new file with mode: 0644]
queue-5.19/ovl-drop-warn_on-dentry-is-null-in-ovl_encode_fh.patch [new file with mode: 0644]
queue-5.19/series
queue-5.19/thermal-sysfs-fix-cooling_device_stats_setup-error-code-path.patch [new file with mode: 0644]
queue-5.19/tty-8250-add-support-for-brainboxes-px-cards.patch [new file with mode: 0644]
queue-5.19/tty-vt-initialize-unicode-screen-buffer.patch [new file with mode: 0644]
queue-5.19/usbnet-fix-linkwatch-use-after-free-on-disconnect.patch [new file with mode: 0644]
queue-5.19/usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch [new file with mode: 0644]
queue-5.19/vfs-check-the-truncate-maximum-size-in-inode_newsize_ok.patch [new file with mode: 0644]

diff --git a/queue-5.19/alsa-hda-cirrus-support-for-imac-12-1-model.patch b/queue-5.19/alsa-hda-cirrus-support-for-imac-12-1-model.patch
new file mode 100644 (file)
index 0000000..cfb912a
--- /dev/null
@@ -0,0 +1,34 @@
+From 74bba640d69914cf832b87f6bbb700e5ba430672 Mon Sep 17 00:00:00 2001
+From: Allen Ballway <ballway@chromium.org>
+Date: Wed, 10 Aug 2022 15:27:22 +0000
+Subject: ALSA: hda/cirrus - support for iMac 12,1 model
+
+From: Allen Ballway <ballway@chromium.org>
+
+commit 74bba640d69914cf832b87f6bbb700e5ba430672 upstream.
+
+The 12,1 model requires the same configuration as the 12,2 model
+to enable headphones but has a different codec SSID. Adds
+12,1 SSID for matching quirk.
+
+[ re-sorted in SSID order by tiwai ]
+
+Signed-off-by: Allen Ballway <ballway@chromium.org>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20220810152701.1.I902c2e591bbf8de9acb649d1322fa1f291849266@changeid
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_cirrus.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_cirrus.c
++++ b/sound/pci/hda/patch_cirrus.c
+@@ -395,6 +395,7 @@ static const struct snd_pci_quirk cs420x
+       /* codec SSID */
+       SND_PCI_QUIRK(0x106b, 0x0600, "iMac 14,1", CS420X_IMAC27_122),
++      SND_PCI_QUIRK(0x106b, 0x0900, "iMac 12,1", CS420X_IMAC27_122),
+       SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81),
+       SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122),
+       SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101),
diff --git a/queue-5.19/alsa-hda-conexant-add-quirk-for-lenovo-20149-notebook-model.patch b/queue-5.19/alsa-hda-conexant-add-quirk-for-lenovo-20149-notebook-model.patch
new file mode 100644 (file)
index 0000000..6700f4f
--- /dev/null
@@ -0,0 +1,57 @@
+From f83bb2592482fe94c6eea07a8121763c80f36ce5 Mon Sep 17 00:00:00 2001
+From: Meng Tang <tangmeng@uniontech.com>
+Date: Mon, 8 Aug 2022 15:34:06 +0800
+Subject: ALSA: hda/conexant: Add quirk for LENOVO 20149 Notebook model
+
+From: Meng Tang <tangmeng@uniontech.com>
+
+commit f83bb2592482fe94c6eea07a8121763c80f36ce5 upstream.
+
+There is another LENOVO 20149 (Type1Sku0) Notebook model with
+CX20590, the device PCI SSID is 17aa:3977, which headphones are
+not responding, that requires the quirk CXT_PINCFG_LENOVO_NOTEBOOK.
+Add the corresponding entry to the quirk table.
+
+Signed-off-by: Meng Tang <tangmeng@uniontech.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20220808073406.19460-1-tangmeng@uniontech.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_conexant.c |   11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_conexant.c
++++ b/sound/pci/hda/patch_conexant.c
+@@ -222,6 +222,7 @@ enum {
+       CXT_PINCFG_LEMOTE_A1205,
+       CXT_PINCFG_COMPAQ_CQ60,
+       CXT_FIXUP_STEREO_DMIC,
++      CXT_PINCFG_LENOVO_NOTEBOOK,
+       CXT_FIXUP_INC_MIC_BOOST,
+       CXT_FIXUP_HEADPHONE_MIC_PIN,
+       CXT_FIXUP_HEADPHONE_MIC,
+@@ -772,6 +773,14 @@ static const struct hda_fixup cxt_fixups
+               .type = HDA_FIXUP_FUNC,
+               .v.func = cxt_fixup_stereo_dmic,
+       },
++      [CXT_PINCFG_LENOVO_NOTEBOOK] = {
++              .type = HDA_FIXUP_PINS,
++              .v.pins = (const struct hda_pintbl[]) {
++                      { 0x1a, 0x05d71030 },
++                      { }
++              },
++              .chain_id = CXT_FIXUP_STEREO_DMIC,
++      },
+       [CXT_FIXUP_INC_MIC_BOOST] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = cxt5066_increase_mic_boost,
+@@ -971,7 +980,7 @@ static const struct snd_pci_quirk cxt506
+       SND_PCI_QUIRK(0x17aa, 0x3905, "Lenovo G50-30", CXT_FIXUP_STEREO_DMIC),
+       SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC),
+       SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC),
+-      SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC),
++      SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_PINCFG_LENOVO_NOTEBOOK),
+       SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo G50-70", CXT_FIXUP_STEREO_DMIC),
+       SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC),
+       SND_PCI_QUIRK_VENDOR(0x17aa, "Thinkpad", CXT_FIXUP_THINKPAD_ACPI),
diff --git a/queue-5.19/alsa-hda-realtek-add-a-quirk-for-hp-omen-15-8786-mute-led.patch b/queue-5.19/alsa-hda-realtek-add-a-quirk-for-hp-omen-15-8786-mute-led.patch
new file mode 100644 (file)
index 0000000..6765c39
--- /dev/null
@@ -0,0 +1,31 @@
+From 30267718fe2d4dbea49015b022f6f1fe16ca31ab Mon Sep 17 00:00:00 2001
+From: Bedant Patnaik <bedant.patnaik@gmail.com>
+Date: Tue, 9 Aug 2022 19:54:55 +0530
+Subject: ALSA: hda/realtek: Add a quirk for HP OMEN 15 (8786) mute LED
+
+From: Bedant Patnaik <bedant.patnaik@gmail.com>
+
+commit 30267718fe2d4dbea49015b022f6f1fe16ca31ab upstream.
+
+Board ID 8786 seems to be another variant of the Omen 15 that needs
+ALC285_FIXUP_HP_MUTE_LED for working mute LED.
+
+Signed-off-by: Bedant Patnaik <bedant.patnaik@gmail.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20220809142455.6473-1-bedant.patnaik@gmail.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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
+@@ -9178,6 +9178,7 @@ static const struct snd_pci_quirk alc269
+                     ALC285_FIXUP_HP_GPIO_AMP_INIT),
+       SND_PCI_QUIRK(0x103c, 0x8783, "HP ZBook Fury 15 G7 Mobile Workstation",
+                     ALC285_FIXUP_HP_GPIO_AMP_INIT),
++      SND_PCI_QUIRK(0x103c, 0x8786, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
+       SND_PCI_QUIRK(0x103c, 0x8787, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
+       SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
+       SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED),
diff --git a/queue-5.19/alsa-hda-realtek-add-quirk-for-another-asus-k42jz-model.patch b/queue-5.19/alsa-hda-realtek-add-quirk-for-another-asus-k42jz-model.patch
new file mode 100644 (file)
index 0000000..1096aa7
--- /dev/null
@@ -0,0 +1,56 @@
+From f882c4bef9cb914d9f7be171afb10ed26536bfa7 Mon Sep 17 00:00:00 2001
+From: Meng Tang <tangmeng@uniontech.com>
+Date: Fri, 5 Aug 2022 15:45:34 +0800
+Subject: ALSA: hda/realtek: Add quirk for another Asus K42JZ model
+
+From: Meng Tang <tangmeng@uniontech.com>
+
+commit f882c4bef9cb914d9f7be171afb10ed26536bfa7 upstream.
+
+There is another Asus K42JZ model with the PCI SSID 1043:1313
+that requires the quirk ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE.
+Add the corresponding entry to the quirk table.
+
+Signed-off-by: Meng Tang <tangmeng@uniontech.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/20220805074534.20003-1-tangmeng@uniontech.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_realtek.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -6879,6 +6879,7 @@ enum {
+       ALC269_FIXUP_LIMIT_INT_MIC_BOOST,
+       ALC269VB_FIXUP_ASUS_ZENBOOK,
+       ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A,
++      ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE,
+       ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED,
+       ALC269VB_FIXUP_ORDISSIMO_EVE2,
+       ALC283_FIXUP_CHROME_BOOK,
+@@ -7466,6 +7467,15 @@ static const struct hda_fixup alc269_fix
+               .chained = true,
+               .chain_id = ALC269VB_FIXUP_ASUS_ZENBOOK,
+       },
++      [ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE] = {
++              .type = HDA_FIXUP_PINS,
++              .v.pins = (const struct hda_pintbl[]) {
++                      { 0x18, 0x01a110f0 },  /* use as headset mic */
++                      { }
++              },
++              .chained = true,
++              .chain_id = ALC269_FIXUP_HEADSET_MIC
++      },
+       [ALC269_FIXUP_LIMIT_INT_MIC_BOOST_MUTE_LED] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc269_fixup_limit_int_mic_boost,
+@@ -9237,6 +9247,7 @@ static const struct snd_pci_quirk alc269
+       SND_PCI_QUIRK(0x1043, 0x12a0, "ASUS X441UV", ALC233_FIXUP_EAPD_COEF_AND_MIC_NO_PRESENCE),
+       SND_PCI_QUIRK(0x1043, 0x12e0, "ASUS X541SA", ALC256_FIXUP_ASUS_MIC),
+       SND_PCI_QUIRK(0x1043, 0x12f0, "ASUS X541UV", ALC256_FIXUP_ASUS_MIC),
++      SND_PCI_QUIRK(0x1043, 0x1313, "Asus K42JZ", ALC269VB_FIXUP_ASUS_MIC_NO_PRESENCE),
+       SND_PCI_QUIRK(0x1043, 0x13b0, "ASUS Z550SA", ALC256_FIXUP_ASUS_MIC),
+       SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
+       SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
diff --git a/queue-5.19/crypto-ccp-use-kzalloc-for-sev-ioctl-interfaces-to-prevent-kernel-memory-leak.patch b/queue-5.19/crypto-ccp-use-kzalloc-for-sev-ioctl-interfaces-to-prevent-kernel-memory-leak.patch
new file mode 100644 (file)
index 0000000..85493b6
--- /dev/null
@@ -0,0 +1,84 @@
+From 13dc15a3f5fd7f884e4bfa8c011a0ae868df12ae Mon Sep 17 00:00:00 2001
+From: John Allen <john.allen@amd.com>
+Date: Wed, 18 May 2022 15:31:26 +0000
+Subject: crypto: ccp - Use kzalloc for sev ioctl interfaces to prevent kernel memory leak
+
+From: John Allen <john.allen@amd.com>
+
+commit 13dc15a3f5fd7f884e4bfa8c011a0ae868df12ae upstream.
+
+For some sev ioctl interfaces, input may be passed that is less than or
+equal to SEV_FW_BLOB_MAX_SIZE, but larger than the data that PSP
+firmware returns. In this case, kmalloc will allocate memory that is the
+size of the input rather than the size of the data. Since PSP firmware
+doesn't fully overwrite the buffer, the sev ioctl interfaces with the
+issue may return uninitialized slab memory.
+
+Currently, all of the ioctl interfaces in the ccp driver are safe, but
+to prevent future problems, change all ioctl interfaces that allocate
+memory with kmalloc to use kzalloc and memset the data buffer to zero
+in sev_ioctl_do_platform_status.
+
+Fixes: 38103671aad3 ("crypto: ccp: Use the stack and common buffer for status commands")
+Fixes: e799035609e15 ("crypto: ccp: Implement SEV_PEK_CSR ioctl command")
+Fixes: 76a2b524a4b1d ("crypto: ccp: Implement SEV_PDH_CERT_EXPORT ioctl command")
+Fixes: d6112ea0cb344 ("crypto: ccp - introduce SEV_GET_ID2 command")
+Cc: stable@vger.kernel.org
+Reported-by: Andy Nguyen <theflow@google.com>
+Suggested-by: David Rientjes <rientjes@google.com>
+Suggested-by: Peter Gonda <pgonda@google.com>
+Signed-off-by: John Allen <john.allen@amd.com>
+Reviewed-by: Peter Gonda <pgonda@google.com>
+Acked-by: David Rientjes <rientjes@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/crypto/ccp/sev-dev.c |   10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/crypto/ccp/sev-dev.c
++++ b/drivers/crypto/ccp/sev-dev.c
+@@ -577,6 +577,8 @@ static int sev_ioctl_do_platform_status(
+       struct sev_user_data_status data;
+       int ret;
++      memset(&data, 0, sizeof(data));
++
+       ret = __sev_do_cmd_locked(SEV_CMD_PLATFORM_STATUS, &data, &argp->error);
+       if (ret)
+               return ret;
+@@ -630,7 +632,7 @@ static int sev_ioctl_do_pek_csr(struct s
+       if (input.length > SEV_FW_BLOB_MAX_SIZE)
+               return -EFAULT;
+-      blob = kmalloc(input.length, GFP_KERNEL);
++      blob = kzalloc(input.length, GFP_KERNEL);
+       if (!blob)
+               return -ENOMEM;
+@@ -854,7 +856,7 @@ static int sev_ioctl_do_get_id2(struct s
+       input_address = (void __user *)input.address;
+       if (input.address && input.length) {
+-              id_blob = kmalloc(input.length, GFP_KERNEL);
++              id_blob = kzalloc(input.length, GFP_KERNEL);
+               if (!id_blob)
+                       return -ENOMEM;
+@@ -973,14 +975,14 @@ static int sev_ioctl_do_pdh_export(struc
+       if (input.cert_chain_len > SEV_FW_BLOB_MAX_SIZE)
+               return -EFAULT;
+-      pdh_blob = kmalloc(input.pdh_cert_len, GFP_KERNEL);
++      pdh_blob = kzalloc(input.pdh_cert_len, GFP_KERNEL);
+       if (!pdh_blob)
+               return -ENOMEM;
+       data.pdh_cert_address = __psp_pa(pdh_blob);
+       data.pdh_cert_len = input.pdh_cert_len;
+-      cert_blob = kmalloc(input.cert_chain_len, GFP_KERNEL);
++      cert_blob = kzalloc(input.cert_chain_len, GFP_KERNEL);
+       if (!cert_blob) {
+               ret = -ENOMEM;
+               goto e_free_pdh;
diff --git a/queue-5.19/fbcon-fix-accelerated-fbdev-scrolling-while-logo-is-still-shown.patch b/queue-5.19/fbcon-fix-accelerated-fbdev-scrolling-while-logo-is-still-shown.patch
new file mode 100644 (file)
index 0000000..46632f5
--- /dev/null
@@ -0,0 +1,52 @@
+From 3866cba87dcd0162fb41e9b3b653d0af68fad5ec Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Thu, 2 Jun 2022 22:08:38 +0200
+Subject: fbcon: Fix accelerated fbdev scrolling while logo is still shown
+
+From: Helge Deller <deller@gmx.de>
+
+commit 3866cba87dcd0162fb41e9b3b653d0af68fad5ec upstream.
+
+There is no need to directly skip over to the SCROLL_REDRAW case while
+the logo is still shown.
+
+When using DRM, this change has no effect because the code will reach
+the SCROLL_REDRAW case immediately anyway.
+
+But if you run an accelerated fbdev driver and have
+FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION enabled, console scrolling is
+slowed down by factors so that it feels as if you use a 9600 baud
+terminal.
+
+So, drop those unnecessary checks and speed up fbdev console
+acceleration during bootup.
+
+Cc: stable@vger.kernel.org # v5.10+
+Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Link: https://patchwork.freedesktop.org/patch/msgid/YpkYxk7wsBPx3po+@p100
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/video/fbdev/core/fbcon.c |    4 ----
+ 1 file changed, 4 deletions(-)
+
+--- a/drivers/video/fbdev/core/fbcon.c
++++ b/drivers/video/fbdev/core/fbcon.c
+@@ -1760,8 +1760,6 @@ static bool fbcon_scroll(struct vc_data
+       case SM_UP:
+               if (count > vc->vc_rows)        /* Maximum realistic size */
+                       count = vc->vc_rows;
+-              if (logo_shown >= 0)
+-                      goto redraw_up;
+               switch (fb_scrollmode(p)) {
+               case SCROLL_MOVE:
+                       fbcon_redraw_blit(vc, info, p, t, b - t - count,
+@@ -1850,8 +1848,6 @@ static bool fbcon_scroll(struct vc_data
+       case SM_DOWN:
+               if (count > vc->vc_rows)        /* Maximum realistic size */
+                       count = vc->vc_rows;
+-              if (logo_shown >= 0)
+-                      goto redraw_down;
+               switch (fb_scrollmode(p)) {
+               case SCROLL_MOVE:
+                       fbcon_redraw_blit(vc, info, p, b - 1, b - t - count,
diff --git a/queue-5.19/fbcon-fix-boundary-checks-for-fbcon-vc-n1-n2-parameters.patch b/queue-5.19/fbcon-fix-boundary-checks-for-fbcon-vc-n1-n2-parameters.patch
new file mode 100644 (file)
index 0000000..45e1e2a
--- /dev/null
@@ -0,0 +1,54 @@
+From cad564ca557f8d3bb3b1fa965d9a2b3f6490ec69 Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Thu, 2 Jun 2022 22:06:28 +0200
+Subject: fbcon: Fix boundary checks for fbcon=vc:n1-n2 parameters
+
+From: Helge Deller <deller@gmx.de>
+
+commit cad564ca557f8d3bb3b1fa965d9a2b3f6490ec69 upstream.
+
+The user may use the fbcon=vc:<n1>-<n2> option to tell fbcon to take
+over the given range (n1...n2) of consoles. The value for n1 and n2
+needs to be a positive number and up to (MAX_NR_CONSOLES - 1).
+The given values were not fully checked against those boundaries yet.
+
+To fix the issue, convert first_fb_vc and last_fb_vc to unsigned
+integers and check them against the upper boundary, and make sure that
+first_fb_vc is smaller than last_fb_vc.
+
+Cc: stable@vger.kernel.org # v4.19+
+Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Link: https://patchwork.freedesktop.org/patch/msgid/YpkYRMojilrtZIgM@p100
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/video/fbdev/core/fbcon.c |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/video/fbdev/core/fbcon.c
++++ b/drivers/video/fbdev/core/fbcon.c
+@@ -125,8 +125,8 @@ static int logo_lines;
+    enums.  */
+ static int logo_shown = FBCON_LOGO_CANSHOW;
+ /* console mappings */
+-static int first_fb_vc;
+-static int last_fb_vc = MAX_NR_CONSOLES - 1;
++static unsigned int first_fb_vc;
++static unsigned int last_fb_vc = MAX_NR_CONSOLES - 1;
+ static int fbcon_is_default = 1; 
+ static int primary_device = -1;
+ static int fbcon_has_console_bind;
+@@ -440,10 +440,12 @@ static int __init fb_console_setup(char
+                       options += 3;
+                       if (*options)
+                               first_fb_vc = simple_strtoul(options, &options, 10) - 1;
+-                      if (first_fb_vc < 0)
++                      if (first_fb_vc >= MAX_NR_CONSOLES)
+                               first_fb_vc = 0;
+                       if (*options++ == '-')
+                               last_fb_vc = simple_strtoul(options, &options, 10) - 1;
++                      if (last_fb_vc < first_fb_vc || last_fb_vc >= MAX_NR_CONSOLES)
++                              last_fb_vc = MAX_NR_CONSOLES - 1;
+                       fbcon_is_default = 0; 
+                       continue;
+               }
diff --git a/queue-5.19/fix-short-copy-handling-in-copy_mc_pipe_to_iter.patch b/queue-5.19/fix-short-copy-handling-in-copy_mc_pipe_to_iter.patch
new file mode 100644 (file)
index 0000000..1d662f3
--- /dev/null
@@ -0,0 +1,82 @@
+From c3497fd009ef2c59eea60d21c3ac22de3585ed7d Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Sun, 12 Jun 2022 19:50:29 -0400
+Subject: fix short copy handling in copy_mc_pipe_to_iter()
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit c3497fd009ef2c59eea60d21c3ac22de3585ed7d upstream.
+
+Unlike other copying operations on ITER_PIPE, copy_mc_to_iter() can
+result in a short copy.  In that case we need to trim the unused
+buffers, as well as the length of partially filled one - it's not
+enough to set ->head, ->iov_offset and ->count to reflect how
+much had we copied.  Not hard to fix, fortunately...
+
+I'd put a helper (pipe_discard_from(pipe, head)) into pipe_fs_i.h,
+rather than iov_iter.c - it has nothing to do with iov_iter and
+having it will allow us to avoid an ugly kludge in fs/splice.c.
+We could put it into lib/iov_iter.c for now and move it later,
+but I don't see the point going that way...
+
+Cc: stable@kernel.org # 4.19+
+Fixes: ca146f6f091e "lib/iov_iter: Fix pipe handling in _copy_to_iter_mcsafe()"
+Reviewed-by: Jeff Layton <jlayton@kernel.org>
+Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/pipe_fs_i.h |    9 +++++++++
+ lib/iov_iter.c            |   15 +++++++++++----
+ 2 files changed, 20 insertions(+), 4 deletions(-)
+
+--- a/include/linux/pipe_fs_i.h
++++ b/include/linux/pipe_fs_i.h
+@@ -229,6 +229,15 @@ static inline bool pipe_buf_try_steal(st
+       return buf->ops->try_steal(pipe, buf);
+ }
++static inline void pipe_discard_from(struct pipe_inode_info *pipe,
++              unsigned int old_head)
++{
++      unsigned int mask = pipe->ring_size - 1;
++
++      while (pipe->head > old_head)
++              pipe_buf_release(pipe, &pipe->bufs[--pipe->head & mask]);
++}
++
+ /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual
+    memory allocation, whereas PIPE_BUF makes atomicity guarantees.  */
+ #define PIPE_SIZE             PAGE_SIZE
+--- a/lib/iov_iter.c
++++ b/lib/iov_iter.c
+@@ -689,6 +689,7 @@ static size_t copy_mc_pipe_to_iter(const
+       struct pipe_inode_info *pipe = i->pipe;
+       unsigned int p_mask = pipe->ring_size - 1;
+       unsigned int i_head;
++      unsigned int valid = pipe->head;
+       size_t n, off, xfer = 0;
+       if (!sanity(i))
+@@ -702,11 +703,17 @@ static size_t copy_mc_pipe_to_iter(const
+               rem = copy_mc_to_kernel(p + off, addr + xfer, chunk);
+               chunk -= rem;
+               kunmap_local(p);
+-              i->head = i_head;
+-              i->iov_offset = off + chunk;
+-              xfer += chunk;
+-              if (rem)
++              if (chunk) {
++                      i->head = i_head;
++                      i->iov_offset = off + chunk;
++                      xfer += chunk;
++                      valid = i_head + 1;
++              }
++              if (rem) {
++                      pipe->bufs[i_head & p_mask].len -= rem;
++                      pipe_discard_from(pipe, valid);
+                       break;
++              }
+               n -= chunk;
+               off = 0;
+               i_head++;
diff --git a/queue-5.19/fs-add-missing-umask-strip-in-vfs_tmpfile.patch b/queue-5.19/fs-add-missing-umask-strip-in-vfs_tmpfile.patch
new file mode 100644 (file)
index 0000000..c670de9
--- /dev/null
@@ -0,0 +1,40 @@
+From ac6800e279a22b28f4fc21439843025a0d5bf03e Mon Sep 17 00:00:00 2001
+From: Yang Xu <xuyang2018.jy@fujitsu.com>
+Date: Thu, 14 Jul 2022 14:11:26 +0800
+Subject: fs: Add missing umask strip in vfs_tmpfile
+
+From: Yang Xu <xuyang2018.jy@fujitsu.com>
+
+commit ac6800e279a22b28f4fc21439843025a0d5bf03e upstream.
+
+All creation paths except for O_TMPFILE handle umask in the vfs directly
+if the filesystem doesn't support or enable POSIX ACLs. If the filesystem
+does then umask handling is deferred until posix_acl_create().
+Because, O_TMPFILE misses umask handling in the vfs it will not honor
+umask settings. Fix this by adding the missing umask handling.
+
+Link: https://lore.kernel.org/r/1657779088-2242-2-git-send-email-xuyang2018.jy@fujitsu.com
+Fixes: 60545d0d4610 ("[O_TMPFILE] it's still short a few helpers, but infrastructure should be OK now...")
+Cc: <stable@vger.kernel.org> # 4.19+
+Reported-by: Christian Brauner (Microsoft) <brauner@kernel.org>
+Reviewed-by: Darrick J. Wong <djwong@kernel.org>
+Reviewed-and-Tested-by: Jeff Layton <jlayton@kernel.org>
+Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org>
+Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
+Signed-off-by: Christian Brauner (Microsoft) <brauner@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/namei.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -3565,6 +3565,8 @@ struct dentry *vfs_tmpfile(struct user_n
+       child = d_alloc(dentry, &slash_name);
+       if (unlikely(!child))
+               goto out_err;
++      if (!IS_POSIXACL(dir))
++              mode &= ~current_umask();
+       error = dir->i_op->tmpfile(mnt_userns, dir, child, mode);
+       if (error)
+               goto out_err;
diff --git a/queue-5.19/loongarch-cpuinfo-fix-a-warning-for-config_cpumask_offstack.patch b/queue-5.19/loongarch-cpuinfo-fix-a-warning-for-config_cpumask_offstack.patch
new file mode 100644 (file)
index 0000000..9313a69
--- /dev/null
@@ -0,0 +1,62 @@
+From 28e112afa44ad0814120d41c68fa72372a2cd2c2 Mon Sep 17 00:00:00 2001
+From: Huacai Chen <chenhuacai@loongson.cn>
+Date: Tue, 12 Jul 2022 12:25:57 +0800
+Subject: LoongArch: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK
+
+From: Huacai Chen <chenhuacai@loongson.cn>
+
+commit 28e112afa44ad0814120d41c68fa72372a2cd2c2 upstream.
+
+When CONFIG_CPUMASK_OFFSTACK and CONFIG_DEBUG_PER_CPU_MAPS is selected,
+cpu_max_bits_warn() generates a runtime warning similar as below while
+we show /proc/cpuinfo. Fix this by using nr_cpu_ids (the runtime limit)
+instead of NR_CPUS to iterate CPUs.
+
+[    3.052463] ------------[ cut here ]------------
+[    3.059679] WARNING: CPU: 3 PID: 1 at include/linux/cpumask.h:108 show_cpuinfo+0x5e8/0x5f0
+[    3.070072] Modules linked in: efivarfs autofs4
+[    3.076257] CPU: 0 PID: 1 Comm: systemd Not tainted 5.19-rc5+ #1052
+[    3.084034] Hardware name: Loongson Loongson-3A5000-7A1000-1w-V0.1-CRB/Loongson-LS3A5000-7A1000-1w-EVB-V1.21, BIOS Loongson-UDK2018-V2.0.04082-beta7 04/27
+[    3.099465] Stack : 9000000100157b08 9000000000f18530 9000000000cf846c 9000000100154000
+[    3.109127]         9000000100157a50 0000000000000000 9000000100157a58 9000000000ef7430
+[    3.118774]         90000001001578e8 0000000000000040 0000000000000020 ffffffffffffffff
+[    3.128412]         0000000000aaaaaa 1ab25f00eec96a37 900000010021de80 900000000101c890
+[    3.138056]         0000000000000000 0000000000000000 0000000000000000 0000000000aaaaaa
+[    3.147711]         ffff8000339dc220 0000000000000001 0000000006ab4000 0000000000000000
+[    3.157364]         900000000101c998 0000000000000004 9000000000ef7430 0000000000000000
+[    3.167012]         0000000000000009 000000000000006c 0000000000000000 0000000000000000
+[    3.176641]         9000000000d3de08 9000000001639390 90000000002086d8 00007ffff0080286
+[    3.186260]         00000000000000b0 0000000000000004 0000000000000000 0000000000071c1c
+[    3.195868]         ...
+[    3.199917] Call Trace:
+[    3.203941] [<90000000002086d8>] show_stack+0x38/0x14c
+[    3.210666] [<9000000000cf846c>] dump_stack_lvl+0x60/0x88
+[    3.217625] [<900000000023d268>] __warn+0xd0/0x100
+[    3.223958] [<9000000000cf3c90>] warn_slowpath_fmt+0x7c/0xcc
+[    3.231150] [<9000000000210220>] show_cpuinfo+0x5e8/0x5f0
+[    3.238080] [<90000000004f578c>] seq_read_iter+0x354/0x4b4
+[    3.245098] [<90000000004c2e90>] new_sync_read+0x17c/0x1c4
+[    3.252114] [<90000000004c5174>] vfs_read+0x138/0x1d0
+[    3.258694] [<90000000004c55f8>] ksys_read+0x70/0x100
+[    3.265265] [<9000000000cfde9c>] do_syscall+0x7c/0x94
+[    3.271820] [<9000000000202fe4>] handle_syscall+0xc4/0x160
+[    3.281824] ---[ end trace 8b484262b4b8c24c ]---
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/loongarch/kernel/proc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/loongarch/kernel/proc.c
++++ b/arch/loongarch/kernel/proc.c
+@@ -106,7 +106,7 @@ static void *c_start(struct seq_file *m,
+ {
+       unsigned long i = *pos;
+-      return i < NR_CPUS ? (void *)(i + 1) : NULL;
++      return i < nr_cpu_ids ? (void *)(i + 1) : NULL;
+ }
+ static void *c_next(struct seq_file *m, void *v, loff_t *pos)
diff --git a/queue-5.19/ovl-drop-warn_on-dentry-is-null-in-ovl_encode_fh.patch b/queue-5.19/ovl-drop-warn_on-dentry-is-null-in-ovl_encode_fh.patch
new file mode 100644 (file)
index 0000000..db30436
--- /dev/null
@@ -0,0 +1,57 @@
+From dd524b7f317de8d31d638cbfdc7be4cf9b770e42 Mon Sep 17 00:00:00 2001
+From: Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
+Date: Thu, 28 Jul 2022 19:49:15 +0800
+Subject: ovl: drop WARN_ON() dentry is NULL in ovl_encode_fh()
+
+From: Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
+
+commit dd524b7f317de8d31d638cbfdc7be4cf9b770e42 upstream.
+
+Some code paths cannot guarantee the inode have any dentry alias. So
+WARN_ON() all !dentry may flood the kernel logs.
+
+For example, when an overlayfs inode is watched by inotifywait (1), and
+someone is trying to read the /proc/$(pidof inotifywait)/fdinfo/INOTIFY_FD,
+at that time if the dentry has been reclaimed by kernel (such as
+echo 2 > /proc/sys/vm/drop_caches), there will be a WARN_ON(). The
+printed call stack would be like:
+
+    ? show_mark_fhandle+0xf0/0xf0
+    show_mark_fhandle+0x4a/0xf0
+    ? show_mark_fhandle+0xf0/0xf0
+    ? seq_vprintf+0x30/0x50
+    ? seq_printf+0x53/0x70
+    ? show_mark_fhandle+0xf0/0xf0
+    inotify_fdinfo+0x70/0x90
+    show_fdinfo.isra.4+0x53/0x70
+    seq_show+0x130/0x170
+    seq_read+0x153/0x440
+    vfs_read+0x94/0x150
+    ksys_read+0x5f/0xe0
+    do_syscall_64+0x59/0x1e0
+    entry_SYSCALL_64_after_hwframe+0x44/0xa9
+
+So let's drop WARN_ON() to avoid kernel log flooding.
+
+Reported-by: Hongbo Yin <yinhongbo@bytedance.com>
+Signed-off-by: Jiachen Zhang <zhangjiachen.jaycee@bytedance.com>
+Signed-off-by: Tianci Zhang <zhangtianci.1997@bytedance.com>
+Fixes: 8ed5eec9d6c4 ("ovl: encode pure upper file handles")
+Cc: <stable@vger.kernel.org> # v4.16
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/overlayfs/export.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/overlayfs/export.c
++++ b/fs/overlayfs/export.c
+@@ -259,7 +259,7 @@ static int ovl_encode_fh(struct inode *i
+               return FILEID_INVALID;
+       dentry = d_find_any_alias(inode);
+-      if (WARN_ON(!dentry))
++      if (!dentry)
+               return FILEID_INVALID;
+       bytes = ovl_dentry_to_fid(ofs, dentry, fid, buflen);
index 90682226bb746fbad70bb349a7e0ebcd7cb7fa55..5fd879ba0dfe6dc5a2a08dae8446d90135d1e97c 100644 (file)
@@ -43,3 +43,20 @@ kvm-x86-do-not-report-preemption-if-the-steal-time-cache-is-stale.patch
 kvm-x86-revalidate-steal-time-cache-if-msr-value-changes.patch
 kvm-x86-xen-initialize-xen-timer-only-once.patch
 kvm-x86-xen-stop-xen-timer-before-changing-irq.patch
+alsa-hda-conexant-add-quirk-for-lenovo-20149-notebook-model.patch
+alsa-hda-cirrus-support-for-imac-12-1-model.patch
+alsa-hda-realtek-add-quirk-for-another-asus-k42jz-model.patch
+alsa-hda-realtek-add-a-quirk-for-hp-omen-15-8786-mute-led.patch
+loongarch-cpuinfo-fix-a-warning-for-config_cpumask_offstack.patch
+tty-8250-add-support-for-brainboxes-px-cards.patch
+tty-vt-initialize-unicode-screen-buffer.patch
+vfs-check-the-truncate-maximum-size-in-inode_newsize_ok.patch
+fs-add-missing-umask-strip-in-vfs_tmpfile.patch
+thermal-sysfs-fix-cooling_device_stats_setup-error-code-path.patch
+fbcon-fix-boundary-checks-for-fbcon-vc-n1-n2-parameters.patch
+fbcon-fix-accelerated-fbdev-scrolling-while-logo-is-still-shown.patch
+usbnet-fix-linkwatch-use-after-free-on-disconnect.patch
+usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch
+fix-short-copy-handling-in-copy_mc_pipe_to_iter.patch
+crypto-ccp-use-kzalloc-for-sev-ioctl-interfaces-to-prevent-kernel-memory-leak.patch
+ovl-drop-warn_on-dentry-is-null-in-ovl_encode_fh.patch
diff --git a/queue-5.19/thermal-sysfs-fix-cooling_device_stats_setup-error-code-path.patch b/queue-5.19/thermal-sysfs-fix-cooling_device_stats_setup-error-code-path.patch
new file mode 100644 (file)
index 0000000..6d2b97b
--- /dev/null
@@ -0,0 +1,69 @@
+From d5a8aa5d7d80d21ab6b266f1bed4194b61746199 Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Fri, 29 Jul 2022 17:39:07 +0200
+Subject: thermal: sysfs: Fix cooling_device_stats_setup() error code path
+
+From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+
+commit d5a8aa5d7d80d21ab6b266f1bed4194b61746199 upstream.
+
+If cooling_device_stats_setup() fails to create the stats object, it
+must clear the last slot in cooling_device_attr_groups that was
+initially empty (so as to make it possible to add stats attributes to
+the cooling device attribute groups).
+
+Failing to do so may cause the stats attributes to be created by
+mistake for a device that doesn't have a stats object, because the
+slot in question might be populated previously during the registration
+of another cooling device.
+
+Fixes: 8ea229511e06 ("thermal: Add cooling device's statistics in sysfs")
+Reported-by: Di Shen <di.shen@unisoc.com>
+Tested-by: Di Shen <di.shen@unisoc.com>
+Cc: 4.17+ <stable@vger.kernel.org> # 4.17+
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/thermal/thermal_sysfs.c |   10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/thermal/thermal_sysfs.c
++++ b/drivers/thermal/thermal_sysfs.c
+@@ -813,12 +813,13 @@ static const struct attribute_group cool
+ static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
+ {
++      const struct attribute_group *stats_attr_group = NULL;
+       struct cooling_dev_stats *stats;
+       unsigned long states;
+       int var;
+       if (cdev->ops->get_max_state(cdev, &states))
+-              return;
++              goto out;
+       states++; /* Total number of states is highest state + 1 */
+@@ -828,7 +829,7 @@ static void cooling_device_stats_setup(s
+       stats = kzalloc(var, GFP_KERNEL);
+       if (!stats)
+-              return;
++              goto out;
+       stats->time_in_state = (ktime_t *)(stats + 1);
+       stats->trans_table = (unsigned int *)(stats->time_in_state + states);
+@@ -838,9 +839,12 @@ static void cooling_device_stats_setup(s
+       spin_lock_init(&stats->lock);
++      stats_attr_group = &cooling_device_stats_attr_group;
++
++out:
+       /* Fill the empty slot left in cooling_device_attr_groups */
+       var = ARRAY_SIZE(cooling_device_attr_groups) - 2;
+-      cooling_device_attr_groups[var] = &cooling_device_stats_attr_group;
++      cooling_device_attr_groups[var] = stats_attr_group;
+ }
+ static void cooling_device_stats_destroy(struct thermal_cooling_device *cdev)
diff --git a/queue-5.19/tty-8250-add-support-for-brainboxes-px-cards.patch b/queue-5.19/tty-8250-add-support-for-brainboxes-px-cards.patch
new file mode 100644 (file)
index 0000000..40974c2
--- /dev/null
@@ -0,0 +1,141 @@
+From ef5a03a26c87a760bc3d86b5af7b773e82f8b1b7 Mon Sep 17 00:00:00 2001
+From: Cameron Williams <cang1@live.co.uk>
+Date: Mon, 11 Jul 2022 16:35:10 +0100
+Subject: tty: 8250: Add support for Brainboxes PX cards.
+
+From: Cameron Williams <cang1@live.co.uk>
+
+commit ef5a03a26c87a760bc3d86b5af7b773e82f8b1b7 upstream.
+
+Add support for some of the Brainboxes PCIe (PX) range of
+serial cards, including the PX-101, PX-235/PX-246,
+PX-203/PX-257, PX-260/PX-701, PX-310, PX-313,
+PX-320/PX-324/PX-376/PX-387, PX-335/PX-346, PX-368, PX-420,
+PX-803 and PX-846.
+
+Signed-off-by: Cameron Williams <cang1@live.co.uk>
+Cc: stable <stable@kernel.org>
+Link: https://lore.kernel.org/r/AM5PR0202MB2564669252BDC59BF55A6E87C4879@AM5PR0202MB2564.eurprd02.prod.outlook.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/8250/8250_pci.c |  109 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 109 insertions(+)
+
+--- a/drivers/tty/serial/8250/8250_pci.c
++++ b/drivers/tty/serial/8250/8250_pci.c
+@@ -5077,6 +5077,115 @@ static const struct pci_device_id serial
+               0, 0,
+               pbn_b2_4_115200 },
+       /*
++       * Brainboxes PX-101
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4005,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_2_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4019,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_2_15625000 },
++      /*
++       * Brainboxes PX-235/246
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4004,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_1_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4016,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_1_15625000 },
++      /*
++       * Brainboxes PX-203/PX-257
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4006,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_2_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4015,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_4_15625000 },
++      /*
++       * Brainboxes PX-260/PX-701
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x400A,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_4_15625000 },
++      /*
++       * Brainboxes PX-310
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x400E,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_2_15625000 },
++      /*
++       * Brainboxes PX-313
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x400C,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_2_15625000 },
++      /*
++       * Brainboxes PX-320/324/PX-376/PX-387
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x400B,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_1_15625000 },
++      /*
++       * Brainboxes PX-335/346
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x400F,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_4_15625000 },
++      /*
++       * Brainboxes PX-368
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4010,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_4_15625000 },
++      /*
++       * Brainboxes PX-420
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4000,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_4_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4011,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_4_15625000 },
++      /*
++       * Brainboxes PX-803
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4009,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_1_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x401E,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_1_15625000 },
++      /*
++       * Brainboxes PX-846
++       */
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4008,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_b0_1_115200 },
++      {       PCI_VENDOR_ID_INTASHIELD, 0x4017,
++              PCI_ANY_ID, PCI_ANY_ID,
++              0, 0,
++              pbn_oxsemi_1_15625000 },
++
++      /*
+        * Perle PCI-RAS cards
+        */
+       {       PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9030,
diff --git a/queue-5.19/tty-vt-initialize-unicode-screen-buffer.patch b/queue-5.19/tty-vt-initialize-unicode-screen-buffer.patch
new file mode 100644 (file)
index 0000000..e5b8ad3
--- /dev/null
@@ -0,0 +1,51 @@
+From af77c56aa35325daa2bc2bed5c2ebf169be61b86 Mon Sep 17 00:00:00 2001
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Date: Tue, 19 Jul 2022 14:49:39 +0900
+Subject: tty: vt: initialize unicode screen buffer
+
+From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+
+commit af77c56aa35325daa2bc2bed5c2ebf169be61b86 upstream.
+
+syzbot reports kernel infoleak at vcs_read() [1], for buffer can be read
+immediately after resize operation. Initialize buffer using kzalloc().
+
+  ----------
+  #include <fcntl.h>
+  #include <unistd.h>
+  #include <sys/ioctl.h>
+  #include <linux/fb.h>
+
+  int main(int argc, char *argv[])
+  {
+    struct fb_var_screeninfo var = { };
+    const int fb_fd = open("/dev/fb0", 3);
+    ioctl(fb_fd, FBIOGET_VSCREENINFO, &var);
+    var.yres = 0x21;
+    ioctl(fb_fd, FBIOPUT_VSCREENINFO, &var);
+    return read(open("/dev/vcsu", O_RDONLY), &var, sizeof(var)) == -1;
+  }
+  ----------
+
+Link: https://syzkaller.appspot.com/bug?extid=31a641689d43387f05d3 [1]
+Cc: stable <stable@vger.kernel.org>
+Reported-by: syzbot <syzbot+31a641689d43387f05d3@syzkaller.appspotmail.com>
+Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
+Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
+Link: https://lore.kernel.org/r/4ef053cf-e796-fb5e-58b7-3ae58242a4ad@I-love.SAKURA.ne.jp
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/vt/vt.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/tty/vt/vt.c
++++ b/drivers/tty/vt/vt.c
+@@ -344,7 +344,7 @@ static struct uni_screen *vc_uniscr_allo
+       /* allocate everything in one go */
+       memsize = cols * rows * sizeof(char32_t);
+       memsize += rows * sizeof(char32_t *);
+-      p = vmalloc(memsize);
++      p = vzalloc(memsize);
+       if (!p)
+               return NULL;
diff --git a/queue-5.19/usbnet-fix-linkwatch-use-after-free-on-disconnect.patch b/queue-5.19/usbnet-fix-linkwatch-use-after-free-on-disconnect.patch
new file mode 100644 (file)
index 0000000..060aa0f
--- /dev/null
@@ -0,0 +1,85 @@
+From a69e617e533edddf3fa3123149900f36e0a6dc74 Mon Sep 17 00:00:00 2001
+From: Lukas Wunner <lukas@wunner.de>
+Date: Thu, 23 Jun 2022 14:50:59 +0200
+Subject: usbnet: Fix linkwatch use-after-free on disconnect
+
+From: Lukas Wunner <lukas@wunner.de>
+
+commit a69e617e533edddf3fa3123149900f36e0a6dc74 upstream.
+
+usbnet uses the work usbnet_deferred_kevent() to perform tasks which may
+sleep.  On disconnect, completion of the work was originally awaited in
+->ndo_stop().  But in 2003, that was moved to ->disconnect() by historic
+commit "[PATCH] USB: usbnet, prevent exotic rtnl deadlock":
+
+  https://git.kernel.org/tglx/history/c/0f138bbfd83c
+
+The change was made because back then, the kernel's workqueue
+implementation did not allow waiting for a single work.  One had to wait
+for completion of *all* work by calling flush_scheduled_work(), and that
+could deadlock when waiting for usbnet_deferred_kevent() with rtnl_mutex
+held in ->ndo_stop().
+
+The commit solved one problem but created another:  It causes a
+use-after-free in USB Ethernet drivers aqc111.c, asix_devices.c,
+ax88179_178a.c, ch9200.c and smsc75xx.c:
+
+* If the drivers receive a link change interrupt immediately before
+  disconnect, they raise EVENT_LINK_RESET in their (non-sleepable)
+  ->status() callback and schedule usbnet_deferred_kevent().
+* usbnet_deferred_kevent() invokes the driver's ->link_reset() callback,
+  which calls netif_carrier_{on,off}().
+* That in turn schedules the work linkwatch_event().
+
+Because usbnet_deferred_kevent() is awaited after unregister_netdev(),
+netif_carrier_{on,off}() may operate on an unregistered netdev and
+linkwatch_event() may run after free_netdev(), causing a use-after-free.
+
+In 2010, usbnet was changed to only wait for a single instance of
+usbnet_deferred_kevent() instead of *all* work by commit 23f333a2bfaf
+("drivers/net: don't use flush_scheduled_work()").
+
+Unfortunately the commit neglected to move the wait back to
+->ndo_stop().  Rectify that omission at long last.
+
+Reported-by: Jann Horn <jannh@google.com>
+Link: https://lore.kernel.org/netdev/CAG48ez0MHBbENX5gCdHAUXZ7h7s20LnepBF-pa5M=7Bi-jZrEA@mail.gmail.com/
+Reported-by: Oleksij Rempel <o.rempel@pengutronix.de>
+Link: https://lore.kernel.org/netdev/20220315113841.GA22337@pengutronix.de/
+Signed-off-by: Lukas Wunner <lukas@wunner.de>
+Cc: stable@vger.kernel.org
+Acked-by: Oliver Neukum <oneukum@suse.com>
+Link: https://lore.kernel.org/r/d1c87ebe9fc502bffcd1576e238d685ad08321e4.1655987888.git.lukas@wunner.de
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/usb/usbnet.c |    8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/usb/usbnet.c
++++ b/drivers/net/usb/usbnet.c
+@@ -849,13 +849,11 @@ int usbnet_stop (struct net_device *net)
+       mpn = !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags);
+-      /* deferred work (task, timer, softirq) must also stop.
+-       * can't flush_scheduled_work() until we drop rtnl (later),
+-       * else workers could deadlock; so make workers a NOP.
+-       */
++      /* deferred work (timer, softirq, task) must also stop */
+       dev->flags = 0;
+       del_timer_sync (&dev->delay);
+       tasklet_kill (&dev->bh);
++      cancel_work_sync(&dev->kevent);
+       if (!pm)
+               usb_autopm_put_interface(dev->intf);
+@@ -1619,8 +1617,6 @@ void usbnet_disconnect (struct usb_inter
+       net = dev->net;
+       unregister_netdev (net);
+-      cancel_work_sync(&dev->kevent);
+-
+       usb_scuttle_anchored_urbs(&dev->deferred);
+       if (dev->driver_info->unbind)
diff --git a/queue-5.19/usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch b/queue-5.19/usbnet-smsc95xx-fix-deadlock-on-runtime-resume.patch
new file mode 100644 (file)
index 0000000..cfd5ef7
--- /dev/null
@@ -0,0 +1,188 @@
+From 7b960c967f2aa01ab8f45c5a0bd78e754cffdeee Mon Sep 17 00:00:00 2001
+From: Lukas Wunner <lukas@wunner.de>
+Date: Fri, 1 Jul 2022 22:47:51 +0200
+Subject: usbnet: smsc95xx: Fix deadlock on runtime resume
+
+From: Lukas Wunner <lukas@wunner.de>
+
+commit 7b960c967f2aa01ab8f45c5a0bd78e754cffdeee upstream.
+
+Commit 05b35e7eb9a1 ("smsc95xx: add phylib support") amended
+smsc95xx_resume() to call phy_init_hw().  That function waits for the
+device to runtime resume even though it is placed in the runtime resume
+path, causing a deadlock.
+
+The problem is that phy_init_hw() calls down to smsc95xx_mdiobus_read(),
+which never uses the _nopm variant of usbnet_read_cmd().
+
+Commit b4df480f68ae ("usbnet: smsc95xx: add reset_resume function with
+reset operation") causes a similar deadlock on resume if the device was
+already runtime suspended when entering system sleep:
+
+That's because the commit introduced smsc95xx_reset_resume(), which
+calls down to smsc95xx_reset(), which neglects to use _nopm accessors.
+
+Fix by auto-detecting whether a device access is performed by the
+suspend/resume task_struct and use the _nopm variant if so.  This works
+because the PM core guarantees that suspend/resume callbacks are run in
+task context.
+
+Stacktrace for posterity:
+
+  INFO: task kworker/2:1:49 blocked for more than 122 seconds.
+  Workqueue: usb_hub_wq hub_event
+  schedule
+  rpm_resume
+  __pm_runtime_resume
+  usb_autopm_get_interface
+  usbnet_read_cmd
+  __smsc95xx_read_reg
+  __smsc95xx_phy_wait_not_busy
+  __smsc95xx_mdio_read
+  smsc95xx_mdiobus_read
+  __mdiobus_read
+  mdiobus_read
+  smsc_phy_reset
+  phy_init_hw
+  smsc95xx_resume
+  usb_resume_interface
+  usb_resume_both
+  usb_runtime_resume
+  __rpm_callback
+  rpm_callback
+  rpm_resume
+  __pm_runtime_resume
+  usb_autoresume_device
+  hub_event
+  process_one_work
+
+Fixes: b4df480f68ae ("usbnet: smsc95xx: add reset_resume function with reset operation")
+Signed-off-by: Lukas Wunner <lukas@wunner.de>
+Cc: stable@vger.kernel.org # v3.16+
+Cc: Andre Edich <andre.edich@microchip.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/usb/smsc95xx.c |   26 ++++++++++++++++++++------
+ 1 file changed, 20 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/usb/smsc95xx.c
++++ b/drivers/net/usb/smsc95xx.c
+@@ -71,6 +71,7 @@ struct smsc95xx_priv {
+       struct fwnode_handle *irqfwnode;
+       struct mii_bus *mdiobus;
+       struct phy_device *phydev;
++      struct task_struct *pm_task;
+ };
+ static bool turbo_mode = true;
+@@ -80,13 +81,14 @@ MODULE_PARM_DESC(turbo_mode, "Enable mul
+ static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
+                                           u32 *data, int in_pm)
+ {
++      struct smsc95xx_priv *pdata = dev->driver_priv;
+       u32 buf;
+       int ret;
+       int (*fn)(struct usbnet *, u8, u8, u16, u16, void *, u16);
+       BUG_ON(!dev);
+-      if (!in_pm)
++      if (current != pdata->pm_task)
+               fn = usbnet_read_cmd;
+       else
+               fn = usbnet_read_cmd_nopm;
+@@ -110,13 +112,14 @@ static int __must_check __smsc95xx_read_
+ static int __must_check __smsc95xx_write_reg(struct usbnet *dev, u32 index,
+                                            u32 data, int in_pm)
+ {
++      struct smsc95xx_priv *pdata = dev->driver_priv;
+       u32 buf;
+       int ret;
+       int (*fn)(struct usbnet *, u8, u8, u16, u16, const void *, u16);
+       BUG_ON(!dev);
+-      if (!in_pm)
++      if (current != pdata->pm_task)
+               fn = usbnet_write_cmd;
+       else
+               fn = usbnet_write_cmd_nopm;
+@@ -1490,9 +1493,12 @@ static int smsc95xx_suspend(struct usb_i
+       u32 val, link_up;
+       int ret;
++      pdata->pm_task = current;
++
+       ret = usbnet_suspend(intf, message);
+       if (ret < 0) {
+               netdev_warn(dev->net, "usbnet_suspend error\n");
++              pdata->pm_task = NULL;
+               return ret;
+       }
+@@ -1732,6 +1738,7 @@ done:
+       if (ret && PMSG_IS_AUTO(message))
+               usbnet_resume(intf);
++      pdata->pm_task = NULL;
+       return ret;
+ }
+@@ -1752,29 +1759,31 @@ static int smsc95xx_resume(struct usb_in
+       /* do this first to ensure it's cleared even in error case */
+       pdata->suspend_flags = 0;
++      pdata->pm_task = current;
++
+       if (suspend_flags & SUSPEND_ALLMODES) {
+               /* clear wake-up sources */
+               ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
+               if (ret < 0)
+-                      return ret;
++                      goto done;
+               val &= ~(WUCSR_WAKE_EN_ | WUCSR_MPEN_);
+               ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
+               if (ret < 0)
+-                      return ret;
++                      goto done;
+               /* clear wake-up status */
+               ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
+               if (ret < 0)
+-                      return ret;
++                      goto done;
+               val &= ~PM_CTL_WOL_EN_;
+               val |= PM_CTL_WUPS_;
+               ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
+               if (ret < 0)
+-                      return ret;
++                      goto done;
+       }
+       phy_init_hw(pdata->phydev);
+@@ -1783,15 +1792,20 @@ static int smsc95xx_resume(struct usb_in
+       if (ret < 0)
+               netdev_warn(dev->net, "usbnet_resume error\n");
++done:
++      pdata->pm_task = NULL;
+       return ret;
+ }
+ static int smsc95xx_reset_resume(struct usb_interface *intf)
+ {
+       struct usbnet *dev = usb_get_intfdata(intf);
++      struct smsc95xx_priv *pdata = dev->driver_priv;
+       int ret;
++      pdata->pm_task = current;
+       ret = smsc95xx_reset(dev);
++      pdata->pm_task = NULL;
+       if (ret < 0)
+               return ret;
diff --git a/queue-5.19/vfs-check-the-truncate-maximum-size-in-inode_newsize_ok.patch b/queue-5.19/vfs-check-the-truncate-maximum-size-in-inode_newsize_ok.patch
new file mode 100644 (file)
index 0000000..de47bfc
--- /dev/null
@@ -0,0 +1,68 @@
+From e2ebff9c57fe4eb104ce4768f6ebcccf76bef849 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Mon, 8 Aug 2022 09:52:35 +0100
+Subject: vfs: Check the truncate maximum size in inode_newsize_ok()
+
+From: David Howells <dhowells@redhat.com>
+
+commit e2ebff9c57fe4eb104ce4768f6ebcccf76bef849 upstream.
+
+If something manages to set the maximum file size to MAX_OFFSET+1, this
+can cause the xfs and ext4 filesystems at least to become corrupt.
+
+Ordinarily, the kernel protects against userspace trying this by
+checking the value early in the truncate() and ftruncate() system calls
+calls - but there are at least two places that this check is bypassed:
+
+ (1) Cachefiles will round up the EOF of the backing file to DIO block
+     size so as to allow DIO on the final block - but this might push
+     the offset negative. It then calls notify_change(), but this
+     inadvertently bypasses the checking. This can be triggered if
+     someone puts an 8EiB-1 file on a server for someone else to try and
+     access by, say, nfs.
+
+ (2) ksmbd doesn't check the value it is given in set_end_of_file_info()
+     and then calls vfs_truncate() directly - which also bypasses the
+     check.
+
+In both cases, it is potentially possible for a network filesystem to
+cause a disk filesystem to be corrupted: cachefiles in the client's
+cache filesystem; ksmbd in the server's filesystem.
+
+nfsd is okay as it checks the value, but we can then remove this check
+too.
+
+Fix this by adding a check to inode_newsize_ok(), as called from
+setattr_prepare(), thereby catching the issue as filesystems set up to
+perform the truncate with minimal opportunity for bypassing the new
+check.
+
+Fixes: 1f08c925e7a3 ("cachefiles: Implement backing file wrangling")
+Fixes: f44158485826 ("cifsd: add file operations")
+Signed-off-by: David Howells <dhowells@redhat.com>
+Reported-by: Jeff Layton <jlayton@kernel.org>
+Tested-by: Jeff Layton <jlayton@kernel.org>
+Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
+Cc: stable@kernel.org
+Acked-by: Alexander Viro <viro@zeniv.linux.org.uk>
+cc: Steve French <sfrench@samba.org>
+cc: Hyunchul Lee <hyc.lee@gmail.com>
+cc: Chuck Lever <chuck.lever@oracle.com>
+cc: Dave Wysochanski <dwysocha@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/attr.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/attr.c
++++ b/fs/attr.c
+@@ -184,6 +184,8 @@ EXPORT_SYMBOL(setattr_prepare);
+  */
+ int inode_newsize_ok(const struct inode *inode, loff_t offset)
+ {
++      if (offset < 0)
++              return -EINVAL;
+       if (inode->i_size < offset) {
+               unsigned long limit;