]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.8
authorSasha Levin <sashal@kernel.org>
Sun, 4 Oct 2020 22:23:49 +0000 (18:23 -0400)
committerSasha Levin <sashal@kernel.org>
Sun, 4 Oct 2020 22:23:49 +0000 (18:23 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
27 files changed:
queue-5.8/clocksource-drivers-timer-gx6605s-fixup-counter-relo.patch [new file with mode: 0644]
queue-5.8/cpuidle-psci-fix-suspicious-rcu-usage.patch [new file with mode: 0644]
queue-5.8/drivers-net-wan-hdlc-set-skb-protocol-before-transmi.patch [new file with mode: 0644]
queue-5.8/drivers-net-wan-hdlc_fr-add-needed_headroom-for-pvc-.patch [new file with mode: 0644]
queue-5.8/drivers-net-wan-lapbether-make-skb-protocol-consiste.patch [new file with mode: 0644]
queue-5.8/drm-sun4i-mixer-extend-regmap-max_register.patch [new file with mode: 0644]
queue-5.8/fuse-fix-the-direct_io-treatment-of-iov_iter.patch [new file with mode: 0644]
queue-5.8/hv_netvsc-cache-the-current-data-path-to-avoid-dupli.patch [new file with mode: 0644]
queue-5.8/io_uring-mark-statx-files_update-epoll_ctl-as-non-sq.patch [new file with mode: 0644]
queue-5.8/libbpf-remove-arch-specific-include-path-in-makefile.patch [new file with mode: 0644]
queue-5.8/mac80211-do-not-allow-bigger-vht-mpdus-than-the-hard.patch [new file with mode: 0644]
queue-5.8/mac80211-fix-radiotap-header-channel-flag-for-6ghz-b.patch [new file with mode: 0644]
queue-5.8/mt76-mt7915-use-ieee80211_free_txskb-to-free-tx-skbs.patch [new file with mode: 0644]
queue-5.8/net-dec-de2104x-increase-receive-ring-size-for-tulip.patch [new file with mode: 0644]
queue-5.8/net-dsa-felix-fix-some-key-offsets-for-ip4_tcp_udp-v.patch [new file with mode: 0644]
queue-5.8/nvme-core-get-put-ctrl-and-transport-module-in-nvme_.patch [new file with mode: 0644]
queue-5.8/nvme-fc-fail-new-connections-to-a-deleted-host-or-re.patch [new file with mode: 0644]
queue-5.8/nvme-pci-disable-the-write-zeros-command-for-intel-6.patch [new file with mode: 0644]
queue-5.8/nvme-pci-fix-null-req-in-completion-handler.patch [new file with mode: 0644]
queue-5.8/revert-wlcore-adding-suppoprt-for-igtk-key-in-wlcore.patch [new file with mode: 0644]
queue-5.8/rndis_host-increase-sleep-time-in-the-query-response.patch [new file with mode: 0644]
queue-5.8/scripts-kallsyms-skip-ppc-compiler-stub-.long_branch.patch [new file with mode: 0644]
queue-5.8/series
queue-5.8/spi-fsl-espi-only-process-interrupts-for-expected-ev.patch [new file with mode: 0644]
queue-5.8/tools-io_uring-fix-compile-breakage.patch [new file with mode: 0644]
queue-5.8/tracing-make-the-space-reserved-for-the-pid-wider.patch [new file with mode: 0644]
queue-5.8/vboxsf-fix-the-check-for-the-old-binary-mount-argume.patch [new file with mode: 0644]

diff --git a/queue-5.8/clocksource-drivers-timer-gx6605s-fixup-counter-relo.patch b/queue-5.8/clocksource-drivers-timer-gx6605s-fixup-counter-relo.patch
new file mode 100644 (file)
index 0000000..7be8274
--- /dev/null
@@ -0,0 +1,41 @@
+From dd04aff33487c05eb90502f397d53ba16f7d3eed Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 18 Aug 2020 07:31:17 +0000
+Subject: clocksource/drivers/timer-gx6605s: Fixup counter reload
+
+From: Guo Ren <guoren@linux.alibaba.com>
+
+[ Upstream commit bc6717d55d07110d8f3c6d31ec2af50c11b07091 ]
+
+When the timer counts to the upper limit, an overflow interrupt is
+generated, and the count is reset with the value in the TIME_INI
+register. But the software expects to start counting from 0 when
+the count overflows, so it forces TIME_INI to 0 to solve the
+potential interrupt storm problem.
+
+Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
+Tested-by: Xu Kai <xukai@nationalchip.com>
+Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
+Link: https://lore.kernel.org/r/1597735877-71115-1-git-send-email-guoren@kernel.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/clocksource/timer-gx6605s.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/clocksource/timer-gx6605s.c b/drivers/clocksource/timer-gx6605s.c
+index 80d0939d040b5..8d386adbe8009 100644
+--- a/drivers/clocksource/timer-gx6605s.c
++++ b/drivers/clocksource/timer-gx6605s.c
+@@ -28,6 +28,7 @@ static irqreturn_t gx6605s_timer_interrupt(int irq, void *dev)
+       void __iomem *base = timer_of_base(to_timer_of(ce));
+       writel_relaxed(GX6605S_STATUS_CLR, base + TIMER_STATUS);
++      writel_relaxed(0, base + TIMER_INI);
+       ce->event_handler(ce);
+-- 
+2.25.1
+
diff --git a/queue-5.8/cpuidle-psci-fix-suspicious-rcu-usage.patch b/queue-5.8/cpuidle-psci-fix-suspicious-rcu-usage.patch
new file mode 100644 (file)
index 0000000..3e17cdd
--- /dev/null
@@ -0,0 +1,92 @@
+From 4b076e9278759e191ce2efce24675a02b188fc70 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 4 Sep 2020 08:47:05 +0200
+Subject: cpuidle: psci: Fix suspicious RCU usage
+
+From: Ulf Hansson <ulf.hansson@linaro.org>
+
+[ Upstream commit 36050d8984ab743f9990a2eb97a0062fdc3d7bbd ]
+
+The commit eb1f00237aca ("lockdep,trace: Expose tracepoints"), started to
+expose us for tracepoints. This lead to the following RCU splat on an ARM64
+Qcom board.
+
+[    5.529634] WARNING: suspicious RCU usage
+[    5.537307] sdhci-pltfm: SDHCI platform and OF driver helper
+[    5.541092] 5.9.0-rc3 #86 Not tainted
+[    5.541098] -----------------------------
+[    5.541105] ../include/trace/events/lock.h:37 suspicious rcu_dereference_check() usage!
+[    5.541110]
+[    5.541110] other info that might help us debug this:
+[    5.541110]
+[    5.541116]
+[    5.541116] rcu_scheduler_active = 2, debug_locks = 1
+[    5.541122] RCU used illegally from extended quiescent state!
+[    5.541129] no locks held by swapper/0/0.
+[    5.541134]
+[    5.541134] stack backtrace:
+[    5.541143] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.9.0-rc3 #86
+[    5.541149] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
+[    5.541157] Call trace:
+[    5.568185] sdhci_msm 7864900.sdhci: Got CD GPIO
+[    5.574186]  dump_backtrace+0x0/0x1c8
+[    5.574206]  show_stack+0x14/0x20
+[    5.574229]  dump_stack+0xe8/0x154
+[    5.574250]  lockdep_rcu_suspicious+0xd4/0xf8
+[    5.574269]  lock_acquire+0x3f0/0x460
+[    5.574292]  _raw_spin_lock_irqsave+0x80/0xb0
+[    5.574314]  __pm_runtime_suspend+0x4c/0x188
+[    5.574341]  psci_enter_domain_idle_state+0x40/0xa0
+[    5.574362]  cpuidle_enter_state+0xc0/0x610
+[    5.646487]  cpuidle_enter+0x38/0x50
+[    5.650651]  call_cpuidle+0x18/0x40
+[    5.654467]  do_idle+0x228/0x278
+[    5.657678]  cpu_startup_entry+0x24/0x70
+[    5.661153]  rest_init+0x1a4/0x278
+[    5.665061]  arch_call_rest_init+0xc/0x14
+[    5.668272]  start_kernel+0x508/0x540
+
+Following the path in pm_runtime_put_sync_suspend() from
+psci_enter_domain_idle_state(), it seems like we end up using the RCU.
+Therefore, let's simply silence the splat by informing the RCU about it
+with RCU_NONIDLE.
+
+Note that, this is a temporary solution. Instead we should strive to avoid
+using RCU_NONIDLE (and similar), but rather push rcu_idle_enter|exit()
+further down, closer to the arch specific code. However, as the CPU PM
+notifiers are also using the RCU, additional rework is needed.
+
+Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Acked-by: Paul E. McKenney <paulmck@kernel.org>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/cpuidle/cpuidle-psci.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c
+index 3806f911b61c0..915172e3ec906 100644
+--- a/drivers/cpuidle/cpuidle-psci.c
++++ b/drivers/cpuidle/cpuidle-psci.c
+@@ -64,7 +64,7 @@ static int psci_enter_domain_idle_state(struct cpuidle_device *dev,
+               return -1;
+       /* Do runtime PM to manage a hierarchical CPU toplogy. */
+-      pm_runtime_put_sync_suspend(pd_dev);
++      RCU_NONIDLE(pm_runtime_put_sync_suspend(pd_dev));
+       state = psci_get_domain_state();
+       if (!state)
+@@ -72,7 +72,7 @@ static int psci_enter_domain_idle_state(struct cpuidle_device *dev,
+       ret = psci_cpu_suspend_enter(state) ? -1 : idx;
+-      pm_runtime_get_sync(pd_dev);
++      RCU_NONIDLE(pm_runtime_get_sync(pd_dev));
+       cpu_pm_exit();
+-- 
+2.25.1
+
diff --git a/queue-5.8/drivers-net-wan-hdlc-set-skb-protocol-before-transmi.patch b/queue-5.8/drivers-net-wan-hdlc-set-skb-protocol-before-transmi.patch
new file mode 100644 (file)
index 0000000..baf5f45
--- /dev/null
@@ -0,0 +1,106 @@
+From 7757a7e3883d79e66575708db1698f286bbcb638 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 16 Sep 2020 14:25:07 -0700
+Subject: drivers/net/wan/hdlc: Set skb->protocol before transmitting
+
+From: Xie He <xie.he.0141@gmail.com>
+
+[ Upstream commit 9fb030a70431a2a2a1b292dbf0b2f399cc072c16 ]
+
+This patch sets skb->protocol before transmitting frames on the HDLC
+device, so that a user listening on the HDLC device with an AF_PACKET
+socket will see outgoing frames' sll_protocol field correctly set and
+consistent with that of incoming frames.
+
+1. Control frames in hdlc_cisco and hdlc_ppp
+
+When these drivers send control frames, skb->protocol is not set.
+
+This value should be set to htons(ETH_P_HDLC), because when receiving
+control frames, their skb->protocol is set to htons(ETH_P_HDLC).
+
+When receiving, hdlc_type_trans in hdlc.h is called, which then calls
+cisco_type_trans or ppp_type_trans. The skb->protocol of control frames
+is set to htons(ETH_P_HDLC) so that the control frames can be received
+by hdlc_rcv in hdlc.c, which calls cisco_rx or ppp_rx to process the
+control frames.
+
+2. hdlc_fr
+
+When this driver sends control frames, skb->protocol is set to internal
+values used in this driver.
+
+When this driver sends data frames (from upper stacked PVC devices),
+skb->protocol is the same as that of the user data packet being sent on
+the upper PVC device (for normal PVC devices), or is htons(ETH_P_802_3)
+(for Ethernet-emulating PVC devices).
+
+However, skb->protocol for both control frames and data frames should be
+set to htons(ETH_P_HDLC), because when receiving, all frames received on
+the HDLC device will have their skb->protocol set to htons(ETH_P_HDLC).
+
+When receiving, hdlc_type_trans in hdlc.h is called, and because this
+driver doesn't provide a type_trans function in struct hdlc_proto,
+all frames will have their skb->protocol set to htons(ETH_P_HDLC).
+The frames are then received by hdlc_rcv in hdlc.c, which calls fr_rx
+to process the frames (control frames are consumed and data frames
+are re-received on upper PVC devices).
+
+Cc: Krzysztof Halasa <khc@pm.waw.pl>
+Signed-off-by: Xie He <xie.he.0141@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wan/hdlc_cisco.c | 1 +
+ drivers/net/wan/hdlc_fr.c    | 3 +++
+ drivers/net/wan/hdlc_ppp.c   | 1 +
+ 3 files changed, 5 insertions(+)
+
+diff --git a/drivers/net/wan/hdlc_cisco.c b/drivers/net/wan/hdlc_cisco.c
+index 444130655d8ea..cb5898f7d68c9 100644
+--- a/drivers/net/wan/hdlc_cisco.c
++++ b/drivers/net/wan/hdlc_cisco.c
+@@ -118,6 +118,7 @@ static void cisco_keepalive_send(struct net_device *dev, u32 type,
+       skb_put(skb, sizeof(struct cisco_packet));
+       skb->priority = TC_PRIO_CONTROL;
+       skb->dev = dev;
++      skb->protocol = htons(ETH_P_HDLC);
+       skb_reset_network_header(skb);
+       dev_queue_xmit(skb);
+diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
+index 12b35404cd8e7..d6cfd51613ed8 100644
+--- a/drivers/net/wan/hdlc_fr.c
++++ b/drivers/net/wan/hdlc_fr.c
+@@ -433,6 +433,8 @@ static netdev_tx_t pvc_xmit(struct sk_buff *skb, struct net_device *dev)
+                       if (pvc->state.fecn) /* TX Congestion counter */
+                               dev->stats.tx_compressed++;
+                       skb->dev = pvc->frad;
++                      skb->protocol = htons(ETH_P_HDLC);
++                      skb_reset_network_header(skb);
+                       dev_queue_xmit(skb);
+                       return NETDEV_TX_OK;
+               }
+@@ -555,6 +557,7 @@ static void fr_lmi_send(struct net_device *dev, int fullrep)
+       skb_put(skb, i);
+       skb->priority = TC_PRIO_CONTROL;
+       skb->dev = dev;
++      skb->protocol = htons(ETH_P_HDLC);
+       skb_reset_network_header(skb);
+       dev_queue_xmit(skb);
+diff --git a/drivers/net/wan/hdlc_ppp.c b/drivers/net/wan/hdlc_ppp.c
+index 16f33d1ffbfb9..64f8556513369 100644
+--- a/drivers/net/wan/hdlc_ppp.c
++++ b/drivers/net/wan/hdlc_ppp.c
+@@ -251,6 +251,7 @@ static void ppp_tx_cp(struct net_device *dev, u16 pid, u8 code,
+       skb->priority = TC_PRIO_CONTROL;
+       skb->dev = dev;
++      skb->protocol = htons(ETH_P_HDLC);
+       skb_reset_network_header(skb);
+       skb_queue_tail(&tx_queue, skb);
+ }
+-- 
+2.25.1
+
diff --git a/queue-5.8/drivers-net-wan-hdlc_fr-add-needed_headroom-for-pvc-.patch b/queue-5.8/drivers-net-wan-hdlc_fr-add-needed_headroom-for-pvc-.patch
new file mode 100644 (file)
index 0000000..0e4e3ce
--- /dev/null
@@ -0,0 +1,59 @@
+From a548cd47ff75a64ff92d25ee69bbb929b00c8846 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 2 Sep 2020 17:06:58 -0700
+Subject: drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices
+
+From: Xie He <xie.he.0141@gmail.com>
+
+[ Upstream commit 44a049c42681de71c783d75cd6e56b4e339488b0 ]
+
+PVC devices are virtual devices in this driver stacked on top of the
+actual HDLC device. They are the devices normal users would use.
+PVC devices have two types: normal PVC devices and Ethernet-emulating
+PVC devices.
+
+When transmitting data with PVC devices, the ndo_start_xmit function
+will prepend a header of 4 or 10 bytes. Currently this driver requests
+this headroom to be reserved for normal PVC devices by setting their
+hard_header_len to 10. However, this does not work when these devices
+are used with AF_PACKET/RAW sockets. Also, this driver does not request
+this headroom for Ethernet-emulating PVC devices (but deals with this
+problem by reallocating the skb when needed, which is not optimal).
+
+This patch replaces hard_header_len with needed_headroom, and set
+needed_headroom for Ethernet-emulating PVC devices, too. This makes
+the driver to request headroom for all PVC devices in all cases.
+
+Cc: Krzysztof Halasa <khc@pm.waw.pl>
+Cc: Martin Schiller <ms@dev.tdt.de>
+Signed-off-by: Xie He <xie.he.0141@gmail.com>
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wan/hdlc_fr.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
+index 9acad651ea1f6..12b35404cd8e7 100644
+--- a/drivers/net/wan/hdlc_fr.c
++++ b/drivers/net/wan/hdlc_fr.c
+@@ -1041,7 +1041,7 @@ static void pvc_setup(struct net_device *dev)
+ {
+       dev->type = ARPHRD_DLCI;
+       dev->flags = IFF_POINTOPOINT;
+-      dev->hard_header_len = 10;
++      dev->hard_header_len = 0;
+       dev->addr_len = 2;
+       netif_keep_dst(dev);
+ }
+@@ -1093,6 +1093,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type)
+       dev->mtu = HDLC_MAX_MTU;
+       dev->min_mtu = 68;
+       dev->max_mtu = HDLC_MAX_MTU;
++      dev->needed_headroom = 10;
+       dev->priv_flags |= IFF_NO_QUEUE;
+       dev->ml_priv = pvc;
+-- 
+2.25.1
+
diff --git a/queue-5.8/drivers-net-wan-lapbether-make-skb-protocol-consiste.patch b/queue-5.8/drivers-net-wan-lapbether-make-skb-protocol-consiste.patch
new file mode 100644 (file)
index 0000000..cb068f5
--- /dev/null
@@ -0,0 +1,58 @@
+From 7c909b43acc49cf810df9fa7796508e5068315e1 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 16 Sep 2020 09:49:18 -0700
+Subject: drivers/net/wan/lapbether: Make skb->protocol consistent with the
+ header
+
+From: Xie He <xie.he.0141@gmail.com>
+
+[ Upstream commit 83f9a9c8c1edc222846dc1bde6e3479703e8e5a3 ]
+
+This driver is a virtual driver stacked on top of Ethernet interfaces.
+
+When this driver transmits data on the Ethernet device, the skb->protocol
+setting is inconsistent with the Ethernet header prepended to the skb.
+
+This causes a user listening on the Ethernet interface with an AF_PACKET
+socket, to see different sll_protocol values for incoming and outgoing
+frames, because incoming frames would have this value set by parsing the
+Ethernet header.
+
+This patch changes the skb->protocol value for outgoing Ethernet frames,
+making it consistent with the Ethernet header prepended. This makes a
+user listening on the Ethernet device with an AF_PACKET socket, to see
+the same sll_protocol value for incoming and outgoing frames.
+
+Cc: Martin Schiller <ms@dev.tdt.de>
+Signed-off-by: Xie He <xie.he.0141@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wan/lapbether.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
+index e61616b0b91c7..b726101d4707a 100644
+--- a/drivers/net/wan/lapbether.c
++++ b/drivers/net/wan/lapbether.c
+@@ -198,8 +198,6 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)
+       struct net_device *dev;
+       int size = skb->len;
+-      skb->protocol = htons(ETH_P_X25);
+-
+       ptr = skb_push(skb, 2);
+       *ptr++ = size % 256;
+@@ -210,6 +208,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)
+       skb->dev = dev = lapbeth->ethdev;
++      skb->protocol = htons(ETH_P_DEC);
++
+       skb_reset_network_header(skb);
+       dev_hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0);
+-- 
+2.25.1
+
diff --git a/queue-5.8/drm-sun4i-mixer-extend-regmap-max_register.patch b/queue-5.8/drm-sun4i-mixer-extend-regmap-max_register.patch
new file mode 100644 (file)
index 0000000..5c5af17
--- /dev/null
@@ -0,0 +1,36 @@
+From 2bfbcfce5531005dcd1f37eb269705ddcdf103da Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 6 Sep 2020 18:21:40 +0200
+Subject: drm/sun4i: mixer: Extend regmap max_register
+
+From: Martin Cerveny <m.cerveny@computer.org>
+
+[ Upstream commit 74ea06164cda81dc80e97790164ca533fd7e3087 ]
+
+Better guess. Secondary CSC registers are from 0xF0000.
+
+Signed-off-by: Martin Cerveny <m.cerveny@computer.org>
+Reviewed-by: Jernej Skrabec <jernej.skrabec@siol.net>
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+Link: https://patchwork.freedesktop.org/patch/msgid/20200906162140.5584-3-m.cerveny@computer.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
+index cc4fb916318f3..c3304028e3dcd 100644
+--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
++++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
+@@ -307,7 +307,7 @@ static struct regmap_config sun8i_mixer_regmap_config = {
+       .reg_bits       = 32,
+       .val_bits       = 32,
+       .reg_stride     = 4,
+-      .max_register   = 0xbfffc, /* guessed */
++      .max_register   = 0xffffc, /* guessed */
+ };
+ static int sun8i_mixer_of_get_id(struct device_node *node)
+-- 
+2.25.1
+
diff --git a/queue-5.8/fuse-fix-the-direct_io-treatment-of-iov_iter.patch b/queue-5.8/fuse-fix-the-direct_io-treatment-of-iov_iter.patch
new file mode 100644 (file)
index 0000000..d28c91b
--- /dev/null
@@ -0,0 +1,92 @@
+From b6930b651e3b3f4d2f3dc292c823de64f0c8f270 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 17 Sep 2020 17:26:56 -0400
+Subject: fuse: fix the ->direct_IO() treatment of iov_iter
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+[ Upstream commit 933a3752babcf6513117d5773d2b70782d6ad149 ]
+
+the callers rely upon having any iov_iter_truncate() done inside
+->direct_IO() countered by iov_iter_reexpand().
+
+Reported-by: Qian Cai <cai@redhat.com>
+Tested-by: Qian Cai <cai@redhat.com>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/fuse/file.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
+index 83d917f7e5425..98e170cc0b932 100644
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -3091,11 +3091,10 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
+       ssize_t ret = 0;
+       struct file *file = iocb->ki_filp;
+       struct fuse_file *ff = file->private_data;
+-      bool async_dio = ff->fc->async_dio;
+       loff_t pos = 0;
+       struct inode *inode;
+       loff_t i_size;
+-      size_t count = iov_iter_count(iter);
++      size_t count = iov_iter_count(iter), shortened = 0;
+       loff_t offset = iocb->ki_pos;
+       struct fuse_io_priv *io;
+@@ -3103,17 +3102,9 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
+       inode = file->f_mapping->host;
+       i_size = i_size_read(inode);
+-      if ((iov_iter_rw(iter) == READ) && (offset > i_size))
++      if ((iov_iter_rw(iter) == READ) && (offset >= i_size))
+               return 0;
+-      /* optimization for short read */
+-      if (async_dio && iov_iter_rw(iter) != WRITE && offset + count > i_size) {
+-              if (offset >= i_size)
+-                      return 0;
+-              iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset));
+-              count = iov_iter_count(iter);
+-      }
+-
+       io = kmalloc(sizeof(struct fuse_io_priv), GFP_KERNEL);
+       if (!io)
+               return -ENOMEM;
+@@ -3129,15 +3120,22 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
+        * By default, we want to optimize all I/Os with async request
+        * submission to the client filesystem if supported.
+        */
+-      io->async = async_dio;
++      io->async = ff->fc->async_dio;
+       io->iocb = iocb;
+       io->blocking = is_sync_kiocb(iocb);
++      /* optimization for short read */
++      if (io->async && !io->write && offset + count > i_size) {
++              iov_iter_truncate(iter, fuse_round_up(ff->fc, i_size - offset));
++              shortened = count - iov_iter_count(iter);
++              count -= shortened;
++      }
++
+       /*
+        * We cannot asynchronously extend the size of a file.
+        * In such case the aio will behave exactly like sync io.
+        */
+-      if ((offset + count > i_size) && iov_iter_rw(iter) == WRITE)
++      if ((offset + count > i_size) && io->write)
+               io->blocking = true;
+       if (io->async && io->blocking) {
+@@ -3155,6 +3153,7 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
+       } else {
+               ret = __fuse_direct_read(io, iter, &pos);
+       }
++      iov_iter_reexpand(iter, iov_iter_count(iter) + shortened);
+       if (io->async) {
+               bool blocking = io->blocking;
+-- 
+2.25.1
+
diff --git a/queue-5.8/hv_netvsc-cache-the-current-data-path-to-avoid-dupli.patch b/queue-5.8/hv_netvsc-cache-the-current-data-path-to-avoid-dupli.patch
new file mode 100644 (file)
index 0000000..f697459
--- /dev/null
@@ -0,0 +1,86 @@
+From 6135a3e3cb964326a2275d17280a1f0a04eee28a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 8 Sep 2020 21:08:19 -0700
+Subject: hv_netvsc: Cache the current data path to avoid duplicate call and
+ message
+
+From: Dexuan Cui <decui@microsoft.com>
+
+[ Upstream commit da26658c3d7005aa67a706dceff7b2807b59e123 ]
+
+The previous change "hv_netvsc: Switch the data path at the right time
+during hibernation" adds the call of netvsc_vf_changed() upon
+NETDEV_CHANGE, so it's necessary to avoid the duplicate call and message
+when the VF is brought UP or DOWN.
+
+Signed-off-by: Dexuan Cui <decui@microsoft.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/hyperv/hyperv_net.h |  3 +++
+ drivers/net/hyperv/netvsc_drv.c | 21 ++++++++++++++++++++-
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
+index abda736e7c7dc..a4d2dd2637e26 100644
+--- a/drivers/net/hyperv/hyperv_net.h
++++ b/drivers/net/hyperv/hyperv_net.h
+@@ -973,6 +973,9 @@ struct net_device_context {
+       /* Serial number of the VF to team with */
+       u32 vf_serial;
++      /* Is the current data path through the VF NIC? */
++      bool  data_path_is_vf;
++
+       /* Used to temporarily save the config info across hibernation */
+       struct netvsc_device_info *saved_netvsc_dev_info;
+ };
+diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
+index a2db5ef3b62a2..3b0dc1f0ef212 100644
+--- a/drivers/net/hyperv/netvsc_drv.c
++++ b/drivers/net/hyperv/netvsc_drv.c
+@@ -2323,7 +2323,16 @@ static int netvsc_register_vf(struct net_device *vf_netdev)
+       return NOTIFY_OK;
+ }
+-/* VF up/down change detected, schedule to change data path */
++/* Change the data path when VF UP/DOWN/CHANGE are detected.
++ *
++ * Typically a UP or DOWN event is followed by a CHANGE event, so
++ * net_device_ctx->data_path_is_vf is used to cache the current data path
++ * to avoid the duplicate call of netvsc_switch_datapath() and the duplicate
++ * message.
++ *
++ * During hibernation, if a VF NIC driver (e.g. mlx5) preserves the network
++ * interface, there is only the CHANGE event and no UP or DOWN event.
++ */
+ static int netvsc_vf_changed(struct net_device *vf_netdev)
+ {
+       struct net_device_context *net_device_ctx;
+@@ -2340,6 +2349,10 @@ static int netvsc_vf_changed(struct net_device *vf_netdev)
+       if (!netvsc_dev)
+               return NOTIFY_DONE;
++      if (net_device_ctx->data_path_is_vf == vf_is_up)
++              return NOTIFY_OK;
++      net_device_ctx->data_path_is_vf = vf_is_up;
++
+       netvsc_switch_datapath(ndev, vf_is_up);
+       netdev_info(ndev, "Data path switched %s VF: %s\n",
+                   vf_is_up ? "to" : "from", vf_netdev->name);
+@@ -2581,6 +2594,12 @@ static int netvsc_resume(struct hv_device *dev)
+       rtnl_lock();
+       net_device_ctx = netdev_priv(net);
++
++      /* Reset the data path to the netvsc NIC before re-opening the vmbus
++       * channel. Later netvsc_netdev_event() will switch the data path to
++       * the VF upon the UP or CHANGE event.
++       */
++      net_device_ctx->data_path_is_vf = false;
+       device_info = net_device_ctx->saved_netvsc_dev_info;
+       ret = netvsc_attach(net, device_info);
+-- 
+2.25.1
+
diff --git a/queue-5.8/io_uring-mark-statx-files_update-epoll_ctl-as-non-sq.patch b/queue-5.8/io_uring-mark-statx-files_update-epoll_ctl-as-non-sq.patch
new file mode 100644 (file)
index 0000000..e9a6f1d
--- /dev/null
@@ -0,0 +1,54 @@
+From a1afc186ee2271ec84e5d04af681b5ab36a32d5f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 18 Sep 2020 16:51:19 -0600
+Subject: io_uring: mark statx/files_update/epoll_ctl as non-SQPOLL
+
+From: Jens Axboe <axboe@kernel.dk>
+
+[ Upstream commit 6ca56f845955e325033758f90a2cffe150f31bc8 ]
+
+These will naturally fail when attempted through SQPOLL, but either
+with -EFAULT or -EBADF. Make it explicit that these are not workable
+through SQPOLL and return -EINVAL, just like other ops that need to
+use ->files.
+
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/io_uring.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/fs/io_uring.c b/fs/io_uring.c
+index 4d79c1763e733..ebc3586b18795 100644
+--- a/fs/io_uring.c
++++ b/fs/io_uring.c
+@@ -3318,7 +3318,7 @@ static int io_epoll_ctl_prep(struct io_kiocb *req,
+ #if defined(CONFIG_EPOLL)
+       if (sqe->ioprio || sqe->buf_index)
+               return -EINVAL;
+-      if (unlikely(req->ctx->flags & IORING_SETUP_IOPOLL))
++      if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL | IORING_SETUP_SQPOLL)))
+               return -EINVAL;
+       req->epoll.epfd = READ_ONCE(sqe->fd);
+@@ -3435,7 +3435,7 @@ static int io_fadvise(struct io_kiocb *req, bool force_nonblock)
+ static int io_statx_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
+ {
+-      if (unlikely(req->ctx->flags & IORING_SETUP_IOPOLL))
++      if (unlikely(req->ctx->flags & (IORING_SETUP_IOPOLL | IORING_SETUP_SQPOLL)))
+               return -EINVAL;
+       if (sqe->ioprio || sqe->buf_index)
+               return -EINVAL;
+@@ -5042,6 +5042,8 @@ static int io_async_cancel(struct io_kiocb *req)
+ static int io_files_update_prep(struct io_kiocb *req,
+                               const struct io_uring_sqe *sqe)
+ {
++      if (unlikely(req->ctx->flags & IORING_SETUP_SQPOLL))
++              return -EINVAL;
+       if (unlikely(req->flags & (REQ_F_FIXED_FILE | REQ_F_BUFFER_SELECT)))
+               return -EINVAL;
+       if (sqe->ioprio || sqe->rw_flags)
+-- 
+2.25.1
+
diff --git a/queue-5.8/libbpf-remove-arch-specific-include-path-in-makefile.patch b/queue-5.8/libbpf-remove-arch-specific-include-path-in-makefile.patch
new file mode 100644 (file)
index 0000000..a0b90bc
--- /dev/null
@@ -0,0 +1,64 @@
+From ad36684de791999587360b9d33626a5482cc3225 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 2 Sep 2020 14:12:46 +0530
+Subject: libbpf: Remove arch-specific include path in Makefile
+
+From: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+
+[ Upstream commit 21e9ba5373fc2cec608fd68301a1dbfd14df3172 ]
+
+Ubuntu mainline builds for ppc64le are failing with the below error (*):
+    CALL    /home/kernel/COD/linux/scripts/atomic/check-atomics.sh
+    DESCEND  bpf/resolve_btfids
+
+  Auto-detecting system features:
+  ...                        libelf: [ [32mon[m  ]
+  ...                          zlib: [ [32mon[m  ]
+  ...                           bpf: [ [31mOFF[m ]
+
+  BPF API too old
+  make[6]: *** [Makefile:295: bpfdep] Error 1
+  make[5]: *** [Makefile:54: /home/kernel/COD/linux/debian/build/build-generic/tools/bpf/resolve_btfids//libbpf.a] Error 2
+  make[4]: *** [Makefile:71: bpf/resolve_btfids] Error 2
+  make[3]: *** [/home/kernel/COD/linux/Makefile:1890: tools/bpf/resolve_btfids] Error 2
+  make[2]: *** [/home/kernel/COD/linux/Makefile:335: __build_one_by_one] Error 2
+  make[2]: Leaving directory '/home/kernel/COD/linux/debian/build/build-generic'
+  make[1]: *** [Makefile:185: __sub-make] Error 2
+  make[1]: Leaving directory '/home/kernel/COD/linux'
+
+resolve_btfids needs to be build as a host binary and it needs libbpf.
+However, libbpf Makefile hardcodes an include path utilizing $(ARCH).
+This results in mixing of cross-architecture headers resulting in a
+build failure.
+
+The specific header include path doesn't seem necessary for a libbpf
+build. Hence, remove the same.
+
+(*) https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9-rc3/ppc64el/log
+
+Reported-by: Vaidyanathan Srinivasan <svaidy@linux.ibm.com>
+Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
+Acked-by: Andrii Nakryiko <andriin@fb.com>
+Link: https://lore.kernel.org/bpf/20200902084246.1513055-1-naveen.n.rao@linux.vnet.ibm.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/lib/bpf/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
+index c820b0be9d637..9ae8f4ef0aac2 100644
+--- a/tools/lib/bpf/Makefile
++++ b/tools/lib/bpf/Makefile
+@@ -59,7 +59,7 @@ FEATURE_USER = .libbpf
+ FEATURE_TESTS = libelf libelf-mmap zlib bpf reallocarray
+ FEATURE_DISPLAY = libelf zlib bpf
+-INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi
++INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/include/uapi
+ FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES)
+ check_feat := 1
+-- 
+2.25.1
+
diff --git a/queue-5.8/mac80211-do-not-allow-bigger-vht-mpdus-than-the-hard.patch b/queue-5.8/mac80211-do-not-allow-bigger-vht-mpdus-than-the-hard.patch
new file mode 100644 (file)
index 0000000..45befe5
--- /dev/null
@@ -0,0 +1,48 @@
+From 291d6a921232a6b42ab267706c9478b6cccbae82 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 17 Sep 2020 14:50:31 +0200
+Subject: mac80211: do not allow bigger VHT MPDUs than the hardware supports
+
+From: Felix Fietkau <nbd@nbd.name>
+
+[ Upstream commit 3bd5c7a28a7c3aba07a2d300d43f8e988809e147 ]
+
+Limit maximum VHT MPDU size by local capability.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Link: https://lore.kernel.org/r/20200917125031.45009-1-nbd@nbd.name
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/mac80211/vht.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c
+index 9c6045f9c24da..d1b64d0751f2e 100644
+--- a/net/mac80211/vht.c
++++ b/net/mac80211/vht.c
+@@ -168,10 +168,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
+       /* take some capabilities as-is */
+       cap_info = le32_to_cpu(vht_cap_ie->vht_cap_info);
+       vht_cap->cap = cap_info;
+-      vht_cap->cap &= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 |
+-                      IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 |
+-                      IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
+-                      IEEE80211_VHT_CAP_RXLDPC |
++      vht_cap->cap &= IEEE80211_VHT_CAP_RXLDPC |
+                       IEEE80211_VHT_CAP_VHT_TXOP_PS |
+                       IEEE80211_VHT_CAP_HTC_VHT |
+                       IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
+@@ -180,6 +177,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
+                       IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |
+                       IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN;
++      vht_cap->cap |= min_t(u32, cap_info & IEEE80211_VHT_CAP_MAX_MPDU_MASK,
++                            own_cap.cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK);
++
+       /* and some based on our own capabilities */
+       switch (own_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
+       case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ:
+-- 
+2.25.1
+
diff --git a/queue-5.8/mac80211-fix-radiotap-header-channel-flag-for-6ghz-b.patch b/queue-5.8/mac80211-fix-radiotap-header-channel-flag-for-6ghz-b.patch
new file mode 100644 (file)
index 0000000..9c04d5e
--- /dev/null
@@ -0,0 +1,38 @@
+From 96ed3b2d54988a5df6d0b016e4a822f557e7de84 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 11 Sep 2020 01:11:35 +0000
+Subject: mac80211: Fix radiotap header channel flag for 6GHz band
+
+From: Aloka Dixit <alokad@codeaurora.org>
+
+[ Upstream commit 412a84b5714af56f3eb648bba155107b5edddfdf ]
+
+Radiotap header field 'Channel flags' has '2 GHz spectrum' set to
+'true' for 6GHz packet.
+Change it to 5GHz as there isn't a separate option available for 6GHz.
+
+Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
+Link: https://lore.kernel.org/r/010101747ab7b703-1d7c9851-1594-43bf-81f7-f79ce7a67cc6-000000@us-west-2.amazonses.com
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/mac80211/rx.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
+index 5c5af4b5fc080..f2c3ac648fc08 100644
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -451,7 +451,8 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
+       else if (status->bw == RATE_INFO_BW_5)
+               channel_flags |= IEEE80211_CHAN_QUARTER;
+-      if (status->band == NL80211_BAND_5GHZ)
++      if (status->band == NL80211_BAND_5GHZ ||
++          status->band == NL80211_BAND_6GHZ)
+               channel_flags |= IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ;
+       else if (status->encoding != RX_ENC_LEGACY)
+               channel_flags |= IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ;
+-- 
+2.25.1
+
diff --git a/queue-5.8/mt76-mt7915-use-ieee80211_free_txskb-to-free-tx-skbs.patch b/queue-5.8/mt76-mt7915-use-ieee80211_free_txskb-to-free-tx-skbs.patch
new file mode 100644 (file)
index 0000000..14ed216
--- /dev/null
@@ -0,0 +1,62 @@
+From 41a87953e60d14890371d84443fceca59dfe5aa5 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 12 Aug 2020 16:49:43 +0200
+Subject: mt76: mt7915: use ieee80211_free_txskb to free tx skbs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Felix Fietkau <nbd@nbd.name>
+
+[ Upstream commit b4be5a53ebf478ffcfb4c98c0ccc4a8d922b9a02 ]
+
+Using dev_kfree_skb for tx skbs breaks AQL. This worked until now only
+by accident, because a mac80211 issue breaks AQL on drivers with firmware
+rate control that report the rate via ieee80211_tx_status_ext as struct
+rate_info.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/20200812144943.91974-1-nbd@nbd.name
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/mediatek/mt76/mt7915/init.c | 8 ++++++--
+ drivers/net/wireless/mediatek/mt76/mt7915/mac.c  | 2 +-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/init.c b/drivers/net/wireless/mediatek/mt76/mt7915/init.c
+index aadf56e80bae8..d7a3b05ab50c3 100644
+--- a/drivers/net/wireless/mediatek/mt76/mt7915/init.c
++++ b/drivers/net/wireless/mediatek/mt76/mt7915/init.c
+@@ -691,8 +691,12 @@ void mt7915_unregister_device(struct mt7915_dev *dev)
+       spin_lock_bh(&dev->token_lock);
+       idr_for_each_entry(&dev->token, txwi, id) {
+               mt7915_txp_skb_unmap(&dev->mt76, txwi);
+-              if (txwi->skb)
+-                      dev_kfree_skb_any(txwi->skb);
++              if (txwi->skb) {
++                      struct ieee80211_hw *hw;
++
++                      hw = mt76_tx_status_get_hw(&dev->mt76, txwi->skb);
++                      ieee80211_free_txskb(hw, txwi->skb);
++              }
+               mt76_put_txwi(&dev->mt76, txwi);
+       }
+       spin_unlock_bh(&dev->token_lock);
+diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+index a264e304a3dfb..5800b2d1fb233 100644
+--- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
++++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+@@ -844,7 +844,7 @@ mt7915_tx_complete_status(struct mt76_dev *mdev, struct sk_buff *skb,
+       if (sta || !(info->flags & IEEE80211_TX_CTL_NO_ACK))
+               mt7915_tx_status(sta, hw, info, NULL);
+-      dev_kfree_skb(skb);
++      ieee80211_free_txskb(hw, skb);
+ }
+ void mt7915_txp_skb_unmap(struct mt76_dev *dev,
+-- 
+2.25.1
+
diff --git a/queue-5.8/net-dec-de2104x-increase-receive-ring-size-for-tulip.patch b/queue-5.8/net-dec-de2104x-increase-receive-ring-size-for-tulip.patch
new file mode 100644 (file)
index 0000000..ef79f0e
--- /dev/null
@@ -0,0 +1,43 @@
+From e5db7bb5b350363b5aec71c9f620ce0296a8e460 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 10 Sep 2020 12:05:09 -0700
+Subject: net: dec: de2104x: Increase receive ring size for Tulip
+
+From: Lucy Yan <lucyyan@google.com>
+
+[ Upstream commit ee460417d254d941dfea5fb7cff841f589643992 ]
+
+Increase Rx ring size to address issue where hardware is reaching
+the receive work limit.
+
+Before:
+
+[  102.223342] de2104x 0000:17:00.0 eth0: rx work limit reached
+[  102.245695] de2104x 0000:17:00.0 eth0: rx work limit reached
+[  102.251387] de2104x 0000:17:00.0 eth0: rx work limit reached
+[  102.267444] de2104x 0000:17:00.0 eth0: rx work limit reached
+
+Signed-off-by: Lucy Yan <lucyyan@google.com>
+Reviewed-by: Moritz Fischer <mdf@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/dec/tulip/de2104x.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/dec/tulip/de2104x.c b/drivers/net/ethernet/dec/tulip/de2104x.c
+index 592454f444ce2..0b30011b9839e 100644
+--- a/drivers/net/ethernet/dec/tulip/de2104x.c
++++ b/drivers/net/ethernet/dec/tulip/de2104x.c
+@@ -85,7 +85,7 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi
+ #define DSL                   CONFIG_DE2104X_DSL
+ #endif
+-#define DE_RX_RING_SIZE               64
++#define DE_RX_RING_SIZE               128
+ #define DE_TX_RING_SIZE               64
+ #define DE_RING_BYTES         \
+               ((sizeof(struct de_desc) * DE_RX_RING_SIZE) +   \
+-- 
+2.25.1
+
diff --git a/queue-5.8/net-dsa-felix-fix-some-key-offsets-for-ip4_tcp_udp-v.patch b/queue-5.8/net-dsa-felix-fix-some-key-offsets-for-ip4_tcp_udp-v.patch
new file mode 100644 (file)
index 0000000..9982c45
--- /dev/null
@@ -0,0 +1,55 @@
+From d284aeab47cabba2bebee11f33335953e1a6c09c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 22 Sep 2020 01:56:36 +0300
+Subject: net: dsa: felix: fix some key offsets for IP4_TCP_UDP VCAP IS2
+ entries
+
+From: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
+
+[ Upstream commit 8b9e03cd08250c60409099c791e858157838d9eb ]
+
+Some of the IS2 IP4_TCP_UDP keys are not correct, like L4_DPORT,
+L4_SPORT and other L4 keys. This prevents offloaded tc-flower rules from
+matching on src_port and dst_port for TCP and UDP packets.
+
+Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
+Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/dsa/ocelot/felix_vsc9959.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c
+index 1dd9e348152d7..7c167a394b762 100644
+--- a/drivers/net/dsa/ocelot/felix_vsc9959.c
++++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
+@@ -607,17 +607,17 @@ struct vcap_field vsc9959_vcap_is2_keys[] = {
+       [VCAP_IS2_HK_DIP_EQ_SIP]                = {118,   1},
+       /* IP4_TCP_UDP (TYPE=100) */
+       [VCAP_IS2_HK_TCP]                       = {119,   1},
+-      [VCAP_IS2_HK_L4_SPORT]                  = {120,  16},
+-      [VCAP_IS2_HK_L4_DPORT]                  = {136,  16},
++      [VCAP_IS2_HK_L4_DPORT]                  = {120,  16},
++      [VCAP_IS2_HK_L4_SPORT]                  = {136,  16},
+       [VCAP_IS2_HK_L4_RNG]                    = {152,   8},
+       [VCAP_IS2_HK_L4_SPORT_EQ_DPORT]         = {160,   1},
+       [VCAP_IS2_HK_L4_SEQUENCE_EQ0]           = {161,   1},
+-      [VCAP_IS2_HK_L4_URG]                    = {162,   1},
+-      [VCAP_IS2_HK_L4_ACK]                    = {163,   1},
+-      [VCAP_IS2_HK_L4_PSH]                    = {164,   1},
+-      [VCAP_IS2_HK_L4_RST]                    = {165,   1},
+-      [VCAP_IS2_HK_L4_SYN]                    = {166,   1},
+-      [VCAP_IS2_HK_L4_FIN]                    = {167,   1},
++      [VCAP_IS2_HK_L4_FIN]                    = {162,   1},
++      [VCAP_IS2_HK_L4_SYN]                    = {163,   1},
++      [VCAP_IS2_HK_L4_RST]                    = {164,   1},
++      [VCAP_IS2_HK_L4_PSH]                    = {165,   1},
++      [VCAP_IS2_HK_L4_ACK]                    = {166,   1},
++      [VCAP_IS2_HK_L4_URG]                    = {167,   1},
+       [VCAP_IS2_HK_L4_1588_DOM]               = {168,   8},
+       [VCAP_IS2_HK_L4_1588_VER]               = {176,   4},
+       /* IP4_OTHER (TYPE=101) */
+-- 
+2.25.1
+
diff --git a/queue-5.8/nvme-core-get-put-ctrl-and-transport-module-in-nvme_.patch b/queue-5.8/nvme-core-get-put-ctrl-and-transport-module-in-nvme_.patch
new file mode 100644 (file)
index 0000000..80a2be6
--- /dev/null
@@ -0,0 +1,103 @@
+From de266a95ee901438f6103dd77012a07662a73705 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 15 Sep 2020 20:53:25 -0700
+Subject: nvme-core: get/put ctrl and transport module in
+ nvme_dev_open/release()
+
+From: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+
+[ Upstream commit 52a3974feb1a3eec25d8836d37a508b67b0a9cd0 ]
+
+Get and put the reference to the ctrl in the nvme_dev_open() and
+nvme_dev_release() before and after module get/put for ctrl in char
+device file operations.
+
+Introduce char_dev relase function, get/put the controller and module
+which allows us to fix the potential Oops which can be easily reproduced
+with a passthru ctrl (although the problem also exists with pure user
+access):
+
+Entering kdb (current=0xffff8887f8290000, pid 3128) on processor 30 Oops: (null)
+due to oops @ 0xffffffffa01019ad
+CPU: 30 PID: 3128 Comm: bash Tainted: G        W  OE     5.8.0-rc4nvme-5.9+ #35
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.4
+RIP: 0010:nvme_free_ctrl+0x234/0x285 [nvme_core]
+Code: 57 10 a0 e8 73 bf 02 e1 ba 3d 11 00 00 48 c7 c6 98 33 10 a0 48 c7 c7 1d 57 10 a0 e8 5b bf 02 e1 8
+RSP: 0018:ffffc90001d63de0 EFLAGS: 00010246
+RAX: ffffffffa05c0440 RBX: ffff8888119e45a0 RCX: 0000000000000000
+RDX: 0000000000000000 RSI: ffff8888177e9550 RDI: ffff8888119e43b0
+RBP: ffff8887d4768000 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: ffffc90001d63c90 R12: ffff8888119e43b0
+R13: ffff8888119e5108 R14: dead000000000100 R15: ffff8888119e5108
+FS:  00007f1ef27b0740(0000) GS:ffff888817600000(0000) knlGS:0000000000000000
+CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: ffffffffa05c0470 CR3: 00000007f6bee000 CR4: 00000000003406e0
+Call Trace:
+ device_release+0x27/0x80
+ kobject_put+0x98/0x170
+ nvmet_passthru_ctrl_disable+0x4a/0x70 [nvmet]
+ nvmet_passthru_enable_store+0x4c/0x90 [nvmet]
+ configfs_write_file+0xe6/0x150
+ vfs_write+0xba/0x1e0
+ ksys_write+0x5f/0xe0
+ do_syscall_64+0x52/0xb0
+ entry_SYSCALL_64_after_hwframe+0x44/0xa9
+RIP: 0033:0x7f1ef1eb2840
+Code: Bad RIP value.
+RSP: 002b:00007fffdbff0eb8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
+RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007f1ef1eb2840
+RDX: 0000000000000002 RSI: 00007f1ef27d2000 RDI: 0000000000000001
+RBP: 00007f1ef27d2000 R08: 000000000000000a R09: 00007f1ef27b0740
+R10: 0000000000000001 R11: 0000000000000246 R12: 00007f1ef2186400
+R13: 0000000000000002 R14: 0000000000000001 R15: 0000000000000000
+
+With this patch fix we take the module ref count in nvme_dev_open() and
+release that ref count in newly introduced nvme_dev_release().
+
+Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/core.c | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
+index f2556f0ea20dc..69165a8f7c1f0 100644
+--- a/drivers/nvme/host/core.c
++++ b/drivers/nvme/host/core.c
+@@ -3060,10 +3060,24 @@ static int nvme_dev_open(struct inode *inode, struct file *file)
+               return -EWOULDBLOCK;
+       }
++      nvme_get_ctrl(ctrl);
++      if (!try_module_get(ctrl->ops->module))
++              return -EINVAL;
++
+       file->private_data = ctrl;
+       return 0;
+ }
++static int nvme_dev_release(struct inode *inode, struct file *file)
++{
++      struct nvme_ctrl *ctrl =
++              container_of(inode->i_cdev, struct nvme_ctrl, cdev);
++
++      module_put(ctrl->ops->module);
++      nvme_put_ctrl(ctrl);
++      return 0;
++}
++
+ static int nvme_dev_user_cmd(struct nvme_ctrl *ctrl, void __user *argp)
+ {
+       struct nvme_ns *ns;
+@@ -3126,6 +3140,7 @@ static long nvme_dev_ioctl(struct file *file, unsigned int cmd,
+ static const struct file_operations nvme_dev_fops = {
+       .owner          = THIS_MODULE,
+       .open           = nvme_dev_open,
++      .release        = nvme_dev_release,
+       .unlocked_ioctl = nvme_dev_ioctl,
+       .compat_ioctl   = compat_ptr_ioctl,
+ };
+-- 
+2.25.1
+
diff --git a/queue-5.8/nvme-fc-fail-new-connections-to-a-deleted-host-or-re.patch b/queue-5.8/nvme-fc-fail-new-connections-to-a-deleted-host-or-re.patch
new file mode 100644 (file)
index 0000000..1b32487
--- /dev/null
@@ -0,0 +1,49 @@
+From 346f74ebe4f091c14625ac4bf62a4d2f0ced9d53 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 17 Sep 2020 13:33:22 -0700
+Subject: nvme-fc: fail new connections to a deleted host or remote port
+
+From: James Smart <james.smart@broadcom.com>
+
+[ Upstream commit 9e0e8dac985d4bd07d9e62922b9d189d3ca2fccf ]
+
+The lldd may have made calls to delete a remote port or local port and
+the delete is in progress when the cli then attempts to create a new
+controller. Currently, this proceeds without error although it can't be
+very successful.
+
+Fix this by validating that both the host port and remote port are
+present when a new controller is to be created.
+
+Signed-off-by: James Smart <james.smart@broadcom.com>
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/fc.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
+index 92c966ac34c20..43c1745ecd45b 100644
+--- a/drivers/nvme/host/fc.c
++++ b/drivers/nvme/host/fc.c
+@@ -3668,12 +3668,14 @@ nvme_fc_create_ctrl(struct device *dev, struct nvmf_ctrl_options *opts)
+       spin_lock_irqsave(&nvme_fc_lock, flags);
+       list_for_each_entry(lport, &nvme_fc_lport_list, port_list) {
+               if (lport->localport.node_name != laddr.nn ||
+-                  lport->localport.port_name != laddr.pn)
++                  lport->localport.port_name != laddr.pn ||
++                  lport->localport.port_state != FC_OBJSTATE_ONLINE)
+                       continue;
+               list_for_each_entry(rport, &lport->endp_list, endp_list) {
+                       if (rport->remoteport.node_name != raddr.nn ||
+-                          rport->remoteport.port_name != raddr.pn)
++                          rport->remoteport.port_name != raddr.pn ||
++                          rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
+                               continue;
+                       /* if fail to get reference fall through. Will error */
+-- 
+2.25.1
+
diff --git a/queue-5.8/nvme-pci-disable-the-write-zeros-command-for-intel-6.patch b/queue-5.8/nvme-pci-disable-the-write-zeros-command-for-intel-6.patch
new file mode 100644 (file)
index 0000000..aa48f4c
--- /dev/null
@@ -0,0 +1,55 @@
+From f252ca76942b476c747957e2494e92f25416f70a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 10 Sep 2020 16:18:50 -0500
+Subject: nvme-pci: disable the write zeros command for Intel 600P/P3100
+
+From: David Milburn <dmilburn@redhat.com>
+
+[ Upstream commit ce4cc3133dc72c31bd49ddcf22d0f9eeff47a761 ]
+
+The write zeros command does not work with 4k range.
+
+bash-4.4# ./blkdiscard /dev/nvme0n1p2
+bash-4.4# strace -efallocate xfs_io -c "fzero 536895488 2048" /dev/nvme0n1p2
+fallocate(3, FALLOC_FL_ZERO_RANGE, 536895488, 2048) = 0
++++ exited with 0 +++
+bash-4.4# dd bs=1 if=/dev/nvme0n1p2 skip=536895488 count=512 | hexdump -C
+00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
+*
+00000200
+
+bash-4.4# ./blkdiscard /dev/nvme0n1p2
+bash-4.4# strace -efallocate xfs_io -c "fzero 536895488 4096" /dev/nvme0n1p2
+fallocate(3, FALLOC_FL_ZERO_RANGE, 536895488, 4096) = 0
++++ exited with 0 +++
+bash-4.4# dd bs=1 if=/dev/nvme0n1p2 skip=536895488 count=512 | hexdump -C
+00000000  5c 61 5c b0 96 21 1b 5e  85 0c 07 32 9c 8c eb 3c  |\a\..!.^...2...<|
+00000010  4a a2 06 ca 67 15 2d 8e  29 8d a8 a0 7e 46 8c 62  |J...g.-.)...~F.b|
+00000020  bb 4c 6c c1 6b f5 ae a5  e4 a9 bc 93 4f 60 ff 7a  |.Ll.k.......O`.z|
+
+Reported-by: Eric Sandeen <esandeen@redhat.com>
+Signed-off-by: David Milburn <dmilburn@redhat.com>
+Tested-by: Eric Sandeen <sandeen@redhat.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/pci.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index 69a19fe241063..90346cba87d1e 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -3093,7 +3093,8 @@ static const struct pci_device_id nvme_id_table[] = {
+       { PCI_VDEVICE(INTEL, 0xf1a5),   /* Intel 600P/P3100 */
+               .driver_data = NVME_QUIRK_NO_DEEPEST_PS |
+                               NVME_QUIRK_MEDIUM_PRIO_SQ |
+-                              NVME_QUIRK_NO_TEMP_THRESH_CHANGE },
++                              NVME_QUIRK_NO_TEMP_THRESH_CHANGE |
++                              NVME_QUIRK_DISABLE_WRITE_ZEROES, },
+       { PCI_VDEVICE(INTEL, 0xf1a6),   /* Intel 760p/Pro 7600p */
+               .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, },
+       { PCI_VDEVICE(INTEL, 0x5845),   /* Qemu emulated controller */
+-- 
+2.25.1
+
diff --git a/queue-5.8/nvme-pci-fix-null-req-in-completion-handler.patch b/queue-5.8/nvme-pci-fix-null-req-in-completion-handler.patch
new file mode 100644 (file)
index 0000000..4a48951
--- /dev/null
@@ -0,0 +1,65 @@
+From 75fb1bed1a89468acb8a968be58b1b3d755f8582 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 22 Sep 2020 14:25:17 +0800
+Subject: nvme-pci: fix NULL req in completion handler
+
+From: Xianting Tian <tian.xianting@h3c.com>
+
+[ Upstream commit 50b7c24390a53c78de546215282fb52980f1d7b7 ]
+
+Currently, we use nvmeq->q_depth as the upper limit for a valid tag in
+nvme_handle_cqe(), it is not correct. Because the available tag number
+is recorded in tagset, which is not equal to nvmeq->q_depth.
+
+The nvme driver registers interrupts for queues before initializing the
+tagset, because it uses the number of successful request_irq() calls to
+configure the tagset parameters. This allows a race condition with the
+current tag validity check if the controller happens to produce an
+interrupt with a corrupted CQE before the tagset is initialized.
+
+Replace the driver's indirect tag check with the one already provided by
+the block layer.
+
+Signed-off-by: Xianting Tian <tian.xianting@h3c.com>
+Reviewed-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/pci.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index 90346cba87d1e..cc3ae9c63a01b 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -942,13 +942,6 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)
+       struct nvme_completion *cqe = &nvmeq->cqes[idx];
+       struct request *req;
+-      if (unlikely(cqe->command_id >= nvmeq->q_depth)) {
+-              dev_warn(nvmeq->dev->ctrl.device,
+-                      "invalid id %d completed on queue %d\n",
+-                      cqe->command_id, le16_to_cpu(cqe->sq_id));
+-              return;
+-      }
+-
+       /*
+        * AEN requests are special as they don't time out and can
+        * survive any kind of queue freeze and often don't respond to
+@@ -962,6 +955,13 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)
+       }
+       req = blk_mq_tag_to_rq(nvme_queue_tagset(nvmeq), cqe->command_id);
++      if (unlikely(!req)) {
++              dev_warn(nvmeq->dev->ctrl.device,
++                      "invalid id %d completed on queue %d\n",
++                      cqe->command_id, le16_to_cpu(cqe->sq_id));
++              return;
++      }
++
+       trace_nvme_sq(req, cqe->sq_head, nvmeq->sq_tail);
+       nvme_end_request(req, cqe->status, cqe->result);
+ }
+-- 
+2.25.1
+
diff --git a/queue-5.8/revert-wlcore-adding-suppoprt-for-igtk-key-in-wlcore.patch b/queue-5.8/revert-wlcore-adding-suppoprt-for-igtk-key-in-wlcore.patch
new file mode 100644 (file)
index 0000000..432ebb8
--- /dev/null
@@ -0,0 +1,123 @@
+From 695c57f12c250887be3578b8677c9e9f1c3b64a3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Aug 2020 07:49:34 +0200
+Subject: Revert "wlcore: Adding suppoprt for IGTK key in wlcore driver"
+
+From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
+
+[ Upstream commit 1264c1e0cfe55e2d6c35e869244093195529af37 ]
+
+This patch causes a regression betwen Kernel 5.7 and 5.8 at wlcore:
+with it applied, WiFi stops working, and the Kernel starts printing
+this message every second:
+
+   wlcore: PHY firmware version: Rev 8.2.0.0.242
+   wlcore: firmware booted (Rev 8.9.0.0.79)
+   wlcore: ERROR command execute failure 14
+   ------------[ cut here ]------------
+   WARNING: CPU: 0 PID: 133 at drivers/net/wireless/ti/wlcore/main.c:795 wl12xx_queue_recovery_work.part.0+0x6c/0x74 [wlcore]
+   Modules linked in: wl18xx wlcore mac80211 libarc4 cfg80211 rfkill snd_soc_hdmi_codec crct10dif_ce wlcore_sdio adv7511 cec kirin9xx_drm(C) kirin9xx_dw_drm_dsi(C) drm_kms_helper drm ip_tables x_tables ipv6 nf_defrag_ipv6
+   CPU: 0 PID: 133 Comm: kworker/0:1 Tainted: G        WC        5.8.0+ #186
+   Hardware name: HiKey970 (DT)
+   Workqueue: events_freezable ieee80211_restart_work [mac80211]
+   pstate: 60000005 (nZCv daif -PAN -UAO BTYPE=--)
+   pc : wl12xx_queue_recovery_work.part.0+0x6c/0x74 [wlcore]
+   lr : wl12xx_queue_recovery_work+0x24/0x30 [wlcore]
+   sp : ffff8000126c3a60
+   x29: ffff8000126c3a60 x28: 00000000000025de
+   x27: 0000000000000010 x26: 0000000000000005
+   x25: ffff0001a5d49e80 x24: ffff8000092cf580
+   x23: ffff0001b7c12623 x22: ffff0001b6fcf2e8
+   x21: ffff0001b7e46200 x20: 00000000fffffffb
+   x19: ffff0001a78e6400 x18: 0000000000000030
+   x17: 0000000000000001 x16: 0000000000000001
+   x15: ffff0001b7e46670 x14: ffffffffffffffff
+   x13: ffff8000926c37d7 x12: ffff8000126c37e0
+   x11: ffff800011e01000 x10: ffff8000120526d0
+   x9 : 0000000000000000 x8 : 3431206572756c69
+   x7 : 6166206574756365 x6 : 0000000000000c2c
+   x5 : 0000000000000000 x4 : ffff0001bf1361e8
+   x3 : ffff0001bf1790b0 x2 : 0000000000000000
+   x1 : ffff0001a5d49e80 x0 : 0000000000000001
+   Call trace:
+    wl12xx_queue_recovery_work.part.0+0x6c/0x74 [wlcore]
+    wl12xx_queue_recovery_work+0x24/0x30 [wlcore]
+    wl1271_cmd_set_sta_key+0x258/0x25c [wlcore]
+    wl1271_set_key+0x7c/0x2dc [wlcore]
+    wlcore_set_key+0xe4/0x360 [wlcore]
+    wl18xx_set_key+0x48/0x1d0 [wl18xx]
+    wlcore_op_set_key+0xa4/0x180 [wlcore]
+    ieee80211_key_enable_hw_accel+0xb0/0x2d0 [mac80211]
+    ieee80211_reenable_keys+0x70/0x110 [mac80211]
+    ieee80211_reconfig+0xa00/0xca0 [mac80211]
+    ieee80211_restart_work+0xc4/0xfc [mac80211]
+    process_one_work+0x1cc/0x350
+    worker_thread+0x13c/0x470
+    kthread+0x154/0x160
+    ret_from_fork+0x10/0x30
+   ---[ end trace b1f722abf9af5919 ]---
+   wlcore: WARNING could not set keys
+   wlcore: ERROR Could not add or replace key
+   wlan0: failed to set key (4, ff:ff:ff:ff:ff:ff) to hardware (-5)
+   wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.79
+   wlcore: pc: 0x0, hint_sts: 0x00000040 count: 39
+   wlcore: down
+   wlcore: down
+   ieee80211 phy0: Hardware restart was requested
+   mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
+   mmc_host mmc0: Bus speed (slot 0) = 25000000Hz (slot req 25000000Hz, actual 25000000HZ div = 0)
+   wlcore: PHY firmware version: Rev 8.2.0.0.242
+   wlcore: firmware booted (Rev 8.9.0.0.79)
+   wlcore: ERROR command execute failure 14
+   ------------[ cut here ]------------
+
+Tested on Hikey 970.
+
+This reverts commit 2b7aadd3b9e17e8b81eeb8d9cc46756ae4658265.
+
+Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/f0a2cb7ea606f1a284d4c23cbf983da2954ce9b6.1598420968.git.mchehab+huawei@kernel.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/ti/wlcore/cmd.h  | 1 -
+ drivers/net/wireless/ti/wlcore/main.c | 4 ----
+ 2 files changed, 5 deletions(-)
+
+diff --git a/drivers/net/wireless/ti/wlcore/cmd.h b/drivers/net/wireless/ti/wlcore/cmd.h
+index 9acd8a41ea61f..f2609d5b6bf71 100644
+--- a/drivers/net/wireless/ti/wlcore/cmd.h
++++ b/drivers/net/wireless/ti/wlcore/cmd.h
+@@ -458,7 +458,6 @@ enum wl1271_cmd_key_type {
+       KEY_TKIP = 2,
+       KEY_AES  = 3,
+       KEY_GEM  = 4,
+-      KEY_IGTK  = 5,
+ };
+ struct wl1271_cmd_set_keys {
+diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
+index de6c8a7589ca3..ef169de992249 100644
+--- a/drivers/net/wireless/ti/wlcore/main.c
++++ b/drivers/net/wireless/ti/wlcore/main.c
+@@ -3550,9 +3550,6 @@ int wlcore_set_key(struct wl1271 *wl, enum set_key_cmd cmd,
+       case WL1271_CIPHER_SUITE_GEM:
+               key_type = KEY_GEM;
+               break;
+-      case WLAN_CIPHER_SUITE_AES_CMAC:
+-              key_type = KEY_IGTK;
+-              break;
+       default:
+               wl1271_error("Unknown key algo 0x%x", key_conf->cipher);
+@@ -6222,7 +6219,6 @@ static int wl1271_init_ieee80211(struct wl1271 *wl)
+               WLAN_CIPHER_SUITE_TKIP,
+               WLAN_CIPHER_SUITE_CCMP,
+               WL1271_CIPHER_SUITE_GEM,
+-              WLAN_CIPHER_SUITE_AES_CMAC,
+       };
+       /* The tx descriptor buffer */
+-- 
+2.25.1
+
diff --git a/queue-5.8/rndis_host-increase-sleep-time-in-the-query-response.patch b/queue-5.8/rndis_host-increase-sleep-time-in-the-query-response.patch
new file mode 100644 (file)
index 0000000..7fd0c2a
--- /dev/null
@@ -0,0 +1,49 @@
+From f9535b911f80ce386f828b5238770b399c5df335 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 11 Sep 2020 14:17:24 +0000
+Subject: rndis_host: increase sleep time in the query-response loop
+
+From: Olympia Giannou <ogiannou@gmail.com>
+
+[ Upstream commit 4202c9fdf03d79dedaa94b2c4cf574f25793d669 ]
+
+Some WinCE devices face connectivity issues via the NDIS interface. They
+fail to register, resulting in -110 timeout errors and failures during the
+probe procedure.
+
+In this kind of WinCE devices, the Windows-side ndis driver needs quite
+more time to be loaded and configured, so that the linux rndis host queries
+to them fail to be responded correctly on time.
+
+More specifically, when INIT is called on the WinCE side - no other
+requests can be served by the Client and this results in a failed QUERY
+afterwards.
+
+The increase of the waiting time on the side of the linux rndis host in
+the command-response loop leaves the INIT process to complete and respond
+to a QUERY, which comes afterwards. The WinCE devices with this special
+"feature" in their ndis driver are satisfied by this fix.
+
+Signed-off-by: Olympia Giannou <olympia.giannou@leica-geosystems.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/usb/rndis_host.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
+index bd9c07888ebb4..6fa7a009a24a4 100644
+--- a/drivers/net/usb/rndis_host.c
++++ b/drivers/net/usb/rndis_host.c
+@@ -201,7 +201,7 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)
+                       dev_dbg(&info->control->dev,
+                               "rndis response error, code %d\n", retval);
+               }
+-              msleep(20);
++              msleep(40);
+       }
+       dev_dbg(&info->control->dev, "rndis response timeout\n");
+       return -ETIMEDOUT;
+-- 
+2.25.1
+
diff --git a/queue-5.8/scripts-kallsyms-skip-ppc-compiler-stub-.long_branch.patch b/queue-5.8/scripts-kallsyms-skip-ppc-compiler-stub-.long_branch.patch
new file mode 100644 (file)
index 0000000..1cf0b72
--- /dev/null
@@ -0,0 +1,114 @@
+From 356b57a95bc7f549b9319eabb851114ce92a8174 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 23 Sep 2020 02:48:56 +0900
+Subject: scripts/kallsyms: skip ppc compiler stub *.long_branch.* /
+ *.plt_branch.*
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ Upstream commit 516d980f85415d76ae3d0d2a871eb20243f46c95 ]
+
+PowerPC allmodconfig often fails to build as follows:
+
+    LD      .tmp_vmlinux.kallsyms1
+    KSYM    .tmp_vmlinux.kallsyms1.o
+    LD      .tmp_vmlinux.kallsyms2
+    KSYM    .tmp_vmlinux.kallsyms2.o
+    LD      .tmp_vmlinux.kallsyms3
+    KSYM    .tmp_vmlinux.kallsyms3.o
+    LD      vmlinux
+    SORTTAB vmlinux
+    SYSMAP  System.map
+  Inconsistent kallsyms data
+  Try make KALLSYMS_EXTRA_PASS=1 as a workaround
+  make[2]: *** [../Makefile:1162: vmlinux] Error 1
+
+Setting KALLSYMS_EXTRA_PASS=1 does not help.
+
+This is caused by the compiler inserting stubs such as *.long_branch.*
+and *.plt_branch.*
+
+  $ powerpc-linux-nm -n .tmp_vmlinux.kallsyms2
+   [ snip ]
+  c00000000210c010 t 00000075.plt_branch.da9:19
+  c00000000210c020 t 00000075.plt_branch.1677:5
+  c00000000210c030 t 00000075.long_branch.memmove
+  c00000000210c034 t 00000075.plt_branch.9e0:5
+  c00000000210c044 t 00000075.plt_branch.free_initrd_mem
+    ...
+
+Actually, the problem mentioned in scripts/link-vmlinux.sh comments;
+"In theory it's possible this results in even more stubs, but unlikely"
+is happening here, and ends up with another kallsyms step required.
+
+scripts/kallsyms.c already ignores various compiler stubs. Let's do
+similar to make kallsysms for PowerPC always succeed in 2 steps.
+
+Reported-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Tested-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/kallsyms.c | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
+index 6dc3078649fa0..e8b26050f5458 100644
+--- a/scripts/kallsyms.c
++++ b/scripts/kallsyms.c
+@@ -82,6 +82,7 @@ static char *sym_name(const struct sym_entry *s)
+ static bool is_ignored_symbol(const char *name, char type)
+ {
++      /* Symbol names that exactly match to the following are ignored.*/
+       static const char * const ignored_symbols[] = {
+               /*
+                * Symbols which vary between passes. Passes 1 and 2 must have
+@@ -104,6 +105,7 @@ static bool is_ignored_symbol(const char *name, char type)
+               NULL
+       };
++      /* Symbol names that begin with the following are ignored.*/
+       static const char * const ignored_prefixes[] = {
+               "$",                    /* local symbols for ARM, MIPS, etc. */
+               ".LASANPC",             /* s390 kasan local symbols */
+@@ -112,6 +114,7 @@ static bool is_ignored_symbol(const char *name, char type)
+               NULL
+       };
++      /* Symbol names that end with the following are ignored.*/
+       static const char * const ignored_suffixes[] = {
+               "_from_arm",            /* arm */
+               "_from_thumb",          /* arm */
+@@ -119,9 +122,15 @@ static bool is_ignored_symbol(const char *name, char type)
+               NULL
+       };
++      /* Symbol names that contain the following are ignored.*/
++      static const char * const ignored_matches[] = {
++              ".long_branch.",        /* ppc stub */
++              ".plt_branch.",         /* ppc stub */
++              NULL
++      };
++
+       const char * const *p;
+-      /* Exclude symbols which vary between passes. */
+       for (p = ignored_symbols; *p; p++)
+               if (!strcmp(name, *p))
+                       return true;
+@@ -137,6 +146,11 @@ static bool is_ignored_symbol(const char *name, char type)
+                       return true;
+       }
++      for (p = ignored_matches; *p; p++) {
++              if (strstr(name, *p))
++                      return true;
++      }
++
+       if (type == 'U' || type == 'u')
+               return true;
+       /* exclude debugging symbols */
+-- 
+2.25.1
+
index d63a7e23fd09c965a5a6e96bb6cce34349dd717a..497230ace2325b283fff749e05253fd09516e2b8 100644 (file)
@@ -21,3 +21,29 @@ tracing-fix-trace_find_next_entry-accounting-of-temp-buffer-size.patch
 memstick-skip-allocating-card-when-removing-host.patch
 drm-amdgpu-restore-proper-ref-count-in-amdgpu_display_crtc_set_config.patch
 xen-events-don-t-use-chip_data-for-legacy-irqs.patch
+clocksource-drivers-timer-gx6605s-fixup-counter-relo.patch
+vboxsf-fix-the-check-for-the-old-binary-mount-argume.patch
+mt76-mt7915-use-ieee80211_free_txskb-to-free-tx-skbs.patch
+libbpf-remove-arch-specific-include-path-in-makefile.patch
+drivers-net-wan-hdlc_fr-add-needed_headroom-for-pvc-.patch
+revert-wlcore-adding-suppoprt-for-igtk-key-in-wlcore.patch
+drm-sun4i-mixer-extend-regmap-max_register.patch
+hv_netvsc-cache-the-current-data-path-to-avoid-dupli.patch
+net-dec-de2104x-increase-receive-ring-size-for-tulip.patch
+rndis_host-increase-sleep-time-in-the-query-response.patch
+nvme-pci-disable-the-write-zeros-command-for-intel-6.patch
+nvme-core-get-put-ctrl-and-transport-module-in-nvme_.patch
+fuse-fix-the-direct_io-treatment-of-iov_iter.patch
+drivers-net-wan-lapbether-make-skb-protocol-consiste.patch
+drivers-net-wan-hdlc-set-skb-protocol-before-transmi.patch
+mac80211-fix-radiotap-header-channel-flag-for-6ghz-b.patch
+mac80211-do-not-allow-bigger-vht-mpdus-than-the-hard.patch
+tracing-make-the-space-reserved-for-the-pid-wider.patch
+tools-io_uring-fix-compile-breakage.patch
+io_uring-mark-statx-files_update-epoll_ctl-as-non-sq.patch
+cpuidle-psci-fix-suspicious-rcu-usage.patch
+spi-fsl-espi-only-process-interrupts-for-expected-ev.patch
+net-dsa-felix-fix-some-key-offsets-for-ip4_tcp_udp-v.patch
+nvme-pci-fix-null-req-in-completion-handler.patch
+nvme-fc-fail-new-connections-to-a-deleted-host-or-re.patch
+scripts-kallsyms-skip-ppc-compiler-stub-.long_branch.patch
diff --git a/queue-5.8/spi-fsl-espi-only-process-interrupts-for-expected-ev.patch b/queue-5.8/spi-fsl-espi-only-process-interrupts-for-expected-ev.patch
new file mode 100644 (file)
index 0000000..93ea810
--- /dev/null
@@ -0,0 +1,49 @@
+From 30b47bbde000cc80b65d9f4ccf5d813149df22d8 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 4 Sep 2020 12:28:12 +1200
+Subject: spi: fsl-espi: Only process interrupts for expected events
+
+From: Chris Packham <chris.packham@alliedtelesis.co.nz>
+
+[ Upstream commit b867eef4cf548cd9541225aadcdcee644669b9e1 ]
+
+The SPIE register contains counts for the TX FIFO so any time the irq
+handler was invoked we would attempt to process the RX/TX fifos. Use the
+SPIM value to mask the events so that we only process interrupts that
+were expected.
+
+This was a latent issue exposed by commit 3282a3da25bd ("powerpc/64:
+Implement soft interrupt replay in C").
+
+Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
+Link: https://lore.kernel.org/r/20200904002812.7300-1-chris.packham@alliedtelesis.co.nz
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spi-fsl-espi.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c
+index e60581283a247..6d148ab70b93e 100644
+--- a/drivers/spi/spi-fsl-espi.c
++++ b/drivers/spi/spi-fsl-espi.c
+@@ -564,13 +564,14 @@ static void fsl_espi_cpu_irq(struct fsl_espi *espi, u32 events)
+ static irqreturn_t fsl_espi_irq(s32 irq, void *context_data)
+ {
+       struct fsl_espi *espi = context_data;
+-      u32 events;
++      u32 events, mask;
+       spin_lock(&espi->lock);
+       /* Get interrupt events(tx/rx) */
+       events = fsl_espi_read_reg(espi, ESPI_SPIE);
+-      if (!events) {
++      mask = fsl_espi_read_reg(espi, ESPI_SPIM);
++      if (!(events & mask)) {
+               spin_unlock(&espi->lock);
+               return IRQ_NONE;
+       }
+-- 
+2.25.1
+
diff --git a/queue-5.8/tools-io_uring-fix-compile-breakage.patch b/queue-5.8/tools-io_uring-fix-compile-breakage.patch
new file mode 100644 (file)
index 0000000..aa28283
--- /dev/null
@@ -0,0 +1,67 @@
+From 534639f0438646b66ae0246487a9522fe58db953 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 14 Sep 2020 17:36:09 -0400
+Subject: tools/io_uring: fix compile breakage
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Douglas Gilbert <dgilbert@interlog.com>
+
+[ Upstream commit 72f04da48a9828ba3ae8ac77bea648bda8b7d0ff ]
+
+It would seem none of the kernel continuous integration does this:
+    $ cd tools/io_uring
+    $ make
+
+Otherwise it may have noticed:
+   cc -Wall -Wextra -g -D_GNU_SOURCE   -c -o io_uring-bench.o
+        io_uring-bench.c
+io_uring-bench.c:133:12: error: static declaration of ‘gettid’
+        follows non-static declaration
+  133 | static int gettid(void)
+      |            ^~~~~~
+In file included from /usr/include/unistd.h:1170,
+                 from io_uring-bench.c:27:
+/usr/include/x86_64-linux-gnu/bits/unistd_ext.h:34:16: note:
+        previous declaration of ‘gettid’ was here
+   34 | extern __pid_t gettid (void) __THROW;
+      |                ^~~~~~
+make: *** [<builtin>: io_uring-bench.o] Error 1
+
+The problem on Ubuntu 20.04 (with lk 5.9.0-rc5) is that unistd.h
+already defines gettid(). So prefix the local definition with
+"lk_".
+
+Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/io_uring/io_uring-bench.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/io_uring/io_uring-bench.c b/tools/io_uring/io_uring-bench.c
+index 0f257139b003e..7703f01183854 100644
+--- a/tools/io_uring/io_uring-bench.c
++++ b/tools/io_uring/io_uring-bench.c
+@@ -130,7 +130,7 @@ static int io_uring_register_files(struct submitter *s)
+                                       s->nr_files);
+ }
+-static int gettid(void)
++static int lk_gettid(void)
+ {
+       return syscall(__NR_gettid);
+ }
+@@ -281,7 +281,7 @@ static void *submitter_fn(void *data)
+       struct io_sq_ring *ring = &s->sq_ring;
+       int ret, prepped;
+-      printf("submitter=%d\n", gettid());
++      printf("submitter=%d\n", lk_gettid());
+       srand48_r(pthread_self(), &s->rand);
+-- 
+2.25.1
+
diff --git a/queue-5.8/tracing-make-the-space-reserved-for-the-pid-wider.patch b/queue-5.8/tracing-make-the-space-reserved-for-the-pid-wider.patch
new file mode 100644 (file)
index 0000000..9150212
--- /dev/null
@@ -0,0 +1,151 @@
+From 141ce5d79d9f04d720d85f067ff1086ff354dc3e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 4 Sep 2020 10:23:31 +0200
+Subject: tracing: Make the space reserved for the pid wider
+
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+
+[ Upstream commit 795d6379a47bcbb88bd95a69920e4acc52849f88 ]
+
+For 64bit CONFIG_BASE_SMALL=0 systems PID_MAX_LIMIT is set by default to
+4194304. During boot the kernel sets a new value based on number of CPUs
+but no lower than 32768. It is 1024 per CPU so with 128 CPUs the default
+becomes 131072 which needs six digits.
+This value can be increased during run time but must not exceed the
+initial upper limit.
+
+Systemd sometime after v241 sets it to the upper limit during boot. The
+result is that when the pid exceeds five digits, the trace output is a
+little hard to read because it is no longer properly padded (same like
+on big iron with 98+ CPUs).
+
+Increase the pid padding to seven digits.
+
+Link: https://lkml.kernel.org/r/20200904082331.dcdkrr3bkn3e4qlg@linutronix.de
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ kernel/trace/trace.c        | 38 ++++++++++++++++++-------------------
+ kernel/trace/trace_output.c | 12 ++++++------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index 7dea52549eff3..68c0ff4bd02fa 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -3745,14 +3745,14 @@ unsigned long trace_total_entries(struct trace_array *tr)
+ static void print_lat_help_header(struct seq_file *m)
+ {
+-      seq_puts(m, "#                  _------=> CPU#            \n"
+-                  "#                 / _-----=> irqs-off        \n"
+-                  "#                | / _----=> need-resched    \n"
+-                  "#                || / _---=> hardirq/softirq \n"
+-                  "#                ||| / _--=> preempt-depth   \n"
+-                  "#                |||| /     delay            \n"
+-                  "#  cmd     pid   ||||| time  |   caller      \n"
+-                  "#     \\   /      |||||  \\    |   /         \n");
++      seq_puts(m, "#                    _------=> CPU#            \n"
++                  "#                   / _-----=> irqs-off        \n"
++                  "#                  | / _----=> need-resched    \n"
++                  "#                  || / _---=> hardirq/softirq \n"
++                  "#                  ||| / _--=> preempt-depth   \n"
++                  "#                  |||| /     delay            \n"
++                  "#  cmd     pid     ||||| time  |   caller      \n"
++                  "#     \\   /        |||||  \\    |   /         \n");
+ }
+ static void print_event_info(struct array_buffer *buf, struct seq_file *m)
+@@ -3773,26 +3773,26 @@ static void print_func_help_header(struct array_buffer *buf, struct seq_file *m,
+       print_event_info(buf, m);
+-      seq_printf(m, "#           TASK-PID   %s  CPU#   TIMESTAMP  FUNCTION\n", tgid ? "TGID     " : "");
+-      seq_printf(m, "#              | |     %s    |       |         |\n",      tgid ? "  |      " : "");
++      seq_printf(m, "#           TASK-PID    %s CPU#     TIMESTAMP  FUNCTION\n", tgid ? "   TGID   " : "");
++      seq_printf(m, "#              | |      %s   |         |         |\n",      tgid ? "     |    " : "");
+ }
+ static void print_func_help_header_irq(struct array_buffer *buf, struct seq_file *m,
+                                      unsigned int flags)
+ {
+       bool tgid = flags & TRACE_ITER_RECORD_TGID;
+-      const char *space = "          ";
+-      int prec = tgid ? 10 : 2;
++      const char *space = "            ";
++      int prec = tgid ? 12 : 2;
+       print_event_info(buf, m);
+-      seq_printf(m, "#                          %.*s  _-----=> irqs-off\n", prec, space);
+-      seq_printf(m, "#                          %.*s / _----=> need-resched\n", prec, space);
+-      seq_printf(m, "#                          %.*s| / _---=> hardirq/softirq\n", prec, space);
+-      seq_printf(m, "#                          %.*s|| / _--=> preempt-depth\n", prec, space);
+-      seq_printf(m, "#                          %.*s||| /     delay\n", prec, space);
+-      seq_printf(m, "#           TASK-PID %.*sCPU#  ||||    TIMESTAMP  FUNCTION\n", prec, "   TGID   ");
+-      seq_printf(m, "#              | |   %.*s  |   ||||       |         |\n", prec, "     |    ");
++      seq_printf(m, "#                            %.*s  _-----=> irqs-off\n", prec, space);
++      seq_printf(m, "#                            %.*s / _----=> need-resched\n", prec, space);
++      seq_printf(m, "#                            %.*s| / _---=> hardirq/softirq\n", prec, space);
++      seq_printf(m, "#                            %.*s|| / _--=> preempt-depth\n", prec, space);
++      seq_printf(m, "#                            %.*s||| /     delay\n", prec, space);
++      seq_printf(m, "#           TASK-PID  %.*s CPU#  ||||   TIMESTAMP  FUNCTION\n", prec, "     TGID   ");
++      seq_printf(m, "#              | |    %.*s   |   ||||      |         |\n", prec, "       |    ");
+ }
+ void
+diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
+index 73976de7f8cc8..a8d719263e1bc 100644
+--- a/kernel/trace/trace_output.c
++++ b/kernel/trace/trace_output.c
+@@ -497,7 +497,7 @@ lat_print_generic(struct trace_seq *s, struct trace_entry *entry, int cpu)
+       trace_find_cmdline(entry->pid, comm);
+-      trace_seq_printf(s, "%8.8s-%-5d %3d",
++      trace_seq_printf(s, "%8.8s-%-7d %3d",
+                        comm, entry->pid, cpu);
+       return trace_print_lat_fmt(s, entry);
+@@ -588,15 +588,15 @@ int trace_print_context(struct trace_iterator *iter)
+       trace_find_cmdline(entry->pid, comm);
+-      trace_seq_printf(s, "%16s-%-5d ", comm, entry->pid);
++      trace_seq_printf(s, "%16s-%-7d ", comm, entry->pid);
+       if (tr->trace_flags & TRACE_ITER_RECORD_TGID) {
+               unsigned int tgid = trace_find_tgid(entry->pid);
+               if (!tgid)
+-                      trace_seq_printf(s, "(-----) ");
++                      trace_seq_printf(s, "(-------) ");
+               else
+-                      trace_seq_printf(s, "(%5d) ", tgid);
++                      trace_seq_printf(s, "(%7d) ", tgid);
+       }
+       trace_seq_printf(s, "[%03d] ", iter->cpu);
+@@ -636,7 +636,7 @@ int trace_print_lat_context(struct trace_iterator *iter)
+               trace_find_cmdline(entry->pid, comm);
+               trace_seq_printf(
+-                      s, "%16s %5d %3d %d %08x %08lx ",
++                      s, "%16s %7d %3d %d %08x %08lx ",
+                       comm, entry->pid, iter->cpu, entry->flags,
+                       entry->preempt_count, iter->idx);
+       } else {
+@@ -917,7 +917,7 @@ static enum print_line_t trace_ctxwake_print(struct trace_iterator *iter,
+       S = task_index_to_char(field->prev_state);
+       trace_find_cmdline(field->next_pid, comm);
+       trace_seq_printf(&iter->seq,
+-                       " %5d:%3d:%c %s [%03d] %5d:%3d:%c %s\n",
++                       " %7d:%3d:%c %s [%03d] %7d:%3d:%c %s\n",
+                        field->prev_pid,
+                        field->prev_prio,
+                        S, delim,
+-- 
+2.25.1
+
diff --git a/queue-5.8/vboxsf-fix-the-check-for-the-old-binary-mount-argume.patch b/queue-5.8/vboxsf-fix-the-check-for-the-old-binary-mount-argume.patch
new file mode 100644 (file)
index 0000000..5236eb1
--- /dev/null
@@ -0,0 +1,44 @@
+From 479990701f96f104adf90a60fb0e66f421b16935 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 25 Aug 2020 13:12:57 +0200
+Subject: vboxsf: Fix the check for the old binary mount-arguments struct
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 9d682ea6bcc76b8b2691c79add59f7d99c881635 ]
+
+Fix the check for the mainline vboxsf code being used with the old
+mount.vboxsf mount binary from the out-of-tree vboxsf version doing
+a comparison between signed and unsigned data types.
+
+This fixes the following smatch warnings:
+
+fs/vboxsf/super.c:390 vboxsf_parse_monolithic() warn: impossible condition '(options[1] == (255)) => ((-128)-127 == 255)'
+fs/vboxsf/super.c:391 vboxsf_parse_monolithic() warn: impossible condition '(options[2] == (254)) => ((-128)-127 == 254)'
+fs/vboxsf/super.c:392 vboxsf_parse_monolithic() warn: impossible condition '(options[3] == (253)) => ((-128)-127 == 253)'
+
+Reported-by: kernel test robot <lkp@intel.com>
+Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/vboxsf/super.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fs/vboxsf/super.c b/fs/vboxsf/super.c
+index 8fe03b4a0d2b0..25aade3441922 100644
+--- a/fs/vboxsf/super.c
++++ b/fs/vboxsf/super.c
+@@ -384,7 +384,7 @@ fail_nomem:
+ static int vboxsf_parse_monolithic(struct fs_context *fc, void *data)
+ {
+-      char *options = data;
++      unsigned char *options = data;
+       if (options && options[0] == VBSF_MOUNT_SIGNATURE_BYTE_0 &&
+                      options[1] == VBSF_MOUNT_SIGNATURE_BYTE_1 &&
+-- 
+2.25.1
+