From: Greg Kroah-Hartman Date: Thu, 30 Apr 2020 14:46:26 +0000 (+0200) Subject: 5.6-stable patches X-Git-Tag: v5.4.37~37 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e455b9ff58a38f6d4670b80732441fd7fe5d67d9;p=thirdparty%2Fkernel%2Fstable-queue.git 5.6-stable patches added patches: brcmfmac-add-stub-for-monitor-interface-xmit.patch clk-asm9260-fix-__clk_hw_register_fixed_rate_with_accuracy-typo.patch efi-x86-don-t-remap-text-rodata-gap-read-only-for-mixed-mode.patch hwmon-drivetemp-return-enodata-for-invalid-temperatures.patch hwmon-drivetemp-use-drivetemp-s-true-module-name-in-kconfig-section.patch i2c-altera-use-proper-variable-to-hold-errno.patch net-cxgb4-check-the-return-from-t4_query_params-properly.patch netfilter-nf_tables-reintroduce-the-nft_set_concat-flag.patch rtw88-avoid-unused-function-warnings.patch rxrpc-fix-data-tx-to-disable-nofrag-for-udp-on-af_inet6-socket.patch tipc-fix-incorrect-increasing-of-link-window.patch xfs-acquire-superblock-freeze-protection-on-eofblocks-scans.patch --- diff --git a/queue-5.6/brcmfmac-add-stub-for-monitor-interface-xmit.patch b/queue-5.6/brcmfmac-add-stub-for-monitor-interface-xmit.patch new file mode 100644 index 00000000000..49408d443af --- /dev/null +++ b/queue-5.6/brcmfmac-add-stub-for-monitor-interface-xmit.patch @@ -0,0 +1,109 @@ +From 5bf8e6096c7390f8f2c4d5394b5e49823adb004e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +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 + +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 : [] 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] [] (dev_hard_start_xmit) from [] (sch_direct_xmit+0xe4/0x2bc) +[ 341.637106] [] (sch_direct_xmit) from [] (__dev_queue_xmit+0x6a4/0x72c) +[ 341.645481] [] (__dev_queue_xmit) from [] (ip6_finish_output2+0x18c/0x434) +[ 341.654112] [] (ip6_finish_output2) from [] (ip6_output+0x5c/0xd0) +[ 341.662053] [] (ip6_output) from [] (mld_sendpack+0x1a0/0x1a8) +[ 341.669640] [] (mld_sendpack) from [] (mld_ifc_timer_expire+0x1cc/0x2e4) +[ 341.678111] [] (mld_ifc_timer_expire) from [] (call_timer_fn.constprop.3+0x24/0x98) +[ 341.687527] [] (call_timer_fn.constprop.3) from [] (run_timer_softirq+0x1a8/0x1e4) +[ 341.696860] [] (run_timer_softirq) from [] (__do_softirq+0x120/0x2b0) +[ 341.705066] [] (__do_softirq) from [] (irq_exit+0x78/0x84) +[ 341.712317] [] (irq_exit) from [] (__handle_domain_irq+0x60/0xb4) +[ 341.720179] [] (__handle_domain_irq) from [] (gic_handle_irq+0x4c/0x90) +[ 341.728549] [] (gic_handle_irq) from [] (__irq_svc+0x6c/0x90) + +Fixes: 20f2c5fa3af0 ("brcmfmac: add initial support for monitor mode") +Signed-off-by: Rafał Miłecki +Signed-off-by: Kalle Valo +Link: https://lore.kernel.org/r/20200327130307.26477-1-zajec5@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + 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) diff --git a/queue-5.6/clk-asm9260-fix-__clk_hw_register_fixed_rate_with_accuracy-typo.patch b/queue-5.6/clk-asm9260-fix-__clk_hw_register_fixed_rate_with_accuracy-typo.patch new file mode 100644 index 00000000000..cdcec4d94bc --- /dev/null +++ b/queue-5.6/clk-asm9260-fix-__clk_hw_register_fixed_rate_with_accuracy-typo.patch @@ -0,0 +1,45 @@ +From 924ed1f5c181132897c5928af7f3afd28792889c Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Wed, 8 Apr 2020 17:53:43 +0200 +Subject: clk: asm9260: fix __clk_hw_register_fixed_rate_with_accuracy typo + +From: Arnd Bergmann + +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 +Link: https://lkml.kernel.org/r/20200408155402.2138446-1-arnd@arndb.de +Signed-off-by: Stephen Boyd +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + diff --git a/queue-5.6/efi-x86-don-t-remap-text-rodata-gap-read-only-for-mixed-mode.patch b/queue-5.6/efi-x86-don-t-remap-text-rodata-gap-read-only-for-mixed-mode.patch new file mode 100644 index 00000000000..d18a3e47ccc --- /dev/null +++ b/queue-5.6/efi-x86-don-t-remap-text-rodata-gap-read-only-for-mixed-mode.patch @@ -0,0 +1,100 @@ +From f6103162008dfd37567f240b50e5e1ea7cf2e00c Mon Sep 17 00:00:00 2001 +From: Ard Biesheuvel +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 + +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 +Tested-by: Jiri Slaby +Signed-off-by: Ard Biesheuvel +Signed-off-by: Ingo Molnar +Link: https://lore.kernel.org/r/20200409130434.6736-10-ardb@kernel.org +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + } + diff --git a/queue-5.6/hwmon-drivetemp-return-enodata-for-invalid-temperatures.patch b/queue-5.6/hwmon-drivetemp-return-enodata-for-invalid-temperatures.patch new file mode 100644 index 00000000000..3f798e26961 --- /dev/null +++ b/queue-5.6/hwmon-drivetemp-return-enodata-for-invalid-temperatures.patch @@ -0,0 +1,47 @@ +From ed08ebb7124e90a99420bb913d602907d377d03d Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +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 + +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 +Cc: Holger Hoffstätte +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + 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: diff --git a/queue-5.6/hwmon-drivetemp-use-drivetemp-s-true-module-name-in-kconfig-section.patch b/queue-5.6/hwmon-drivetemp-use-drivetemp-s-true-module-name-in-kconfig-section.patch new file mode 100644 index 00000000000..6ec2ef8c770 --- /dev/null +++ b/queue-5.6/hwmon-drivetemp-use-drivetemp-s-true-module-name-in-kconfig-section.patch @@ -0,0 +1,65 @@ +From 6bdf8f3efe867c5893e27431a555e41f54ed7f9a Mon Sep 17 00:00:00 2001 +From: Ann T Ropea +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 + +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 +Link: https://lore.kernel.org/r/20200406235521.185309-1-bedhanger@gmx.de +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + 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" diff --git a/queue-5.6/i2c-altera-use-proper-variable-to-hold-errno.patch b/queue-5.6/i2c-altera-use-proper-variable-to-hold-errno.patch new file mode 100644 index 00000000000..47e38275ae3 --- /dev/null +++ b/queue-5.6/i2c-altera-use-proper-variable-to-hold-errno.patch @@ -0,0 +1,54 @@ +From edb2c9dd3948738ef030c32b948543e84f4d3f81 Mon Sep 17 00:00:00 2001 +From: Wolfram Sang +Date: Fri, 27 Mar 2020 23:28:26 +0100 +Subject: i2c: altera: use proper variable to hold errno + +From: Wolfram Sang + +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 +Reviewed-by: Thor Thayer +Signed-off-by: Wolfram Sang +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ + } diff --git a/queue-5.6/net-cxgb4-check-the-return-from-t4_query_params-properly.patch b/queue-5.6/net-cxgb4-check-the-return-from-t4_query_params-properly.patch new file mode 100644 index 00000000000..8a0deabcf34 --- /dev/null +++ b/queue-5.6/net-cxgb4-check-the-return-from-t4_query_params-properly.patch @@ -0,0 +1,39 @@ +From c799fca8baf18d1bbbbad6c3b736eefbde8bdb90 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +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 + +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 +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-5.6/netfilter-nf_tables-reintroduce-the-nft_set_concat-flag.patch b/queue-5.6/netfilter-nf_tables-reintroduce-the-nft_set_concat-flag.patch new file mode 100644 index 00000000000..67db085668b --- /dev/null +++ b/queue-5.6/netfilter-nf_tables-reintroduce-the-nft_set_concat-flag.patch @@ -0,0 +1,52 @@ +From ef516e8625ddea90b3a0313f3a0b0baa83db7ac2 Mon Sep 17 00:00:00 2001 +From: Pablo Neira Ayuso +Date: Tue, 7 Apr 2020 14:10:38 +0200 +Subject: netfilter: nf_tables: reintroduce the NFT_SET_CONCAT flag + +From: Pablo Neira Ayuso + +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 +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Greg Kroah-Hartman + +--- + 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)) == diff --git a/queue-5.6/rtw88-avoid-unused-function-warnings.patch b/queue-5.6/rtw88-avoid-unused-function-warnings.patch new file mode 100644 index 00000000000..0b68bcb37ff --- /dev/null +++ b/queue-5.6/rtw88-avoid-unused-function-warnings.patch @@ -0,0 +1,71 @@ +From 7dc7c41607d192ff660ba4ea82d517745c1d7523 Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Wed, 8 Apr 2020 20:53:51 +0200 +Subject: rtw88: avoid unused function warnings + +From: Arnd Bergmann + +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 +Signed-off-by: Kalle Valo +Link: https://lore.kernel.org/r/20200408185413.218643-1-arnd@arndb.de +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + diff --git a/queue-5.6/rxrpc-fix-data-tx-to-disable-nofrag-for-udp-on-af_inet6-socket.patch b/queue-5.6/rxrpc-fix-data-tx-to-disable-nofrag-for-udp-on-af_inet6-socket.patch new file mode 100644 index 00000000000..a81928e7b02 --- /dev/null +++ b/queue-5.6/rxrpc-fix-data-tx-to-disable-nofrag-for-udp-on-af_inet6-socket.patch @@ -0,0 +1,111 @@ +From 0e631eee17dcea576ab922fa70e4fdbd596ee452 Mon Sep 17 00:00:00 2001 +From: David Howells +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 + +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 +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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(); diff --git a/queue-5.6/series b/queue-5.6/series index 9718f2fdf90..440c9d6784c 100644 --- a/queue-5.6/series +++ b/queue-5.6/series @@ -24,3 +24,15 @@ drivers-soc-xilinx-fix-firmware-driver-kconfig-dependency.patch 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 diff --git a/queue-5.6/tipc-fix-incorrect-increasing-of-link-window.patch b/queue-5.6/tipc-fix-incorrect-increasing-of-link-window.patch new file mode 100644 index 00000000000..2f964cc56a2 --- /dev/null +++ b/queue-5.6/tipc-fix-incorrect-increasing-of-link-window.patch @@ -0,0 +1,49 @@ +From edadedf1c5b4e4404192a0a4c3c0c05e3b7672ab Mon Sep 17 00:00:00 2001 +From: Tuong Lien +Date: Wed, 15 Apr 2020 18:34:49 +0700 +Subject: tipc: fix incorrect increasing of link window + +From: Tuong Lien + +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 +Signed-off-by: Tuong Lien +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ diff --git a/queue-5.6/xfs-acquire-superblock-freeze-protection-on-eofblocks-scans.patch b/queue-5.6/xfs-acquire-superblock-freeze-protection-on-eofblocks-scans.patch new file mode 100644 index 00000000000..81372e34bfd --- /dev/null +++ b/queue-5.6/xfs-acquire-superblock-freeze-protection-on-eofblocks-scans.patch @@ -0,0 +1,79 @@ +From 4b674b9ac852937af1f8c62f730c325fb6eadcdb Mon Sep 17 00:00:00 2001 +From: Brian Foster +Date: Sun, 12 Apr 2020 13:11:10 -0700 +Subject: xfs: acquire superblock freeze protection on eofblocks scans + +From: Brian Foster + +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 +Signed-off-by: Brian Foster +Reviewed-by: Chandan Rajendra +Reviewed-by: Christoph Hellwig +Reviewed-by: Allison Collins +Reviewed-by: Darrick J. Wong +Signed-off-by: Darrick J. Wong +Signed-off-by: Greg Kroah-Hartman + +--- + 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: