]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Feb 2021 11:06:03 +0000 (12:06 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 22 Feb 2021 11:06:03 +0000 (12:06 +0100)
added patches:
kvm-check-tlbs_dirty-directly.patch
scsi-qla2xxx-fix-crash-during-driver-load-on-big-endian-machines.patch
usb-gadget-ethernet-re-enable-jumbo-frames.patch
usb-gadget-u_ether-fix-mtu-size-mismatch-with-rx-packet-size.patch

queue-4.14/kvm-check-tlbs_dirty-directly.patch [new file with mode: 0644]
queue-4.14/scsi-qla2xxx-fix-crash-during-driver-load-on-big-endian-machines.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/usb-gadget-ethernet-re-enable-jumbo-frames.patch [new file with mode: 0644]
queue-4.14/usb-gadget-u_ether-fix-mtu-size-mismatch-with-rx-packet-size.patch [new file with mode: 0644]

diff --git a/queue-4.14/kvm-check-tlbs_dirty-directly.patch b/queue-4.14/kvm-check-tlbs_dirty-directly.patch
new file mode 100644 (file)
index 0000000..0ce9401
--- /dev/null
@@ -0,0 +1,47 @@
+From foo@baz Mon Feb 22 11:59:24 AM CET 2021
+From: Lai Jiangshan <laijs@linux.alibaba.com>
+Date: Thu, 17 Dec 2020 23:41:18 +0800
+Subject: kvm: check tlbs_dirty directly
+
+From: Lai Jiangshan <laijs@linux.alibaba.com>
+
+commit 88bf56d04bc3564542049ec4ec168a8b60d0b48c upstream
+
+In kvm_mmu_notifier_invalidate_range_start(), tlbs_dirty is used as:
+        need_tlb_flush |= kvm->tlbs_dirty;
+with need_tlb_flush's type being int and tlbs_dirty's type being long.
+
+It means that tlbs_dirty is always used as int and the higher 32 bits
+is useless.  We need to check tlbs_dirty in a correct way and this
+change checks it directly without propagating it to need_tlb_flush.
+
+Note: it's _extremely_ unlikely this neglecting of higher 32 bits can
+cause problems in practice.  It would require encountering tlbs_dirty
+on a 4 billion count boundary, and KVM would need to be using shadow
+paging or be running a nested guest.
+
+Cc: stable@vger.kernel.org
+Fixes: a4ee1ca4a36e ("KVM: MMU: delay flush all tlbs on sync_page path")
+Signed-off-by: Lai Jiangshan <laijs@linux.alibaba.com>
+Message-Id: <20201217154118.16497-1-jiangshanlai@gmail.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+[sudip: adjust context]
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ virt/kvm/kvm_main.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -382,9 +382,8 @@ static void kvm_mmu_notifier_invalidate_
+        */
+       kvm->mmu_notifier_count++;
+       need_tlb_flush = kvm_unmap_hva_range(kvm, start, end);
+-      need_tlb_flush |= kvm->tlbs_dirty;
+       /* we've to flush the tlb before the pages can be freed */
+-      if (need_tlb_flush)
++      if (need_tlb_flush || kvm->tlbs_dirty)
+               kvm_flush_remote_tlbs(kvm);
+       spin_unlock(&kvm->mmu_lock);
diff --git a/queue-4.14/scsi-qla2xxx-fix-crash-during-driver-load-on-big-endian-machines.patch b/queue-4.14/scsi-qla2xxx-fix-crash-during-driver-load-on-big-endian-machines.patch
new file mode 100644 (file)
index 0000000..f16b0a5
--- /dev/null
@@ -0,0 +1,90 @@
+From foo@baz Mon Feb 22 11:51:51 AM CET 2021
+From: Arun Easi <aeasi@marvell.com>
+Date: Wed, 2 Dec 2020 05:23:04 -0800
+Subject: scsi: qla2xxx: Fix crash during driver load on big endian machines
+
+From: Arun Easi <aeasi@marvell.com>
+
+commit 8de309e7299a00b3045fb274f82b326f356404f0 upstream
+
+Crash stack:
+       [576544.715489] Unable to handle kernel paging request for data at address 0xd00000000f970000
+       [576544.715497] Faulting instruction address: 0xd00000000f880f64
+       [576544.715503] Oops: Kernel access of bad area, sig: 11 [#1]
+       [576544.715506] SMP NR_CPUS=2048 NUMA pSeries
+       :
+       [576544.715703] NIP [d00000000f880f64] .qla27xx_fwdt_template_valid+0x94/0x100 [qla2xxx]
+       [576544.715722] LR [d00000000f7952dc] .qla24xx_load_risc_flash+0x2fc/0x590 [qla2xxx]
+       [576544.715726] Call Trace:
+       [576544.715731] [c0000004d0ffb000] [c0000006fe02c350] 0xc0000006fe02c350 (unreliable)
+       [576544.715750] [c0000004d0ffb080] [d00000000f7952dc] .qla24xx_load_risc_flash+0x2fc/0x590 [qla2xxx]
+       [576544.715770] [c0000004d0ffb170] [d00000000f7aa034] .qla81xx_load_risc+0x84/0x1a0 [qla2xxx]
+       [576544.715789] [c0000004d0ffb210] [d00000000f79f7c8] .qla2x00_setup_chip+0xc8/0x910 [qla2xxx]
+       [576544.715808] [c0000004d0ffb300] [d00000000f7a631c] .qla2x00_initialize_adapter+0x4dc/0xb00 [qla2xxx]
+       [576544.715826] [c0000004d0ffb3e0] [d00000000f78ce28] .qla2x00_probe_one+0xf08/0x2200 [qla2xxx]
+
+Link: https://lore.kernel.org/r/20201202132312.19966-8-njavali@marvell.com
+Fixes: f73cb695d3ec ("[SCSI] qla2xxx: Add support for ISP2071.")
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Arun Easi <aeasi@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+[sudip: adjust context]
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_tmpl.c |    9 +++++----
+ drivers/scsi/qla2xxx/qla_tmpl.h |    2 +-
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_tmpl.c
++++ b/drivers/scsi/qla2xxx/qla_tmpl.c
+@@ -897,7 +897,8 @@ qla27xx_template_checksum(void *p, ulong
+ static inline int
+ qla27xx_verify_template_checksum(struct qla27xx_fwdt_template *tmp)
+ {
+-      return qla27xx_template_checksum(tmp, tmp->template_size) == 0;
++      return qla27xx_template_checksum(tmp,
++              le32_to_cpu(tmp->template_size)) == 0;
+ }
+ static inline int
+@@ -913,7 +914,7 @@ qla27xx_execute_fwdt_template(struct scs
+       ulong len;
+       if (qla27xx_fwdt_template_valid(tmp)) {
+-              len = tmp->template_size;
++              len = le32_to_cpu(tmp->template_size);
+               tmp = memcpy(vha->hw->fw_dump, tmp, len);
+               ql27xx_edit_template(vha, tmp);
+               qla27xx_walk_template(vha, tmp, tmp, &len);
+@@ -929,7 +930,7 @@ qla27xx_fwdt_calculate_dump_size(struct
+       ulong len = 0;
+       if (qla27xx_fwdt_template_valid(tmp)) {
+-              len = tmp->template_size;
++              len = le32_to_cpu(tmp->template_size);
+               qla27xx_walk_template(vha, tmp, NULL, &len);
+       }
+@@ -941,7 +942,7 @@ qla27xx_fwdt_template_size(void *p)
+ {
+       struct qla27xx_fwdt_template *tmp = p;
+-      return tmp->template_size;
++      return le32_to_cpu(tmp->template_size);
+ }
+ ulong
+--- a/drivers/scsi/qla2xxx/qla_tmpl.h
++++ b/drivers/scsi/qla2xxx/qla_tmpl.h
+@@ -13,7 +13,7 @@
+ struct __packed qla27xx_fwdt_template {
+       uint32_t template_type;
+       uint32_t entry_offset;
+-      uint32_t template_size;
++      __le32 template_size;
+       uint32_t reserved_1;
+       uint32_t entry_count;
index 18d11d073bb0fab9805ad368a4fe2da64d7be3db..1a913ae1c0823f9094807f2955367a085c2fb1a7 100644 (file)
@@ -51,3 +51,7 @@ xen-blkback-don-t-handle-error-by-bug.patch
 xen-netback-don-t-handle-error-by-bug.patch
 xen-scsiback-don-t-handle-error-by-bug.patch
 xen-blkback-fix-error-handling-in-xen_blkbk_map.patch
+scsi-qla2xxx-fix-crash-during-driver-load-on-big-endian-machines.patch
+usb-gadget-ethernet-re-enable-jumbo-frames.patch
+usb-gadget-u_ether-fix-mtu-size-mismatch-with-rx-packet-size.patch
+kvm-check-tlbs_dirty-directly.patch
diff --git a/queue-4.14/usb-gadget-ethernet-re-enable-jumbo-frames.patch b/queue-4.14/usb-gadget-ethernet-re-enable-jumbo-frames.patch
new file mode 100644 (file)
index 0000000..6183414
--- /dev/null
@@ -0,0 +1,35 @@
+From foo@baz Mon Feb 22 11:52:57 AM CET 2021
+From: John Greb <h3x4m3r0n@gmail.com>
+Date: Sun, 6 May 2018 20:01:57 +0000
+Subject: USB: Gadget Ethernet: Re-enable Jumbo frames.
+
+From: John Greb <h3x4m3r0n@gmail.com>
+
+commit eea52743eb5654ec6f52b0e8b4aefec952543697 upstream
+
+Fixes: <b3e3893e1253> ("net: use core MTU range checking")
+which patched only one of two functions used to setup the
+USB Gadget Ethernet driver, causing a serious performance
+regression in the ability to increase mtu size above 1500.
+
+Signed-off-by: John Greb <h3x4m3r0n@gmail.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/gadget/function/u_ether.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/usb/gadget/function/u_ether.c
++++ b/drivers/usb/gadget/function/u_ether.c
+@@ -850,6 +850,10 @@ struct net_device *gether_setup_name_def
+       net->ethtool_ops = &ops;
+       SET_NETDEV_DEVTYPE(net, &gadget_type);
++      /* MTU range: 14 - 15412 */
++      net->min_mtu = ETH_HLEN;
++      net->max_mtu = GETHER_MAX_ETH_FRAME_LEN;
++
+       return net;
+ }
+ EXPORT_SYMBOL_GPL(gether_setup_name_default);
diff --git a/queue-4.14/usb-gadget-u_ether-fix-mtu-size-mismatch-with-rx-packet-size.patch b/queue-4.14/usb-gadget-u_ether-fix-mtu-size-mismatch-with-rx-packet-size.patch
new file mode 100644 (file)
index 0000000..a99aa6a
--- /dev/null
@@ -0,0 +1,60 @@
+From foo@baz Mon Feb 22 11:53:20 AM CET 2021
+From: Manish Narani <manish.narani@xilinx.com>
+Date: Tue, 17 Nov 2020 12:43:35 +0530
+Subject: usb: gadget: u_ether: Fix MTU size mismatch with RX packet size
+
+From: Manish Narani <manish.narani@xilinx.com>
+
+commit 0a88fa221ce911c331bf700d2214c5b2f77414d3 upstream
+
+Fix the MTU size issue with RX packet size as the host sends the packet
+with extra bytes containing ethernet header. This causes failure when
+user sets the MTU size to the maximum i.e. 15412. In this case the
+ethernet packet received will be of length 15412 plus the ethernet header
+length. This patch fixes the issue where there is a check that RX packet
+length must not be more than max packet length.
+
+Fixes: bba787a860fa ("usb: gadget: ether: Allow jumbo frames")
+Signed-off-by: Manish Narani <manish.narani@xilinx.com>
+Cc: stable <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/1605597215-122027-1-git-send-email-manish.narani@xilinx.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/gadget/function/u_ether.c |    9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/gadget/function/u_ether.c
++++ b/drivers/usb/gadget/function/u_ether.c
+@@ -49,9 +49,10 @@
+ #define UETH__VERSION "29-May-2008"
+ /* Experiments show that both Linux and Windows hosts allow up to 16k
+- * frame sizes. Set the max size to 15k+52 to prevent allocating 32k
++ * frame sizes. Set the max MTU size to 15k+52 to prevent allocating 32k
+  * blocks and still have efficient handling. */
+-#define GETHER_MAX_ETH_FRAME_LEN 15412
++#define GETHER_MAX_MTU_SIZE 15412
++#define GETHER_MAX_ETH_FRAME_LEN (GETHER_MAX_MTU_SIZE + ETH_HLEN)
+ struct eth_dev {
+       /* lock is held while accessing port_usb
+@@ -790,7 +791,7 @@ struct eth_dev *gether_setup_name(struct
+       /* MTU range: 14 - 15412 */
+       net->min_mtu = ETH_HLEN;
+-      net->max_mtu = GETHER_MAX_ETH_FRAME_LEN;
++      net->max_mtu = GETHER_MAX_MTU_SIZE;
+       dev->gadget = g;
+       SET_NETDEV_DEV(net, &g->dev);
+@@ -852,7 +853,7 @@ struct net_device *gether_setup_name_def
+       /* MTU range: 14 - 15412 */
+       net->min_mtu = ETH_HLEN;
+-      net->max_mtu = GETHER_MAX_ETH_FRAME_LEN;
++      net->max_mtu = GETHER_MAX_MTU_SIZE;
+       return net;
+ }