--- /dev/null
+From 5bf8e6096c7390f8f2c4d5394b5e49823adb004e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Fri, 27 Mar 2020 14:03:07 +0100
+Subject: brcmfmac: add stub for monitor interface xmit
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Rafał Miłecki <rafal@milecki.pl>
+
+commit 5bf8e6096c7390f8f2c4d5394b5e49823adb004e upstream.
+
+According to the struct net_device_ops documentation .ndo_start_xmit is
+"Required; cannot be NULL.". Missing it may crash kernel easily:
+
+[ 341.216709] Unable to handle kernel NULL pointer dereference at virtual address 00000000
+[ 341.224836] pgd = 26088755
+[ 341.227544] [00000000] *pgd=00000000
+[ 341.231135] Internal error: Oops: 80000007 [#1] SMP ARM
+[ 341.236367] Modules linked in: pppoe ppp_async iptable_nat brcmfmac xt_state xt_nat xt_conntrack xt_REDIRECT xt_MASQU
+[ 341.304689] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.24 #0
+[ 341.310621] Hardware name: BCM5301X
+[ 341.314116] PC is at 0x0
+[ 341.316664] LR is at dev_hard_start_xmit+0x8c/0x11c
+[ 341.321546] pc : [<00000000>] lr : [<c0469fa8>] psr: 60000113
+[ 341.327821] sp : c0801c30 ip : c610cf00 fp : c08048e4
+[ 341.333051] r10: c073a63a r9 : c08044dc r8 : c6c04e00
+[ 341.338283] r7 : 00000000 r6 : c60f5000 r5 : 00000000 r4 : c6a9c3c0
+[ 341.344820] r3 : 00000000 r2 : bf25a13c r1 : c60f5000 r0 : c6a9c3c0
+[ 341.351358] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
+[ 341.358504] Control: 10c5387d Table: 0611c04a DAC: 00000051
+[ 341.364257] Process swapper/0 (pid: 0, stack limit = 0xc68ed0ca)
+[ 341.370271] Stack: (0xc0801c30 to 0xc0802000)
+[ 341.374633] 1c20: c6e7d480 c0802d00 c60f5050 c0801c6c
+[ 341.382825] 1c40: c60f5000 c6a9c3c0 c6f90000 c6f9005c c6c04e00 c60f5000 00000000 c6f9005c
+[ 341.391015] 1c60: 00000000 c04a033c 00f90200 00000010 c6a9c3c0 c6a9c3c0 c6f90000 00000000
+[ 341.399205] 1c80: 00000000 00000000 00000000 c046a7ac c6f9005c 00000001 fffffff4 00000000
+[ 341.407395] 1ca0: c6f90200 00000000 c60f5000 c0479550 00000000 c6f90200 c6a9c3c0 16000000
+[ 341.415586] 1cc0: 0000001c 6f4ad52f c6197040 b6df9387 36000000 c0520404 c073a80c c6a9c3c0
+[ 341.423777] 1ce0: 00000000 c6d643c0 c6a9c3c0 c0800024 00000001 00000001 c6d643c8 c6a9c3c0
+[ 341.431967] 1d00: c081b9c0 c7abca80 c610c840 c081b9c0 0000001c 00400000 c6bc5e6c c0522fb4
+[ 341.440157] 1d20: c6d64400 00000004 c6bc5e0a 00000000 c60f5000 c7abca80 c081b9c0 c0522f54
+[ 341.448348] 1d40: c6a9c3c0 c7abca80 c0803e48 c0549c94 c610c828 0000000a c0801d74 00000003
+[ 341.456538] 1d60: c6ec8f0a 00000000 c60f5000 c7abca80 c081b9c0 c0548520 0000000a 00000000
+[ 341.464728] 1d80: 00000000 003a0000 00000000 00000000 00000000 00000000 00000000 00000000
+[ 341.472919] 1da0: 000002ff 00000000 00000000 16000000 00000000 00000000 00000000 00000000
+[ 341.481110] 1dc0: 00000000 0000008f 00000000 00000000 00000000 2d132a69 c6bc5e40 00000000
+[ 341.489300] 1de0: c6bc5e40 c6a9c3c0 00000000 c6ec8e50 00000001 c054b070 00000001 00000000
+[ 341.497490] 1e00: c0807200 c6bc5e00 00000000 ffffe000 00000100 c054aea4 00000000 00000000
+[ 341.505681] 1e20: 00000122 00400000 c0802d00 c0172e80 6f56a70e ffffffff 6f56a70e c7eb9cc0
+[ 341.513871] 1e40: c7eb82c0 00000000 c0801e60 c017309c 00000000 00000000 07780000 c07382c0
+[ 341.522061] 1e60: 00000000 c7eb9cc0 c0739cc0 c0803f74 c0801e70 c0801e70 c0801ea4 c013d380
+[ 341.530253] 1e80: 00000000 000000a0 00000001 c0802084 c0802080 40000001 ffffe000 00000100
+[ 341.538443] 1ea0: c0802080 c01021e8 c8803100 10c5387d 00000000 c07341f0 c0739880 0000000a
+[ 341.546633] 1ec0: c0734180 00001017 c0802d00 c062aa98 00200002 c062aa60 c8803100 c073984c
+[ 341.554823] 1ee0: 00000000 00000001 00000000 c7810000 c8803100 10c5387d 00000000 c011c188
+[ 341.563014] 1f00: c073984c c015f0f8 c0804244 c0815ae4 c880210c c8802100 c0801f40 c037c584
+[ 341.571204] 1f20: c01035f8 60000013 ffffffff c0801f74 c080afd4 c0800000 10c5387d c0101a8c
+[ 341.579395] 1f40: 00000000 004ac9dc c7eba4b4 c010ee60 ffffe000 c0803e68 c0803ea8 00000001
+[ 341.587587] 1f60: c080afd4 c062ca20 10c5387d 00000000 00000000 c0801f90 c01035f4 c01035f8
+[ 341.595776] 1f80: 60000013 ffffffff 00000051 00000000 ffffe000 c013ff50 000000ce c0803e40
+[ 341.603967] 1fa0: c082216c 00000000 00000001 c072ba38 10c5387d c0140214 c0822184 c0700df8
+[ 341.612157] 1fc0: ffffffff ffffffff 00000000 c070058c c072ba38 2d162e71 00000000 c0700330
+[ 341.620348] 1fe0: 00000051 10c0387d 000000ff 00a521d0 413fc090 00000000 00000000 00000000
+[ 341.628558] [<c0469fa8>] (dev_hard_start_xmit) from [<c04a033c>] (sch_direct_xmit+0xe4/0x2bc)
+[ 341.637106] [<c04a033c>] (sch_direct_xmit) from [<c046a7ac>] (__dev_queue_xmit+0x6a4/0x72c)
+[ 341.645481] [<c046a7ac>] (__dev_queue_xmit) from [<c0520404>] (ip6_finish_output2+0x18c/0x434)
+[ 341.654112] [<c0520404>] (ip6_finish_output2) from [<c0522fb4>] (ip6_output+0x5c/0xd0)
+[ 341.662053] [<c0522fb4>] (ip6_output) from [<c0549c94>] (mld_sendpack+0x1a0/0x1a8)
+[ 341.669640] [<c0549c94>] (mld_sendpack) from [<c054b070>] (mld_ifc_timer_expire+0x1cc/0x2e4)
+[ 341.678111] [<c054b070>] (mld_ifc_timer_expire) from [<c0172e80>] (call_timer_fn.constprop.3+0x24/0x98)
+[ 341.687527] [<c0172e80>] (call_timer_fn.constprop.3) from [<c017309c>] (run_timer_softirq+0x1a8/0x1e4)
+[ 341.696860] [<c017309c>] (run_timer_softirq) from [<c01021e8>] (__do_softirq+0x120/0x2b0)
+[ 341.705066] [<c01021e8>] (__do_softirq) from [<c011c188>] (irq_exit+0x78/0x84)
+[ 341.712317] [<c011c188>] (irq_exit) from [<c015f0f8>] (__handle_domain_irq+0x60/0xb4)
+[ 341.720179] [<c015f0f8>] (__handle_domain_irq) from [<c037c584>] (gic_handle_irq+0x4c/0x90)
+[ 341.728549] [<c037c584>] (gic_handle_irq) from [<c0101a8c>] (__irq_svc+0x6c/0x90)
+
+Fixes: 20f2c5fa3af0 ("brcmfmac: add initial support for monitor mode")
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/20200327130307.26477-1-zajec5@gmail.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+@@ -729,9 +729,18 @@ static int brcmf_net_mon_stop(struct net
+ return err;
+ }
+
++static netdev_tx_t brcmf_net_mon_start_xmit(struct sk_buff *skb,
++ struct net_device *ndev)
++{
++ dev_kfree_skb_any(skb);
++
++ return NETDEV_TX_OK;
++}
++
+ static const struct net_device_ops brcmf_netdev_ops_mon = {
+ .ndo_open = brcmf_net_mon_open,
+ .ndo_stop = brcmf_net_mon_stop,
++ .ndo_start_xmit = brcmf_net_mon_start_xmit,
+ };
+
+ int brcmf_net_mon_attach(struct brcmf_if *ifp)
--- /dev/null
+From 924ed1f5c181132897c5928af7f3afd28792889c Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 8 Apr 2020 17:53:43 +0200
+Subject: clk: asm9260: fix __clk_hw_register_fixed_rate_with_accuracy typo
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 924ed1f5c181132897c5928af7f3afd28792889c upstream.
+
+The __clk_hw_register_fixed_rate_with_accuracy() function (with two '_')
+does not exist, and apparently never did:
+
+drivers/clk/clk-asm9260.c: In function 'asm9260_acc_init':
+drivers/clk/clk-asm9260.c:279:7: error: implicit declaration of function '__clk_hw_register_fixed_rate_with_accuracy'; did you mean 'clk_hw_register_fixed_rate_with_accuracy'? [-Werror=implicit-function-declaration]
+ 279 | hw = __clk_hw_register_fixed_rate_with_accuracy(NULL, NULL, pll_clk,
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ | clk_hw_register_fixed_rate_with_accuracy
+drivers/clk/clk-asm9260.c:279:5: error: assignment to 'struct clk_hw *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
+ 279 | hw = __clk_hw_register_fixed_rate_with_accuracy(NULL, NULL, pll_clk,
+ | ^
+
+From what I can tell, __clk_hw_register_fixed_rate() is the correct
+API here, so use that instead.
+
+Fixes: 728e3096741a ("clk: asm9260: Use parent accuracy in fixed rate clk")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Link: https://lkml.kernel.org/r/20200408155402.2138446-1-arnd@arndb.de
+Signed-off-by: Stephen Boyd <sboyd@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/clk-asm9260.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/clk/clk-asm9260.c
++++ b/drivers/clk/clk-asm9260.c
+@@ -276,7 +276,7 @@ static void __init asm9260_acc_init(stru
+
+ /* TODO: Convert to DT parent scheme */
+ ref_clk = of_clk_get_parent_name(np, 0);
+- hw = __clk_hw_register_fixed_rate_with_accuracy(NULL, NULL, pll_clk,
++ hw = __clk_hw_register_fixed_rate(NULL, NULL, pll_clk,
+ ref_clk, NULL, NULL, 0, rate, 0,
+ CLK_FIXED_RATE_PARENT_ACCURACY);
+
--- /dev/null
+From f6103162008dfd37567f240b50e5e1ea7cf2e00c Mon Sep 17 00:00:00 2001
+From: Ard Biesheuvel <ardb@kernel.org>
+Date: Thu, 9 Apr 2020 15:04:34 +0200
+Subject: efi/x86: Don't remap text<->rodata gap read-only for mixed mode
+
+From: Ard Biesheuvel <ardb@kernel.org>
+
+commit f6103162008dfd37567f240b50e5e1ea7cf2e00c upstream.
+
+Commit
+
+ d9e3d2c4f10320 ("efi/x86: Don't map the entire kernel text RW for mixed mode")
+
+updated the code that creates the 1:1 memory mapping to use read-only
+attributes for the 1:1 alias of the kernel's text and rodata sections, to
+protect it from inadvertent modification. However, it failed to take into
+account that the unused gap between text and rodata is given to the page
+allocator for general use.
+
+If the vmap'ed stack happens to be allocated from this region, any by-ref
+output arguments passed to EFI runtime services that are allocated on the
+stack (such as the 'datasize' argument taken by GetVariable() when invoked
+from efivar_entry_size()) will be referenced via a read-only mapping,
+resulting in a page fault if the EFI code tries to write to it:
+
+ BUG: unable to handle page fault for address: 00000000386aae88
+ #PF: supervisor write access in kernel mode
+ #PF: error_code(0x0003) - permissions violation
+ PGD fd61063 P4D fd61063 PUD fd62063 PMD 386000e1
+ Oops: 0003 [#1] SMP PTI
+ CPU: 2 PID: 255 Comm: systemd-sysv-ge Not tainted 5.6.0-rc4-default+ #22
+ Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
+ RIP: 0008:0x3eaeed95
+ Code: ... <89> 03 be 05 00 00 80 a1 74 63 b1 3e 83 c0 48 e8 44 d2 ff ff eb 05
+ RSP: 0018:000000000fd73fa0 EFLAGS: 00010002
+ RAX: 0000000000000001 RBX: 00000000386aae88 RCX: 000000003e9f1120
+ RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000000000000001
+ RBP: 000000000fd73fd8 R08: 00000000386aae88 R09: 0000000000000000
+ R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000000
+ R13: ffffc0f040220000 R14: 0000000000000000 R15: 0000000000000000
+ FS: 00007f21160ac940(0000) GS:ffff9cf23d500000(0000) knlGS:0000000000000000
+ CS: 0008 DS: 0018 ES: 0018 CR0: 0000000080050033
+ CR2: 00000000386aae88 CR3: 000000000fd6c004 CR4: 00000000003606e0
+ DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+ DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+ Call Trace:
+ Modules linked in:
+ CR2: 00000000386aae88
+ ---[ end trace a8bfbd202e712834 ]---
+
+Let's fix this by remapping text and rodata individually, and leave the
+gaps mapped read-write.
+
+Fixes: d9e3d2c4f10320 ("efi/x86: Don't map the entire kernel text RW for mixed mode")
+Reported-by: Jiri Slaby <jslaby@suse.cz>
+Tested-by: Jiri Slaby <jslaby@suse.cz>
+Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Link: https://lore.kernel.org/r/20200409130434.6736-10-ardb@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/platform/efi/efi_64.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/platform/efi/efi_64.c
++++ b/arch/x86/platform/efi/efi_64.c
+@@ -202,7 +202,7 @@ virt_to_phys_or_null_size(void *va, unsi
+
+ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
+ {
+- unsigned long pfn, text, pf;
++ unsigned long pfn, text, pf, rodata;
+ struct page *page;
+ unsigned npages;
+ pgd_t *pgd = efi_mm.pgd;
+@@ -256,7 +256,7 @@ int __init efi_setup_page_tables(unsigne
+
+ efi_scratch.phys_stack = page_to_phys(page + 1); /* stack grows down */
+
+- npages = (__end_rodata_aligned - _text) >> PAGE_SHIFT;
++ npages = (_etext - _text) >> PAGE_SHIFT;
+ text = __pa(_text);
+ pfn = text >> PAGE_SHIFT;
+
+@@ -266,6 +266,14 @@ int __init efi_setup_page_tables(unsigne
+ return 1;
+ }
+
++ npages = (__end_rodata - __start_rodata) >> PAGE_SHIFT;
++ rodata = __pa(__start_rodata);
++ pfn = rodata >> PAGE_SHIFT;
++ if (kernel_map_pages_in_pgd(pgd, pfn, rodata, npages, pf)) {
++ pr_err("Failed to map kernel rodata 1:1\n");
++ return 1;
++ }
++
+ return 0;
+ }
+
--- /dev/null
+From ed08ebb7124e90a99420bb913d602907d377d03d Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Wed, 8 Apr 2020 20:37:30 -0700
+Subject: hwmon: (drivetemp) Return -ENODATA for invalid temperatures
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Guenter Roeck <linux@roeck-us.net>
+
+commit ed08ebb7124e90a99420bb913d602907d377d03d upstream.
+
+Holger Hoffstätte observed that Samsung 850 Pro may return invalid
+temperatures for a short period of time after resume. Return -ENODATA
+to userspace if this is observed.
+
+Fixes: 5b46903d8bf3 ("hwmon: Driver for disk and solid state drives with temperature sensors")
+Reported-by: Holger Hoffstätte <holger@applied-asynchrony.com>
+Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hwmon/drivetemp.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/hwmon/drivetemp.c
++++ b/drivers/hwmon/drivetemp.c
+@@ -264,12 +264,18 @@ static int drivetemp_get_scttemp(struct
+ return err;
+ switch (attr) {
+ case hwmon_temp_input:
++ if (!temp_is_valid(buf[SCT_STATUS_TEMP]))
++ return -ENODATA;
+ *val = temp_from_sct(buf[SCT_STATUS_TEMP]);
+ break;
+ case hwmon_temp_lowest:
++ if (!temp_is_valid(buf[SCT_STATUS_TEMP_LOWEST]))
++ return -ENODATA;
+ *val = temp_from_sct(buf[SCT_STATUS_TEMP_LOWEST]);
+ break;
+ case hwmon_temp_highest:
++ if (!temp_is_valid(buf[SCT_STATUS_TEMP_HIGHEST]))
++ return -ENODATA;
+ *val = temp_from_sct(buf[SCT_STATUS_TEMP_HIGHEST]);
+ break;
+ default:
--- /dev/null
+From 6bdf8f3efe867c5893e27431a555e41f54ed7f9a Mon Sep 17 00:00:00 2001
+From: Ann T Ropea <bedhanger@gmx.de>
+Date: Tue, 7 Apr 2020 01:55:21 +0200
+Subject: hwmon: (drivetemp) Use drivetemp's true module name in Kconfig section
+
+From: Ann T Ropea <bedhanger@gmx.de>
+
+commit 6bdf8f3efe867c5893e27431a555e41f54ed7f9a upstream.
+
+The addition of the support for reading the temperature of ATA drives as
+per commit 5b46903d8bf3 ("hwmon: Driver for disk and solid state drives
+with temperature sensors") lists in the respective Kconfig section the
+name of the module to be optionally built as "satatemp".
+
+However, building the kernel modules with "CONFIG_SENSORS_DRIVETEMP=m",
+does not generate a file named "satatemp.ko".
+
+Instead, the rest of the original commit uses the term "drivetemp" and
+a file named "drivetemp.ko" ends up in the kernel's modules directory.
+This file has the right ingredients:
+
+ $ strings /path/to/drivetemp.ko | grep ^description
+ description=Hard drive temperature monitor
+
+and modprobing it produces the expected result:
+
+ # drivetemp is not loaded
+ $ sensors -u drivetemp-scsi-4-0
+ Specified sensor(s) not found!
+ $ sudo modprobe drivetemp
+ $ sensors -u drivetemp-scsi-4-0
+ drivetemp-scsi-4-0
+ Adapter: SCSI adapter
+ temp1:
+ temp1_input: 35.000
+ temp1_max: 60.000
+ temp1_min: 0.000
+ temp1_crit: 70.000
+ temp1_lcrit: -40.000
+ temp1_lowest: 20.000
+ temp1_highest: 36.000
+
+Fix Kconfig by referring to the true name of the module.
+
+Fixes: 5b46903d8bf3 ("hwmon: Driver for disk and solid state drives with temperature sensors")
+Signed-off-by: Ann T Ropea <bedhanger@gmx.de>
+Link: https://lore.kernel.org/r/20200406235521.185309-1-bedhanger@gmx.de
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hwmon/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/hwmon/Kconfig
++++ b/drivers/hwmon/Kconfig
+@@ -403,7 +403,7 @@ config SENSORS_DRIVETEMP
+ hard disk drives.
+
+ This driver can also be built as a module. If so, the module
+- will be called satatemp.
++ will be called drivetemp.
+
+ config SENSORS_DS620
+ tristate "Dallas Semiconductor DS620"
--- /dev/null
+From edb2c9dd3948738ef030c32b948543e84f4d3f81 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <wsa+renesas@sang-engineering.com>
+Date: Fri, 27 Mar 2020 23:28:26 +0100
+Subject: i2c: altera: use proper variable to hold errno
+
+From: Wolfram Sang <wsa+renesas@sang-engineering.com>
+
+commit edb2c9dd3948738ef030c32b948543e84f4d3f81 upstream.
+
+device_property_read_u32() returns errno or 0, so we should use the
+integer variable 'ret' and not the u32 'val' to hold the retval.
+
+Fixes: 0560ad576268 ("i2c: altera: Add Altera I2C Controller driver")
+Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
+Reviewed-by: Thor Thayer <thor.thayer@linux.intel.com>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/i2c/busses/i2c-altera.c | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+--- a/drivers/i2c/busses/i2c-altera.c
++++ b/drivers/i2c/busses/i2c-altera.c
+@@ -384,7 +384,6 @@ static int altr_i2c_probe(struct platfor
+ struct altr_i2c_dev *idev = NULL;
+ struct resource *res;
+ int irq, ret;
+- u32 val;
+
+ idev = devm_kzalloc(&pdev->dev, sizeof(*idev), GFP_KERNEL);
+ if (!idev)
+@@ -411,17 +410,17 @@ static int altr_i2c_probe(struct platfor
+ init_completion(&idev->msg_complete);
+ spin_lock_init(&idev->lock);
+
+- val = device_property_read_u32(idev->dev, "fifo-size",
++ ret = device_property_read_u32(idev->dev, "fifo-size",
+ &idev->fifo_size);
+- if (val) {
++ if (ret) {
+ dev_err(&pdev->dev, "FIFO size set to default of %d\n",
+ ALTR_I2C_DFLT_FIFO_SZ);
+ idev->fifo_size = ALTR_I2C_DFLT_FIFO_SZ;
+ }
+
+- val = device_property_read_u32(idev->dev, "clock-frequency",
++ ret = device_property_read_u32(idev->dev, "clock-frequency",
+ &idev->bus_clk_rate);
+- if (val) {
++ if (ret) {
+ dev_err(&pdev->dev, "Default to 100kHz\n");
+ idev->bus_clk_rate = 100000; /* default clock rate */
+ }
--- /dev/null
+From c799fca8baf18d1bbbbad6c3b736eefbde8bdb90 Mon Sep 17 00:00:00 2001
+From: Jason Gunthorpe <jgg@ziepe.ca>
+Date: Tue, 14 Apr 2020 12:27:08 -0300
+Subject: net/cxgb4: Check the return from t4_query_params properly
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Jason Gunthorpe <jgg@mellanox.com>
+
+commit c799fca8baf18d1bbbbad6c3b736eefbde8bdb90 upstream.
+
+Positive return values are also failures that don't set val,
+although this probably can't happen. Fixes gcc 10 warning:
+
+drivers/net/ethernet/chelsio/cxgb4/t4_hw.c: In function ‘t4_phy_fw_ver’:
+drivers/net/ethernet/chelsio/cxgb4/t4_hw.c:3747:14: warning: ‘val’ may be used uninitialized in this function [-Wmaybe-uninitialized]
+ 3747 | *phy_fw_ver = val;
+
+Fixes: 01b6961410b7 ("cxgb4: Add PHY firmware support for T420-BT cards")
+Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+@@ -3748,7 +3748,7 @@ int t4_phy_fw_ver(struct adapter *adap,
+ FW_PARAMS_PARAM_Z_V(FW_PARAMS_PARAM_DEV_PHYFW_VERSION));
+ ret = t4_query_params(adap, adap->mbox, adap->pf, 0, 1,
+ ¶m, &val);
+- if (ret < 0)
++ if (ret)
+ return ret;
+ *phy_fw_ver = val;
+ return 0;
--- /dev/null
+From ef516e8625ddea90b3a0313f3a0b0baa83db7ac2 Mon Sep 17 00:00:00 2001
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+Date: Tue, 7 Apr 2020 14:10:38 +0200
+Subject: netfilter: nf_tables: reintroduce the NFT_SET_CONCAT flag
+
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+
+commit ef516e8625ddea90b3a0313f3a0b0baa83db7ac2 upstream.
+
+Stefano originally proposed to introduce this flag, users hit EOPNOTSUPP
+in new binaries with old kernels when defining a set with ranges in
+a concatenation.
+
+Fixes: f3a2181e16f1 ("netfilter: nf_tables: Support for sets with multiple ranged fields")
+Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ include/uapi/linux/netfilter/nf_tables.h | 2 ++
+ net/netfilter/nf_tables_api.c | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+--- a/include/uapi/linux/netfilter/nf_tables.h
++++ b/include/uapi/linux/netfilter/nf_tables.h
+@@ -276,6 +276,7 @@ enum nft_rule_compat_attributes {
+ * @NFT_SET_TIMEOUT: set uses timeouts
+ * @NFT_SET_EVAL: set can be updated from the evaluation path
+ * @NFT_SET_OBJECT: set contains stateful objects
++ * @NFT_SET_CONCAT: set contains a concatenation
+ */
+ enum nft_set_flags {
+ NFT_SET_ANONYMOUS = 0x1,
+@@ -285,6 +286,7 @@ enum nft_set_flags {
+ NFT_SET_TIMEOUT = 0x10,
+ NFT_SET_EVAL = 0x20,
+ NFT_SET_OBJECT = 0x40,
++ NFT_SET_CONCAT = 0x80,
+ };
+
+ /**
+--- a/net/netfilter/nf_tables_api.c
++++ b/net/netfilter/nf_tables_api.c
+@@ -3949,7 +3949,7 @@ static int nf_tables_newset(struct net *
+ if (flags & ~(NFT_SET_ANONYMOUS | NFT_SET_CONSTANT |
+ NFT_SET_INTERVAL | NFT_SET_TIMEOUT |
+ NFT_SET_MAP | NFT_SET_EVAL |
+- NFT_SET_OBJECT))
++ NFT_SET_OBJECT | NFT_SET_CONCAT))
+ return -EOPNOTSUPP;
+ /* Only one of these operations is supported */
+ if ((flags & (NFT_SET_MAP | NFT_SET_OBJECT)) ==
--- /dev/null
+From 7dc7c41607d192ff660ba4ea82d517745c1d7523 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 8 Apr 2020 20:53:51 +0200
+Subject: rtw88: avoid unused function warnings
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 7dc7c41607d192ff660ba4ea82d517745c1d7523 upstream.
+
+The rtw88 driver defines emtpy functions with multiple indirections
+but gets one of these wrong:
+
+drivers/net/wireless/realtek/rtw88/pci.c:1347:12: error: 'rtw_pci_resume' defined but not used [-Werror=unused-function]
+ 1347 | static int rtw_pci_resume(struct device *dev)
+ | ^~~~~~~~~~~~~~
+drivers/net/wireless/realtek/rtw88/pci.c:1342:12: error: 'rtw_pci_suspend' defined but not used [-Werror=unused-function]
+ 1342 | static int rtw_pci_suspend(struct device *dev)
+
+Better simplify it to rely on the conditional reference in
+SIMPLE_DEV_PM_OPS(), and mark the functions as __maybe_unused to avoid
+warning about it.
+
+I'm not sure if these are needed at all given that the functions
+don't do anything, but they were only recently added.
+
+Fixes: 44bc17f7f5b3 ("rtw88: support wowlan feature for 8822c")
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Link: https://lore.kernel.org/r/20200408185413.218643-1-arnd@arndb.de
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/realtek/rtw88/pci.c | 11 +++--------
+ 1 file changed, 3 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/realtek/rtw88/pci.c
++++ b/drivers/net/wireless/realtek/rtw88/pci.c
+@@ -1287,22 +1287,17 @@ static void rtw_pci_phy_cfg(struct rtw_d
+ rtw_pci_link_cfg(rtwdev);
+ }
+
+-#ifdef CONFIG_PM
+-static int rtw_pci_suspend(struct device *dev)
++static int __maybe_unused rtw_pci_suspend(struct device *dev)
+ {
+ return 0;
+ }
+
+-static int rtw_pci_resume(struct device *dev)
++static int __maybe_unused rtw_pci_resume(struct device *dev)
+ {
+ return 0;
+ }
+
+ static SIMPLE_DEV_PM_OPS(rtw_pm_ops, rtw_pci_suspend, rtw_pci_resume);
+-#define RTW_PM_OPS (&rtw_pm_ops)
+-#else
+-#define RTW_PM_OPS NULL
+-#endif
+
+ static int rtw_pci_claim(struct rtw_dev *rtwdev, struct pci_dev *pdev)
+ {
+@@ -1530,7 +1525,7 @@ static struct pci_driver rtw_pci_driver
+ .id_table = rtw_pci_id_table,
+ .probe = rtw_pci_probe,
+ .remove = rtw_pci_remove,
+- .driver.pm = RTW_PM_OPS,
++ .driver.pm = &rtw_pm_ops,
+ };
+ module_pci_driver(rtw_pci_driver);
+
--- /dev/null
+From 0e631eee17dcea576ab922fa70e4fdbd596ee452 Mon Sep 17 00:00:00 2001
+From: David Howells <dhowells@redhat.com>
+Date: Mon, 13 Apr 2020 13:57:14 +0100
+Subject: rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket
+
+From: David Howells <dhowells@redhat.com>
+
+commit 0e631eee17dcea576ab922fa70e4fdbd596ee452 upstream.
+
+Fix the DATA packet transmission to disable nofrag for UDPv4 on an AF_INET6
+socket as well as UDPv6 when trying to transmit fragmentably.
+
+Without this, packets filled to the normal size used by the kernel AFS
+client of 1412 bytes be rejected by udp_sendmsg() with EMSGSIZE
+immediately. The ->sk_error_report() notification hook is called, but
+rxrpc doesn't generate a trace for it.
+
+This is a temporary fix; a more permanent solution needs to involve
+changing the size of the packets being filled in accordance with the MTU,
+which isn't currently done in AF_RXRPC. The reason for not doing so was
+that, barring the last packet in an rx jumbo packet, jumbos can only be
+assembled out of 1412-byte packets - and the plan was to construct jumbos
+on the fly at transmission time.
+
+Also, there's no point turning on IPV6_MTU_DISCOVER, since IPv6 has to
+engage in this anyway since fragmentation is only done by the sender. We
+can then condense the switch-statement in rxrpc_send_data_packet().
+
+Fixes: 75b54cb57ca3 ("rxrpc: Add IPv6 support")
+Signed-off-by: David Howells <dhowells@redhat.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/rxrpc/local_object.c | 9 ---------
+ net/rxrpc/output.c | 42 +++++++++++-------------------------------
+ 2 files changed, 11 insertions(+), 40 deletions(-)
+
+--- a/net/rxrpc/local_object.c
++++ b/net/rxrpc/local_object.c
+@@ -165,15 +165,6 @@ static int rxrpc_open_socket(struct rxrp
+ goto error;
+ }
+
+- /* we want to set the don't fragment bit */
+- opt = IPV6_PMTUDISC_DO;
+- ret = kernel_setsockopt(local->socket, SOL_IPV6, IPV6_MTU_DISCOVER,
+- (char *) &opt, sizeof(opt));
+- if (ret < 0) {
+- _debug("setsockopt failed");
+- goto error;
+- }
+-
+ /* Fall through and set IPv4 options too otherwise we don't get
+ * errors from IPv4 packets sent through the IPv6 socket.
+ */
+--- a/net/rxrpc/output.c
++++ b/net/rxrpc/output.c
+@@ -474,41 +474,21 @@ send_fragmentable:
+ skb->tstamp = ktime_get_real();
+
+ switch (conn->params.local->srx.transport.family) {
++ case AF_INET6:
+ case AF_INET:
+ opt = IP_PMTUDISC_DONT;
+- ret = kernel_setsockopt(conn->params.local->socket,
+- SOL_IP, IP_MTU_DISCOVER,
+- (char *)&opt, sizeof(opt));
+- if (ret == 0) {
+- ret = kernel_sendmsg(conn->params.local->socket, &msg,
+- iov, 2, len);
+- conn->params.peer->last_tx_at = ktime_get_seconds();
+-
+- opt = IP_PMTUDISC_DO;
+- kernel_setsockopt(conn->params.local->socket, SOL_IP,
+- IP_MTU_DISCOVER,
+- (char *)&opt, sizeof(opt));
+- }
+- break;
+-
+-#ifdef CONFIG_AF_RXRPC_IPV6
+- case AF_INET6:
+- opt = IPV6_PMTUDISC_DONT;
+- ret = kernel_setsockopt(conn->params.local->socket,
+- SOL_IPV6, IPV6_MTU_DISCOVER,
+- (char *)&opt, sizeof(opt));
+- if (ret == 0) {
+- ret = kernel_sendmsg(conn->params.local->socket, &msg,
+- iov, 2, len);
+- conn->params.peer->last_tx_at = ktime_get_seconds();
++ kernel_setsockopt(conn->params.local->socket,
++ SOL_IP, IP_MTU_DISCOVER,
++ (char *)&opt, sizeof(opt));
++ ret = kernel_sendmsg(conn->params.local->socket, &msg,
++ iov, 2, len);
++ conn->params.peer->last_tx_at = ktime_get_seconds();
+
+- opt = IPV6_PMTUDISC_DO;
+- kernel_setsockopt(conn->params.local->socket,
+- SOL_IPV6, IPV6_MTU_DISCOVER,
+- (char *)&opt, sizeof(opt));
+- }
++ opt = IP_PMTUDISC_DO;
++ kernel_setsockopt(conn->params.local->socket,
++ SOL_IP, IP_MTU_DISCOVER,
++ (char *)&opt, sizeof(opt));
+ break;
+-#endif
+
+ default:
+ BUG();
nfsd-memory-corruption-in-nfsd4_lock.patch
arm-dts-omap3-disable-rng-on-n950-n9.patch
bpf-forbid-xadd-on-spilled-pointers-for-unprivileged-users.patch
+brcmfmac-add-stub-for-monitor-interface-xmit.patch
+i2c-altera-use-proper-variable-to-hold-errno.patch
+hwmon-drivetemp-use-drivetemp-s-true-module-name-in-kconfig-section.patch
+clk-asm9260-fix-__clk_hw_register_fixed_rate_with_accuracy-typo.patch
+rtw88-avoid-unused-function-warnings.patch
+hwmon-drivetemp-return-enodata-for-invalid-temperatures.patch
+rxrpc-fix-data-tx-to-disable-nofrag-for-udp-on-af_inet6-socket.patch
+netfilter-nf_tables-reintroduce-the-nft_set_concat-flag.patch
+efi-x86-don-t-remap-text-rodata-gap-read-only-for-mixed-mode.patch
+net-cxgb4-check-the-return-from-t4_query_params-properly.patch
+tipc-fix-incorrect-increasing-of-link-window.patch
+xfs-acquire-superblock-freeze-protection-on-eofblocks-scans.patch
--- /dev/null
+From edadedf1c5b4e4404192a0a4c3c0c05e3b7672ab Mon Sep 17 00:00:00 2001
+From: Tuong Lien <tuong.t.lien@dektech.com.au>
+Date: Wed, 15 Apr 2020 18:34:49 +0700
+Subject: tipc: fix incorrect increasing of link window
+
+From: Tuong Lien <tuong.t.lien@dektech.com.au>
+
+commit edadedf1c5b4e4404192a0a4c3c0c05e3b7672ab upstream.
+
+In commit 16ad3f4022bb ("tipc: introduce variable window congestion
+control"), we allow link window to change with the congestion avoidance
+algorithm. However, there is a bug that during the slow-start if packet
+retransmission occurs, the link will enter the fast-recovery phase, set
+its window to the 'ssthresh' which is never less than 300, so the link
+window suddenly increases to that limit instead of decreasing.
+
+Consequently, two issues have been observed:
+
+- For broadcast-link: it can leave a gap between the link queues that a
+new packet will be inserted and sent before the previous ones, i.e. not
+in-order.
+
+- For unicast: the algorithm does not work as expected, the link window
+jumps to the slow-start threshold whereas packet retransmission occurs.
+
+This commit fixes the issues by avoiding such the link window increase,
+but still decreasing if the 'ssthresh' is lowered.
+
+Fixes: 16ad3f4022bb ("tipc: introduce variable window congestion control")
+Acked-by: Jon Maloy <jmaloy@redhat.com>
+Signed-off-by: Tuong Lien <tuong.t.lien@dektech.com.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/tipc/link.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/tipc/link.c
++++ b/net/tipc/link.c
+@@ -1065,7 +1065,7 @@ static void tipc_link_update_cwin(struct
+ /* Enter fast recovery */
+ if (unlikely(retransmitted)) {
+ l->ssthresh = max_t(u16, l->window / 2, 300);
+- l->window = l->ssthresh;
++ l->window = min_t(u16, l->ssthresh, l->window);
+ return;
+ }
+ /* Enter slow start */
--- /dev/null
+From 4b674b9ac852937af1f8c62f730c325fb6eadcdb Mon Sep 17 00:00:00 2001
+From: Brian Foster <bfoster@redhat.com>
+Date: Sun, 12 Apr 2020 13:11:10 -0700
+Subject: xfs: acquire superblock freeze protection on eofblocks scans
+
+From: Brian Foster <bfoster@redhat.com>
+
+commit 4b674b9ac852937af1f8c62f730c325fb6eadcdb upstream.
+
+The filesystem freeze sequence in XFS waits on any background
+eofblocks or cowblocks scans to complete before the filesystem is
+quiesced. At this point, the freezer has already stopped the
+transaction subsystem, however, which means a truncate or cowblock
+cancellation in progress is likely blocked in transaction
+allocation. This results in a deadlock between freeze and the
+associated scanner.
+
+Fix this problem by holding superblock write protection across calls
+into the block reapers. Since protection for background scans is
+acquired from the workqueue task context, trylock to avoid a similar
+deadlock between freeze and blocking on the write lock.
+
+Fixes: d6b636ebb1c9f ("xfs: halt auto-reclamation activities while rebuilding rmap")
+Reported-by: Paul Furtado <paulfurtado91@gmail.com>
+Signed-off-by: Brian Foster <bfoster@redhat.com>
+Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Reviewed-by: Allison Collins <allison.henderson@oracle.com>
+Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
+Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/xfs/xfs_icache.c | 10 ++++++++++
+ fs/xfs/xfs_ioctl.c | 5 ++++-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+--- a/fs/xfs/xfs_icache.c
++++ b/fs/xfs/xfs_icache.c
+@@ -907,7 +907,12 @@ xfs_eofblocks_worker(
+ {
+ struct xfs_mount *mp = container_of(to_delayed_work(work),
+ struct xfs_mount, m_eofblocks_work);
++
++ if (!sb_start_write_trylock(mp->m_super))
++ return;
+ xfs_icache_free_eofblocks(mp, NULL);
++ sb_end_write(mp->m_super);
++
+ xfs_queue_eofblocks(mp);
+ }
+
+@@ -934,7 +939,12 @@ xfs_cowblocks_worker(
+ {
+ struct xfs_mount *mp = container_of(to_delayed_work(work),
+ struct xfs_mount, m_cowblocks_work);
++
++ if (!sb_start_write_trylock(mp->m_super))
++ return;
+ xfs_icache_free_cowblocks(mp, NULL);
++ sb_end_write(mp->m_super);
++
+ xfs_queue_cowblocks(mp);
+ }
+
+--- a/fs/xfs/xfs_ioctl.c
++++ b/fs/xfs/xfs_ioctl.c
+@@ -2264,7 +2264,10 @@ xfs_file_ioctl(
+ if (error)
+ return error;
+
+- return xfs_icache_free_eofblocks(mp, &keofb);
++ sb_start_write(mp->m_super);
++ error = xfs_icache_free_eofblocks(mp, &keofb);
++ sb_end_write(mp->m_super);
++ return error;
+ }
+
+ default: