From: Greg Kroah-Hartman Date: Thu, 17 Feb 2022 19:25:50 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.9.303~85 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c6dd15856d4861b7ecfbb7bac5a9dc6fc2a1bd0a;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: btrfs-send-in-case-of-io-error-log-it.patch hid-add-support-for-ugtablet-wp5540.patch makefile.extrawarn-move-wunaligned-access-to-w-1.patch parisc-drop-__init-from-map_pages-declaration.patch parisc-fix-data-tlb-miss-in-sba_unmap_sg.patch parisc-fix-sglist-access-in-ccio-dma.c.patch revert-svm-add-warning-message-for-avic-ipi-invalid-target.patch serial-parisc-gsc-fix-build-when-iosapic-is-not-set.patch --- diff --git a/queue-5.4/btrfs-send-in-case-of-io-error-log-it.patch b/queue-5.4/btrfs-send-in-case-of-io-error-log-it.patch new file mode 100644 index 00000000000..992420f738c --- /dev/null +++ b/queue-5.4/btrfs-send-in-case-of-io-error-log-it.patch @@ -0,0 +1,38 @@ +From 2e7be9db125a0bf940c5d65eb5c40d8700f738b5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= +Date: Sat, 5 Feb 2022 20:48:23 +0200 +Subject: btrfs: send: in case of IO error log it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Dāvis Mosāns + +commit 2e7be9db125a0bf940c5d65eb5c40d8700f738b5 upstream. + +Currently if we get IO error while doing send then we abort without +logging information about which file caused issue. So log it to help +with debugging. + +CC: stable@vger.kernel.org # 4.9+ +Signed-off-by: Dāvis Mosāns +Reviewed-by: David Sterba +Signed-off-by: David Sterba +Signed-off-by: Greg Kroah-Hartman +--- + fs/btrfs/send.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/fs/btrfs/send.c ++++ b/fs/btrfs/send.c +@@ -5005,6 +5005,10 @@ static ssize_t fill_read_buf(struct send + lock_page(page); + if (!PageUptodate(page)) { + unlock_page(page); ++ btrfs_err(fs_info, ++ "send: IO error at offset %llu for inode %llu root %llu", ++ page_offset(page), sctx->cur_ino, ++ sctx->send_root->root_key.objectid); + put_page(page); + ret = -EIO; + break; diff --git a/queue-5.4/hid-add-support-for-ugtablet-wp5540.patch b/queue-5.4/hid-add-support-for-ugtablet-wp5540.patch new file mode 100644 index 00000000000..e9e8cc8f74a --- /dev/null +++ b/queue-5.4/hid-add-support-for-ugtablet-wp5540.patch @@ -0,0 +1,43 @@ +From fd5dd6acd8f823ea804f76d3af64fa1be9d5fb78 Mon Sep 17 00:00:00 2001 +From: Sergio Costas +Date: Fri, 4 Feb 2022 10:01:17 +0100 +Subject: HID:Add support for UGTABLET WP5540 + +From: Sergio Costas + +commit fd5dd6acd8f823ea804f76d3af64fa1be9d5fb78 upstream. + +This patch adds support for the UGTABLET WP5540 digitizer tablet +devices. Without it, the pen moves the cursor, but neither the +buttons nor the tap sensor in the tip do work. + +Signed-off-by: Sergio Costas +Link: https://lore.kernel.org/r/63dece1d-91ca-1b1b-d90d-335be66896be@gmail.com +Cc: stable@vger.kernel.org +Signed-off-by: Benjamin Tissoires +Signed-off-by: Greg Kroah-Hartman +--- + drivers/hid/hid-ids.h | 1 + + drivers/hid/hid-quirks.c | 1 + + 2 files changed, 2 insertions(+) + +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -1311,6 +1311,7 @@ + #define USB_VENDOR_ID_UGTIZER 0x2179 + #define USB_DEVICE_ID_UGTIZER_TABLET_GP0610 0x0053 + #define USB_DEVICE_ID_UGTIZER_TABLET_GT5040 0x0077 ++#define USB_DEVICE_ID_UGTIZER_TABLET_WP5540 0x0004 + + #define USB_VENDOR_ID_VIEWSONIC 0x0543 + #define USB_DEVICE_ID_VIEWSONIC_PD1011 0xe621 +--- a/drivers/hid/hid-quirks.c ++++ b/drivers/hid/hid-quirks.c +@@ -187,6 +187,7 @@ static const struct hid_device_id hid_qu + { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA60), HID_QUIRK_MULTI_INPUT }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP5540), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT }, diff --git a/queue-5.4/makefile.extrawarn-move-wunaligned-access-to-w-1.patch b/queue-5.4/makefile.extrawarn-move-wunaligned-access-to-w-1.patch new file mode 100644 index 00000000000..12563a29157 --- /dev/null +++ b/queue-5.4/makefile.extrawarn-move-wunaligned-access-to-w-1.patch @@ -0,0 +1,46 @@ +From 1cf5f151d25fcca94689efd91afa0253621fb33a Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Wed, 2 Feb 2022 16:05:16 -0700 +Subject: Makefile.extrawarn: Move -Wunaligned-access to W=1 + +From: Nathan Chancellor + +commit 1cf5f151d25fcca94689efd91afa0253621fb33a upstream. + +-Wunaligned-access is a new warning in clang that is default enabled for +arm and arm64 under certain circumstances within the clang frontend (see +LLVM commit below). On v5.17-rc2, an ARCH=arm allmodconfig build shows +1284 total/70 unique instances of this warning (most of the instances +are in header files), which is quite noisy. + +To keep a normal build green through CONFIG_WERROR, only show this +warning with W=1, which will allow automated build systems to catch new +instances of the warning so that the total number can be driven down to +zero eventually since catching unaligned accesses at compile time would +be generally useful. + +Cc: stable@vger.kernel.org +Link: https://github.com/llvm/llvm-project/commit/35737df4dcd28534bd3090157c224c19b501278a +Link: https://github.com/ClangBuiltLinux/linux/issues/1569 +Link: https://github.com/ClangBuiltLinux/linux/issues/1576 +Signed-off-by: Nathan Chancellor +Reviewed-by: Nick Desaulniers +Signed-off-by: Masahiro Yamada +[nathan: Fix conflict due to lack of afe956c577b2d] +Signed-off-by: Nathan Chancellor +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/Makefile.extrawarn | 1 + + 1 file changed, 1 insertion(+) + +--- a/scripts/Makefile.extrawarn ++++ b/scripts/Makefile.extrawarn +@@ -49,6 +49,7 @@ KBUILD_CFLAGS += -Wno-format + KBUILD_CFLAGS += -Wno-sign-compare + KBUILD_CFLAGS += -Wno-format-zero-length + KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) ++KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) + endif + + endif diff --git a/queue-5.4/parisc-drop-__init-from-map_pages-declaration.patch b/queue-5.4/parisc-drop-__init-from-map_pages-declaration.patch new file mode 100644 index 00000000000..2f571374bdb --- /dev/null +++ b/queue-5.4/parisc-drop-__init-from-map_pages-declaration.patch @@ -0,0 +1,61 @@ +From 9129886b88185962538180625ca8051362b01327 Mon Sep 17 00:00:00 2001 +From: John David Anglin +Date: Sat, 22 Jan 2022 18:19:49 +0000 +Subject: parisc: Drop __init from map_pages declaration + +From: John David Anglin + +commit 9129886b88185962538180625ca8051362b01327 upstream. + +With huge kernel pages, we randomly eat a SPARC in map_pages(). This +is fixed by dropping __init from the declaration. + +However, map_pages references the __init routine memblock_alloc_try_nid +via memblock_alloc. Thus, it needs to be marked with __ref. + +memblock_alloc is only called before the kernel text is set to readonly. + +The __ref on free_initmem is no longer needed. + +Comment regarding map_pages being in the init section is removed. + +Signed-off-by: John David Anglin +Cc: stable@vger.kernel.org # v5.4+ +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman +--- + arch/parisc/mm/init.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/arch/parisc/mm/init.c ++++ b/arch/parisc/mm/init.c +@@ -347,9 +347,9 @@ static void __init setup_bootmem(void) + + static bool kernel_set_to_readonly; + +-static void __init map_pages(unsigned long start_vaddr, +- unsigned long start_paddr, unsigned long size, +- pgprot_t pgprot, int force) ++static void __ref map_pages(unsigned long start_vaddr, ++ unsigned long start_paddr, unsigned long size, ++ pgprot_t pgprot, int force) + { + pgd_t *pg_dir; + pmd_t *pmd; +@@ -485,7 +485,7 @@ void __init set_kernel_text_rw(int enabl + flush_tlb_all(); + } + +-void __ref free_initmem(void) ++void free_initmem(void) + { + unsigned long init_begin = (unsigned long)__init_begin; + unsigned long init_end = (unsigned long)__init_end; +@@ -499,7 +499,6 @@ void __ref free_initmem(void) + /* The init text pages are marked R-X. We have to + * flush the icache and mark them RW- + * +- * This is tricky, because map_pages is in the init section. + * Do a dummy remap of the data section first (the data + * section is already PAGE_KERNEL) to pull in the TLB entries + * for map_kernel */ diff --git a/queue-5.4/parisc-fix-data-tlb-miss-in-sba_unmap_sg.patch b/queue-5.4/parisc-fix-data-tlb-miss-in-sba_unmap_sg.patch new file mode 100644 index 00000000000..fe311d21443 --- /dev/null +++ b/queue-5.4/parisc-fix-data-tlb-miss-in-sba_unmap_sg.patch @@ -0,0 +1,86 @@ +From b7d6f44a0fa716a82969725516dc0b16bc7cd514 Mon Sep 17 00:00:00 2001 +From: John David Anglin +Date: Wed, 26 Jan 2022 20:39:05 +0000 +Subject: parisc: Fix data TLB miss in sba_unmap_sg + +From: John David Anglin + +commit b7d6f44a0fa716a82969725516dc0b16bc7cd514 upstream. + +Rolf Eike Beer reported the following bug: + +[1274934.746891] Bad Address (null pointer deref?): Code=15 (Data TLB miss fault) at addr 0000004140000018 +[1274934.746891] CPU: 3 PID: 5549 Comm: cmake Not tainted 5.15.4-gentoo-parisc64 #4 +[1274934.746891] Hardware name: 9000/785/C8000 +[1274934.746891] +[1274934.746891] YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI +[1274934.746891] PSW: 00001000000001001111111000001110 Not tainted +[1274934.746891] r00-03 000000ff0804fe0e 0000000040bc9bc0 00000000406760e4 0000004140000000 +[1274934.746891] r04-07 0000000040b693c0 0000004140000000 000000004a2b08b0 0000000000000001 +[1274934.746891] r08-11 0000000041f98810 0000000000000000 000000004a0a7000 0000000000000001 +[1274934.746891] r12-15 0000000040bddbc0 0000000040c0cbc0 0000000040bddbc0 0000000040bddbc0 +[1274934.746891] r16-19 0000000040bde3c0 0000000040bddbc0 0000000040bde3c0 0000000000000007 +[1274934.746891] r20-23 0000000000000006 000000004a368950 0000000000000000 0000000000000001 +[1274934.746891] r24-27 0000000000001fff 000000000800000e 000000004a1710f0 0000000040b693c0 +[1274934.746891] r28-31 0000000000000001 0000000041f988b0 0000000041f98840 000000004a171118 +[1274934.746891] sr00-03 00000000066e5800 0000000000000000 0000000000000000 00000000066e5800 +[1274934.746891] sr04-07 0000000000000000 0000000000000000 0000000000000000 0000000000000000 +[1274934.746891] +[1274934.746891] IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000406760e8 00000000406760ec +[1274934.746891] IIR: 48780030 ISR: 0000000000000000 IOR: 0000004140000018 +[1274934.746891] CPU: 3 CR30: 00000040e3a9c000 CR31: ffffffffffffffff +[1274934.746891] ORIG_R28: 0000000040acdd58 +[1274934.746891] IAOQ[0]: sba_unmap_sg+0xb0/0x118 +[1274934.746891] IAOQ[1]: sba_unmap_sg+0xb4/0x118 +[1274934.746891] RP(r2): sba_unmap_sg+0xac/0x118 +[1274934.746891] Backtrace: +[1274934.746891] [<00000000402740cc>] dma_unmap_sg_attrs+0x6c/0x70 +[1274934.746891] [<000000004074d6bc>] scsi_dma_unmap+0x54/0x60 +[1274934.746891] [<00000000407a3488>] mptscsih_io_done+0x150/0xd70 +[1274934.746891] [<0000000040798600>] mpt_interrupt+0x168/0xa68 +[1274934.746891] [<0000000040255a48>] __handle_irq_event_percpu+0xc8/0x278 +[1274934.746891] [<0000000040255c34>] handle_irq_event_percpu+0x3c/0xd8 +[1274934.746891] [<000000004025ecb4>] handle_percpu_irq+0xb4/0xf0 +[1274934.746891] [<00000000402548e0>] generic_handle_irq+0x50/0x70 +[1274934.746891] [<000000004019a254>] call_on_stack+0x18/0x24 +[1274934.746891] +[1274934.746891] Kernel panic - not syncing: Bad Address (null pointer deref?) + +The bug is caused by overrunning the sglist and incorrectly testing +sg_dma_len(sglist) before nents. Normally this doesn't cause a crash, +but in this case sglist crossed a page boundary. This occurs in the +following code: + + while (sg_dma_len(sglist) && nents--) { + +The fix is simply to test nents first and move the decrement of nents +into the loop. + +Reported-by: Rolf Eike Beer +Signed-off-by: John David Anglin +Cc: stable@vger.kernel.org +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/parisc/sba_iommu.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/parisc/sba_iommu.c ++++ b/drivers/parisc/sba_iommu.c +@@ -1047,7 +1047,7 @@ sba_unmap_sg(struct device *dev, struct + spin_unlock_irqrestore(&ioc->res_lock, flags); + #endif + +- while (sg_dma_len(sglist) && nents--) { ++ while (nents && sg_dma_len(sglist)) { + + sba_unmap_page(dev, sg_dma_address(sglist), sg_dma_len(sglist), + direction, 0); +@@ -1056,6 +1056,7 @@ sba_unmap_sg(struct device *dev, struct + ioc->usingle_calls--; /* kluge since call is unmap_sg() */ + #endif + ++sglist; ++ nents--; + } + + DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents); diff --git a/queue-5.4/parisc-fix-sglist-access-in-ccio-dma.c.patch b/queue-5.4/parisc-fix-sglist-access-in-ccio-dma.c.patch new file mode 100644 index 00000000000..b0ae31b66dd --- /dev/null +++ b/queue-5.4/parisc-fix-sglist-access-in-ccio-dma.c.patch @@ -0,0 +1,39 @@ +From d7da660cab47183cded65e11b64497d0f56c6edf Mon Sep 17 00:00:00 2001 +From: John David Anglin +Date: Thu, 27 Jan 2022 22:33:41 +0000 +Subject: parisc: Fix sglist access in ccio-dma.c + +From: John David Anglin + +commit d7da660cab47183cded65e11b64497d0f56c6edf upstream. + +This patch implements the same bug fix to ccio-dma.c as to sba_iommu.c. +It ensures that only the allocated entries of the sglist are accessed. + +Signed-off-by: John David Anglin +Cc: stable@vger.kernel.org +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/parisc/ccio-dma.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/parisc/ccio-dma.c ++++ b/drivers/parisc/ccio-dma.c +@@ -1003,7 +1003,7 @@ ccio_unmap_sg(struct device *dev, struct + ioc->usg_calls++; + #endif + +- while(sg_dma_len(sglist) && nents--) { ++ while (nents && sg_dma_len(sglist)) { + + #ifdef CCIO_COLLECT_STATS + ioc->usg_pages += sg_dma_len(sglist) >> PAGE_SHIFT; +@@ -1011,6 +1011,7 @@ ccio_unmap_sg(struct device *dev, struct + ccio_unmap_page(dev, sg_dma_address(sglist), + sg_dma_len(sglist), direction, 0); + ++sglist; ++ nents--; + } + + DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents); diff --git a/queue-5.4/revert-svm-add-warning-message-for-avic-ipi-invalid-target.patch b/queue-5.4/revert-svm-add-warning-message-for-avic-ipi-invalid-target.patch new file mode 100644 index 00000000000..bb0dd950bec --- /dev/null +++ b/queue-5.4/revert-svm-add-warning-message-for-avic-ipi-invalid-target.patch @@ -0,0 +1,38 @@ +From dd4589eee99db8f61f7b8f7df1531cad3f74a64d Mon Sep 17 00:00:00 2001 +From: Sean Christopherson +Date: Fri, 4 Feb 2022 21:41:55 +0000 +Subject: Revert "svm: Add warning message for AVIC IPI invalid target" + +From: Sean Christopherson + +commit dd4589eee99db8f61f7b8f7df1531cad3f74a64d upstream. + +Remove a WARN on an "AVIC IPI invalid target" exit, the WARN is trivial +to trigger from guest as it will fail on any destination APIC ID that +doesn't exist from the guest's perspective. + +Don't bother recording anything in the kernel log, the common tracepoint +for kvm_avic_incomplete_ipi() is sufficient for debugging. + +This reverts commit 37ef0c4414c9743ba7f1af4392f0a27a99649f2a. + +Cc: stable@vger.kernel.org +Signed-off-by: Sean Christopherson +Message-Id: <20220204214205.3306634-2-seanjc@google.com> +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/svm.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/arch/x86/kvm/svm.c ++++ b/arch/x86/kvm/svm.c +@@ -4585,8 +4585,6 @@ static int avic_incomplete_ipi_intercept + break; + } + case AVIC_IPI_FAILURE_INVALID_TARGET: +- WARN_ONCE(1, "Invalid IPI target: index=%u, vcpu=%d, icr=%#0x:%#0x\n", +- index, svm->vcpu.vcpu_id, icrh, icrl); + break; + case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE: + WARN_ONCE(1, "Invalid backing page\n"); diff --git a/queue-5.4/serial-parisc-gsc-fix-build-when-iosapic-is-not-set.patch b/queue-5.4/serial-parisc-gsc-fix-build-when-iosapic-is-not-set.patch new file mode 100644 index 00000000000..10812286ca8 --- /dev/null +++ b/queue-5.4/serial-parisc-gsc-fix-build-when-iosapic-is-not-set.patch @@ -0,0 +1,54 @@ +From 6e8793674bb0d1135ca0e5c9f7e16fecbf815926 Mon Sep 17 00:00:00 2001 +From: Randy Dunlap +Date: Mon, 14 Feb 2022 10:00:19 -0800 +Subject: serial: parisc: GSC: fix build when IOSAPIC is not set + +From: Randy Dunlap + +commit 6e8793674bb0d1135ca0e5c9f7e16fecbf815926 upstream. + +There is a build error when using a kernel .config file from +'kernel test robot' for a different build problem: + +hppa64-linux-ld: drivers/tty/serial/8250/8250_gsc.o: in function `.LC3': +(.data.rel.ro+0x18): undefined reference to `iosapic_serial_irq' + +when: + CONFIG_GSC=y + CONFIG_SERIO_GSCPS2=y + CONFIG_SERIAL_8250_GSC=y + CONFIG_PCI is not set + and hence PCI_LBA is not set. + IOSAPIC depends on PCI_LBA, so IOSAPIC is not set/enabled. + +Make the use of iosapic_serial_irq() conditional to fix the build error. + +Signed-off-by: Randy Dunlap +Reported-by: kernel test robot +Cc: "James E.J. Bottomley" +Cc: Helge Deller +Cc: linux-parisc@vger.kernel.org +Cc: Greg Kroah-Hartman +Cc: linux-serial@vger.kernel.org +Cc: Jiri Slaby +Cc: Johan Hovold +Suggested-by: Helge Deller +Signed-off-by: Helge Deller +Cc: stable@vger.kernel.org +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/8250/8250_gsc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/tty/serial/8250/8250_gsc.c ++++ b/drivers/tty/serial/8250/8250_gsc.c +@@ -26,7 +26,7 @@ static int __init serial_init_chip(struc + unsigned long address; + int err; + +-#ifdef CONFIG_64BIT ++#if defined(CONFIG_64BIT) && defined(CONFIG_IOSAPIC) + if (!dev->irq && (dev->id.sversion == 0xad)) + dev->irq = iosapic_serial_irq(dev); + #endif diff --git a/queue-5.4/series b/queue-5.4/series new file mode 100644 index 00000000000..9a2548c3feb --- /dev/null +++ b/queue-5.4/series @@ -0,0 +1,8 @@ +makefile.extrawarn-move-wunaligned-access-to-w-1.patch +hid-add-support-for-ugtablet-wp5540.patch +revert-svm-add-warning-message-for-avic-ipi-invalid-target.patch +serial-parisc-gsc-fix-build-when-iosapic-is-not-set.patch +parisc-drop-__init-from-map_pages-declaration.patch +parisc-fix-data-tlb-miss-in-sba_unmap_sg.patch +parisc-fix-sglist-access-in-ccio-dma.c.patch +btrfs-send-in-case-of-io-error-log-it.patch