History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

The new route handling in ip_mc_finish_output() from 'net' overlapped with the new support for returning congestion notifications from BPF programs. In order to handle this I had to take the dev_loopback_xmit() calls out of the switch statement. The aquantia driver conflicts were simple overlapping changes.

David S. Miller committed 7 years ago

Commit d96ff262 parents 3a49584 556e2f6101 files · +719 −276Browse files

Unified · Split

101 files
  1. MAINTAINERS +2 −0
  2. Makefile +1 −1
  3. arch/arm/boot/dts/gemini-dlink-dir-685.dts +1 −1
  4. arch/arm/boot/dts/gemini-dlink-dns-313.dts +1 −1
  5. arch/arm/boot/dts/imx6ul.dtsi +4 −4
  6. arch/arm/boot/dts/meson8.dtsi +2 −3
  7. arch/arm/boot/dts/meson8b.dtsi +5 −6
  8. arch/arm/mach-omap2/prm3xxx.c +1 −1
  9. arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +9 −9
  10. arch/arm64/configs/defconfig +1 −0
  11. arch/csky/kernel/signal.c +5 −0
  12. arch/parisc/kernel/module.c +4 −0
  13. arch/powerpc/include/asm/page.h +7 −0
  14. arch/powerpc/kernel/head_32.S +1 −0
  15. arch/powerpc/kernel/head_booke.h +5 −5
  16. arch/powerpc/kernel/head_fsl_booke.S +1 −1
  17. arch/powerpc/kvm/book3s_hv_builtin.c +1 −0
  18. arch/powerpc/kvm/book3s_hv_rmhandlers.S +13 −2
  19. arch/powerpc/mm/book3s64/mmu_context.c +47 −8
  20. arch/powerpc/mm/mem.c +2 −1
  21. arch/powerpc/platforms/powermac/Kconfig +1 −0
  22. drivers/auxdisplay/cfag12864bfb.c +3 −2
  23. drivers/auxdisplay/ht16k33.c +2 −2
  24. drivers/clk/clk.c +1 −1
  25. drivers/clk/meson/g12a.c +2 −2
  26. drivers/clk/meson/g12a.h +1 −1
  27. drivers/clk/meson/meson8b.c +5 −5
  28. drivers/clk/socfpga/clk-s10.c +2 −2
  29. drivers/clk/tegra/clk-tegra210.c +2 −0
  30. drivers/clk/ti/clkctrl.c +5 −2
  31. drivers/hid/hid-ids.h +3 −0
  32. drivers/hid/hid-logitech-dj.c +3 −1
  33. drivers/hid/hid-multitouch.c +4 −0
  34. drivers/hid/hid-quirks.c +1 −0
  35. drivers/hid/hid-uclogic-core.c +2 −0
  36. drivers/hid/hid-uclogic-params.c +2 −0
  37. drivers/hid/intel-ish-hid/ishtp-fw-loader.c +1 −1
  38. drivers/hid/intel-ish-hid/ishtp-hid-client.c +2 −2
  39. drivers/hid/intel-ish-hid/ishtp/bus.c +14 −1
  40. drivers/iommu/intel-iommu.c +3 −4
  41. drivers/md/dm-init.c +5 −5
  42. drivers/md/dm-log-writes.c +21 −2
  43. drivers/md/dm-table.c +1 −1
  44. drivers/md/dm-verity-target.c +2 −2
  45. drivers/mfd/stmfx.c +6 −6
  46. drivers/mtd/nand/raw/nand_base.c +2 −1
  47. drivers/mtd/spi-nor/spi-nor.c +108 −11
  48. drivers/net/bonding/bond_main.c +1 −1
  49. drivers/net/dsa/microchip/ksz_common.c +3 −3
  50. drivers/net/ethernet/aquantia/atlantic/aq_filters.c +8 −2
  51. drivers/net/ethernet/aquantia/atlantic/aq_nic.c +1 −0
  52. drivers/net/ethernet/aquantia/atlantic/aq_nic.h +1 −0
  53. drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c +13 −6
  54. drivers/net/ethernet/cadence/macb_main.c +1 −1
  55. drivers/net/ethernet/emulex/benet/be_ethtool.c +22 −6
  56. drivers/net/ethernet/sis/sis900.c +8 −8
  57. drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c +1 −1
  58. drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 −8
  59. drivers/net/ppp/ppp_mppe.c +1 −0
  60. drivers/net/team/team.c +1 −1
  61. drivers/net/usb/qmi_wwan.c +1 −1
  62. drivers/net/vrf.c +1 −1
  63. drivers/pci/p2pdma.c +4 −0
  64. drivers/scsi/qedi/qedi_main.c +3 −0
  65. drivers/scsi/qedi/qedi_version.h +3 −3
  66. drivers/scsi/qla2xxx/qla_os.c +1 −1
  67. drivers/scsi/ufs/ufshcd-pltfrm.c +4 −7
  68. fs/afs/callback.c +2 −2
  69. fs/afs/inode.c +19 −12
  70. fs/afs/internal.h +3 −5
  71. fs/afs/volume.c +1 −0
  72. fs/proc/base.c +1 −2
  73. include/dt-bindings/clock/g12a-clkc.h +1 −1
  74. include/linux/intel-ish-client-if.h +1 −0
  75. include/linux/mtd/spi-nor.h +3 −0
  76. include/net/ip6_route.h +2 −2
  77. include/net/route.h +1 −0
  78. include/net/tls.h +0 −15
  79. kernel/fork.c +18 −40
  80. net/bluetooth/6lowpan.c +2 −2
  81. net/bluetooth/hci_conn.c +9 −9
  82. net/bluetooth/l2cap_core.c +28 −5
  83. net/ipv4/ip_output.c +21 −4
  84. net/ipv4/raw.c +1 −1
  85. net/ipv4/route.c +33 −0
  86. net/ipv6/ip6_output.c +1 −1
  87. net/ipv6/route.c +3 −2
  88. net/netfilter/nf_flow_table_ip.c +1 −1
  89. net/packet/af_packet.c +19 −4
  90. net/packet/internal.h +1 −0
  91. net/sched/sch_cbs.c +7 −2
  92. net/sctp/endpointola.c +4 −4
  93. net/smc/af_smc.c +4 −1
  94. net/smc/smc_core.c +3 −0
  95. net/tipc/core.c +6 −6
  96. net/tipc/netlink_compat.c +15 −3
  97. net/tls/tls_main.c +2 −1
  98. samples/pidfd/pidfd-metadata.c +6 −2
  99. tools/testing/selftests/powerpc/mm/.gitignore +2 −1
  100. tools/testing/selftests/powerpc/mm/Makefile +3 −1
  101. tools/testing/selftests/powerpc/mm/large_vm_fork_separation.c +87 −0
MAINTAINERS+2−0
@@ -3131,6 +3131,7 @@ F: arch/arm/mach-bcm/ · 3130 unmodified lines
3131BROADCOM BCM2835 ARM ARCHITECTURE3131BROADCOM BCM2835 ARM ARCHITECTURE
3132M: Eric Anholt <eric@anholt.net>3132M: Eric Anholt <eric@anholt.net>
3133M: Stefan Wahren <wahrenst@gmx.net>3133M: Stefan Wahren <wahrenst@gmx.net>
3134L: bcm-kernel-feedback-list@broadcom.com
3134L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)3135L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
3135L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)3136L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
3136T: git git://github.com/anholt/linux3137T: git git://github.com/anholt/linux
@@ -3160,6 +3161,7 @@ F: arch/arm/boot/dts/bcm953012* · 23 unmodified lines
3160 3161
3161BROADCOM BCM53573 ARM ARCHITECTURE3162BROADCOM BCM53573 ARM ARCHITECTURE
3162M: Rafał Miłecki <rafal@milecki.pl>3163M: Rafał Miłecki <rafal@milecki.pl>
3164L: bcm-kernel-feedback-list@broadcom.com
3163L: linux-arm-kernel@lists.infradead.org3165L: linux-arm-kernel@lists.infradead.org
3164S: Maintained3166S: Maintained
3165F: arch/arm/boot/dts/bcm53573*3167F: arch/arm/boot/dts/bcm53573*
Makefile+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
2VERSION = 52VERSION = 5
3PATCHLEVEL = 23PATCHLEVEL = 2
4SUBLEVEL = 04SUBLEVEL = 0
5EXTRAVERSION = -rc55EXTRAVERSION = -rc6
6NAME = Golden Lions6NAME = Golden Lions
7 7
8# *DOCUMENTATION*8# *DOCUMENTATION*
arch/arm/boot/dts/gemini-dlink-dir-685.dts+1−1
@@ -20,7 +20,7 @@ · 19 unmodified lines
20 };20 };
21 21
22 chosen {22 chosen {
23 bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait";23 bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait consoleblank=300";
24 stdout-path = "uart0:19200n8";24 stdout-path = "uart0:19200n8";
25 };25 };
26 26
arch/arm/boot/dts/gemini-dlink-dns-313.dts+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11 11
12/ {12/ {
13 model = "D-Link DNS-313 1-Bay Network Storage Enclosure";13 model = "D-Link DNS-313 1-Bay Network Storage Enclosure";
14 compatible = "dlink,dir-313", "cortina,gemini";14 compatible = "dlink,dns-313", "cortina,gemini";
15 #address-cells = <1>;15 #address-cells = <1>;
16 #size-cells = <1>;16 #size-cells = <1>;
17 17
arch/arm/boot/dts/imx6ul.dtsi+4−4
@@ -358,7 +358,7 @@ · 357 unmodified lines
358 pwm1: pwm@2080000 {358 pwm1: pwm@2080000 {
359 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";359 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
360 reg = <0x02080000 0x4000>;360 reg = <0x02080000 0x4000>;
361 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;361 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
362 clocks = <&clks IMX6UL_CLK_PWM1>,362 clocks = <&clks IMX6UL_CLK_PWM1>,
363 <&clks IMX6UL_CLK_PWM1>;363 <&clks IMX6UL_CLK_PWM1>;
364 clock-names = "ipg", "per";364 clock-names = "ipg", "per";
@@ -369,7 +369,7 @@ · 4 unmodified lines
369 pwm2: pwm@2084000 {369 pwm2: pwm@2084000 {
370 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";370 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
371 reg = <0x02084000 0x4000>;371 reg = <0x02084000 0x4000>;
372 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;372 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
373 clocks = <&clks IMX6UL_CLK_PWM2>,373 clocks = <&clks IMX6UL_CLK_PWM2>,
374 <&clks IMX6UL_CLK_PWM2>;374 <&clks IMX6UL_CLK_PWM2>;
375 clock-names = "ipg", "per";375 clock-names = "ipg", "per";
@@ -380,7 +380,7 @@ · 4 unmodified lines
380 pwm3: pwm@2088000 {380 pwm3: pwm@2088000 {
381 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";381 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
382 reg = <0x02088000 0x4000>;382 reg = <0x02088000 0x4000>;
383 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;383 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
384 clocks = <&clks IMX6UL_CLK_PWM3>,384 clocks = <&clks IMX6UL_CLK_PWM3>,
385 <&clks IMX6UL_CLK_PWM3>;385 <&clks IMX6UL_CLK_PWM3>;
386 clock-names = "ipg", "per";386 clock-names = "ipg", "per";
@@ -391,7 +391,7 @@ · 4 unmodified lines
391 pwm4: pwm@208c000 {391 pwm4: pwm@208c000 {
392 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";392 compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
393 reg = <0x0208c000 0x4000>;393 reg = <0x0208c000 0x4000>;
394 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;394 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
395 clocks = <&clks IMX6UL_CLK_PWM4>,395 clocks = <&clks IMX6UL_CLK_PWM4>,
396 <&clks IMX6UL_CLK_PWM4>;396 <&clks IMX6UL_CLK_PWM4>;
397 clock-names = "ipg", "per";397 clock-names = "ipg", "per";
arch/arm/boot/dts/meson8.dtsi+2−3
@@ -248,8 +248,8 @@ · 247 unmodified lines
248 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,248 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
249 <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,249 <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
250 <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,250 <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
251 <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,251 <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>,
252 <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,252 <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>,
253 <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,253 <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,
254 <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,254 <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,
255 <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,255 <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
@@ -264,7 +264,6 @@ · 8 unmodified lines
264 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;264 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
265 clock-names = "bus", "core";265 clock-names = "bus", "core";
266 operating-points-v2 = <&gpu_opp_table>;266 operating-points-v2 = <&gpu_opp_table>;
267 switch-delay = <0xffff>;
268 };267 };
269 };268 };
270}; /* end of / */269}; /* end of / */
arch/arm/boot/dts/meson8b.dtsi+5−6
@@ -163,23 +163,23 @@ · 162 unmodified lines
163 163
164 opp-255000000 {164 opp-255000000 {
165 opp-hz = /bits/ 64 <255000000>;165 opp-hz = /bits/ 64 <255000000>;
166 opp-microvolt = <1150000>;166 opp-microvolt = <1100000>;
167 };167 };
168 opp-364300000 {168 opp-364300000 {
169 opp-hz = /bits/ 64 <364300000>;169 opp-hz = /bits/ 64 <364300000>;
170 opp-microvolt = <1150000>;170 opp-microvolt = <1100000>;
171 };171 };
172 opp-425000000 {172 opp-425000000 {
173 opp-hz = /bits/ 64 <425000000>;173 opp-hz = /bits/ 64 <425000000>;
174 opp-microvolt = <1150000>;174 opp-microvolt = <1100000>;
175 };175 };
176 opp-510000000 {176 opp-510000000 {
177 opp-hz = /bits/ 64 <510000000>;177 opp-hz = /bits/ 64 <510000000>;
178 opp-microvolt = <1150000>;178 opp-microvolt = <1100000>;
179 };179 };
180 opp-637500000 {180 opp-637500000 {
181 opp-hz = /bits/ 64 <637500000>;181 opp-hz = /bits/ 64 <637500000>;
182 opp-microvolt = <1150000>;182 opp-microvolt = <1100000>;
183 turbo-mode;183 turbo-mode;
184 };184 };
185 };185 };
@@ -229,7 +229,6 @@ · 43 unmodified lines
229 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;229 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
230 clock-names = "bus", "core";230 clock-names = "bus", "core";
231 operating-points-v2 = <&gpu_opp_table>;231 operating-points-v2 = <&gpu_opp_table>;
232 switch-delay = <0xffff>;
233 };232 };
234 };233 };
235}; /* end of / */234}; /* end of / */
arch/arm/mach-omap2/prm3xxx.c+1−1
@@ -430,7 +430,7 @@ static void omap3_prm_reconfigure_io_chain(void) · 429 unmodified lines
430 * registers, and omap3xxx_prm_reconfigure_io_chain() must be called.430 * registers, and omap3xxx_prm_reconfigure_io_chain() must be called.
431 * No return value.431 * No return value.
432 */432 */
433static void __init omap3xxx_prm_enable_io_wakeup(void)433static void omap3xxx_prm_enable_io_wakeup(void)
434{434{
435 if (prm_features & PRM_HAS_IO_WAKEUP)435 if (prm_features & PRM_HAS_IO_WAKEUP)
436 omap2_prm_set_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD,436 omap2_prm_set_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD,
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi+9−9
@@ -28,7 +28,7 @@ · 27 unmodified lines
28 enable-method = "psci";28 enable-method = "psci";
29 clocks = <&clockgen 1 0>;29 clocks = <&clockgen 1 0>;
30 next-level-cache = <&l2>;30 next-level-cache = <&l2>;
31 cpu-idle-states = <&CPU_PH20>;31 cpu-idle-states = <&CPU_PW20>;
32 };32 };
33 33
34 cpu1: cpu@1 {34 cpu1: cpu@1 {
@@ -38,7 +38,7 @@ · 3 unmodified lines
38 enable-method = "psci";38 enable-method = "psci";
39 clocks = <&clockgen 1 0>;39 clocks = <&clockgen 1 0>;
40 next-level-cache = <&l2>;40 next-level-cache = <&l2>;
41 cpu-idle-states = <&CPU_PH20>;41 cpu-idle-states = <&CPU_PW20>;
42 };42 };
43 43
44 l2: l2-cache {44 l2: l2-cache {
@@ -53,13 +53,13 @@ · 8 unmodified lines
53 */53 */
54 entry-method = "arm,psci";54 entry-method = "arm,psci";
55 55
56 CPU_PH20: cpu-ph20 {56 CPU_PW20: cpu-pw20 {
57 compatible = "arm,idle-state";57 compatible = "arm,idle-state";
58 idle-state-name = "PH20";58 idle-state-name = "PW20";
59 arm,psci-suspend-param = <0x00010000>;59 arm,psci-suspend-param = <0x0>;
60 entry-latency-us = <1000>;60 entry-latency-us = <2000>;
61 exit-latency-us = <1000>;61 exit-latency-us = <2000>;
62 min-residency-us = <3000>;62 min-residency-us = <6000>;
63 };63 };
64 };64 };
65 65
arch/arm64/configs/defconfig+1−0
@@ -613,6 +613,7 @@ CONFIG_RTC_DRV_TEGRA=y · 612 unmodified lines
613CONFIG_RTC_DRV_IMX_SC=m613CONFIG_RTC_DRV_IMX_SC=m
614CONFIG_RTC_DRV_XGENE=y614CONFIG_RTC_DRV_XGENE=y
615CONFIG_DMADEVICES=y615CONFIG_DMADEVICES=y
616CONFIG_FSL_EDMA=y
616CONFIG_DMA_BCM2835=m617CONFIG_DMA_BCM2835=m
617CONFIG_K3_DMA=y618CONFIG_K3_DMA=y
618CONFIG_MV_XOR=y619CONFIG_MV_XOR=y
arch/csky/kernel/signal.c+5−0
@@ -39,6 +39,11 @@ static int save_fpu_state(struct sigcontext __user *sc) · 38 unmodified lines
39#endif39#endif
40 40
41struct rt_sigframe {41struct rt_sigframe {
42 /*
43 * pad[3] is compatible with the same struct defined in
44 * gcc/libgcc/config/csky/linux-unwind.h
45 */
46 int pad[3];
42 struct siginfo info;47 struct siginfo info;
43 struct ucontext uc;48 struct ucontext uc;
44};49};
arch/parisc/kernel/module.c+4−0
@@ -786,6 +786,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs, · 785 unmodified lines
786 /* 32-bit PC relative address */786 /* 32-bit PC relative address */
787 *loc = val - dot - 8 + addend;787 *loc = val - dot - 8 + addend;
788 break;788 break;
789 case R_PARISC_PCREL64:
790 /* 64-bit PC relative address */
791 *loc64 = val - dot - 8 + addend;
792 break;
789 case R_PARISC_DIR64:793 case R_PARISC_DIR64:
790 /* 64-bit effective address */794 /* 64-bit effective address */
791 *loc64 = val + addend;795 *loc64 = val + addend;
arch/powerpc/include/asm/page.h+7−0
@@ -319,6 +319,13 @@ struct vm_area_struct; · 318 unmodified lines
319#endif /* __ASSEMBLY__ */319#endif /* __ASSEMBLY__ */
320#include <asm/slice.h>320#include <asm/slice.h>
321 321
322/*
323 * Allow 30-bit DMA for very limited Broadcom wifi chips on many powerbooks.
324 */
325#ifdef CONFIG_PPC32
326#define ARCH_ZONE_DMA_BITS 30
327#else
322#define ARCH_ZONE_DMA_BITS 31328#define ARCH_ZONE_DMA_BITS 31
329#endif
323 330
324#endif /* _ASM_POWERPC_PAGE_H */331#endif /* _ASM_POWERPC_PAGE_H */
arch/powerpc/kernel/head_32.S+1−0
@@ -752,6 +752,7 @@ __secondary_start: · 751 unmodified lines
752 stw r0,0(r3)752 stw r0,0(r3)
753 753
754 /* load up the MMU */754 /* load up the MMU */
755 bl load_segment_registers
755 bl load_up_mmu756 bl load_up_mmu
756 757
757 /* ptr to phys current thread */758 /* ptr to phys current thread */
arch/powerpc/kernel/head_booke.h+5−5
@@ -83,7 +83,7 @@ END_BTB_FLUSH_SECTION · 82 unmodified lines
83 SAVE_4GPRS(3, r11); \83 SAVE_4GPRS(3, r11); \
84 SAVE_2GPRS(7, r11)84 SAVE_2GPRS(7, r11)
85 85
86.macro SYSCALL_ENTRY trapno intno86.macro SYSCALL_ENTRY trapno intno srr1
87 mfspr r10, SPRN_SPRG_THREAD87 mfspr r10, SPRN_SPRG_THREAD
88#ifdef CONFIG_KVM_BOOKE_HV88#ifdef CONFIG_KVM_BOOKE_HV
89BEGIN_FTR_SECTION89BEGIN_FTR_SECTION
@@ -94,7 +94,7 @@ BEGIN_FTR_SECTION · 4 unmodified lines
94 mfspr r11, SPRN_SRR194 mfspr r11, SPRN_SRR1
95 mtocrf 0x80, r11 /* check MSR[GS] without clobbering reg */95 mtocrf 0x80, r11 /* check MSR[GS] without clobbering reg */
96 bf 3, 1975f96 bf 3, 1975f
97 b kvmppc_handler_BOOKE_INTERRUPT_\intno\()_SPRN_SRR197 b kvmppc_handler_\intno\()_\srr1
981975:981975:
99 mr r12, r1399 mr r12, r13
100 lwz r13, THREAD_NORMSAVE(2)(r10)100 lwz r13, THREAD_NORMSAVE(2)(r10)
@@ -145,9 +145,9 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV) · 44 unmodified lines
145 tophys(r11,r11)145 tophys(r11,r11)
146 addi r11,r11,global_dbcr0@l146 addi r11,r11,global_dbcr0@l
147#ifdef CONFIG_SMP147#ifdef CONFIG_SMP
148 lwz r9,TASK_CPU(r2)148 lwz r10, TASK_CPU(r2)
149 slwi r9,r9,3149 slwi r10, r10, 3
150 add r11,r11,r9150 add r11, r11, r10
151#endif151#endif
152 lwz r12,0(r11)152 lwz r12,0(r11)
153 mtspr SPRN_DBCR0,r12153 mtspr SPRN_DBCR0,r12
arch/powerpc/kernel/head_fsl_booke.S+1−1
@@ -409,7 +409,7 @@ interrupt_base: · 408 unmodified lines
409 409
410 /* System Call Interrupt */410 /* System Call Interrupt */
411 START_EXCEPTION(SystemCall)411 START_EXCEPTION(SystemCall)
412 SYSCALL_ENTRY 0xc00 SYSCALL412 SYSCALL_ENTRY 0xc00 BOOKE_INTERRUPT_SYSCALL SPRN_SRR1
413 413
414 /* Auxiliary Processor Unavailable Interrupt */414 /* Auxiliary Processor Unavailable Interrupt */
415 EXCEPTION(0x2900, AP_UNAVAIL, AuxillaryProcessorUnavailable, \415 EXCEPTION(0x2900, AP_UNAVAIL, AuxillaryProcessorUnavailable, \
arch/powerpc/kvm/book3s_hv_builtin.c+1−0
@@ -830,6 +830,7 @@ static void flush_guest_tlb(struct kvm *kvm) · 829 unmodified lines
830 }830 }
831 }831 }
832 asm volatile("ptesync": : :"memory");832 asm volatile("ptesync": : :"memory");
833 asm volatile(PPC_INVALIDATE_ERAT : : :"memory");
833}834}
834 835
835void kvmppc_check_need_tlb_flush(struct kvm *kvm, int pcpu,836void kvmppc_check_need_tlb_flush(struct kvm *kvm, int pcpu,
arch/powerpc/kvm/book3s_hv_rmhandlers.S+13−2
@@ -2500,17 +2500,28 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) · 2499 unmodified lines
2500 LOAD_REG_ADDR(r11, dawr_force_enable)2500 LOAD_REG_ADDR(r11, dawr_force_enable)
2501 lbz r11, 0(r11)2501 lbz r11, 0(r11)
2502 cmpdi r11, 02502 cmpdi r11, 0
2503 bne 3f
2503 li r3, H_HARDWARE2504 li r3, H_HARDWARE
2504 beqlr2505 blr
25063:
2505 /* Emulate H_SET_DABR/X on P8 for the sake of compat mode guests */2507 /* Emulate H_SET_DABR/X on P8 for the sake of compat mode guests */
2506 rlwimi r5, r4, 5, DAWRX_DR | DAWRX_DW2508 rlwimi r5, r4, 5, DAWRX_DR | DAWRX_DW
2507 rlwimi r5, r4, 2, DAWRX_WT2509 rlwimi r5, r4, 2, DAWRX_WT
2508 clrrdi r4, r4, 32510 clrrdi r4, r4, 3
2509 std r4, VCPU_DAWR(r3)2511 std r4, VCPU_DAWR(r3)
2510 std r5, VCPU_DAWRX(r3)2512 std r5, VCPU_DAWRX(r3)
2513 /*
2514 * If came in through the real mode hcall handler then it is necessary
2515 * to write the registers since the return path won't. Otherwise it is
2516 * sufficient to store then in the vcpu struct as they will be loaded
2517 * next time the vcpu is run.
2518 */
2519 mfmsr r6
2520 andi. r6, r6, MSR_DR /* in real mode? */
2521 bne 4f
2511 mtspr SPRN_DAWR, r42522 mtspr SPRN_DAWR, r4
2512 mtspr SPRN_DAWRX, r52523 mtspr SPRN_DAWRX, r5
2513 li r3, 025244: li r3, 0
2514 blr2525 blr
2515 2526
2516_GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */2527_GLOBAL(kvmppc_h_cede) /* r3 = vcpu pointer, r11 = msr, r13 = paca */
arch/powerpc/mm/book3s64/mmu_context.c+47−8
@@ -50,20 +50,52 @@ EXPORT_SYMBOL_GPL(hash__alloc_context_id); · 49 unmodified lines
50 50
51void slb_setup_new_exec(void);51void slb_setup_new_exec(void);
52 52
53static int realloc_context_ids(mm_context_t *ctx)
54{
55 int i, id;
56
57 /*
58 * id 0 (aka. ctx->id) is special, we always allocate a new one, even if
59 * there wasn't one allocated previously (which happens in the exec
60 * case where ctx is newly allocated).
61 *
62 * We have to be a bit careful here. We must keep the existing ids in
63 * the array, so that we can test if they're non-zero to decide if we
64 * need to allocate a new one. However in case of error we must free the
65 * ids we've allocated but *not* any of the existing ones (or risk a
66 * UAF). That's why we decrement i at the start of the error handling
67 * loop, to skip the id that we just tested but couldn't reallocate.
68 */
69 for (i = 0; i < ARRAY_SIZE(ctx->extended_id); i++) {
70 if (i == 0 || ctx->extended_id[i]) {
71 id = hash__alloc_context_id();
72 if (id < 0)
73 goto error;
74
75 ctx->extended_id[i] = id;
76 }
77 }
78
79 /* The caller expects us to return id */
80 return ctx->id;
81
82error:
83 for (i--; i >= 0; i--) {
84 if (ctx->extended_id[i])
85 ida_free(&mmu_context_ida, ctx->extended_id[i]);
86 }
87
88 return id;
89}
90
53static int hash__init_new_context(struct mm_struct *mm)91static int hash__init_new_context(struct mm_struct *mm)
54{92{
55 int index;93 int index;
56 94
57 index = hash__alloc_context_id();
58 if (index < 0)
59 return index;
60
61 mm->context.hash_context = kmalloc(sizeof(struct hash_mm_context),95 mm->context.hash_context = kmalloc(sizeof(struct hash_mm_context),
62 GFP_KERNEL);96 GFP_KERNEL);
63 if (!mm->context.hash_context) {97 if (!mm->context.hash_context)
64 ida_free(&mmu_context_ida, index);
65 return -ENOMEM;98 return -ENOMEM;
66 }
67 99
68 /*100 /*
69 * The old code would re-promote on fork, we don't do that when using101 * The old code would re-promote on fork, we don't do that when using
@@ -91,13 +123,20 @@ static int hash__init_new_context(struct mm_struct *mm) · 21 unmodified lines
91 mm->context.hash_context->spt = kmalloc(sizeof(struct subpage_prot_table),123 mm->context.hash_context->spt = kmalloc(sizeof(struct subpage_prot_table),
92 GFP_KERNEL);124 GFP_KERNEL);
93 if (!mm->context.hash_context->spt) {125 if (!mm->context.hash_context->spt) {
94 ida_free(&mmu_context_ida, index);
95 kfree(mm->context.hash_context);126 kfree(mm->context.hash_context);
96 return -ENOMEM;127 return -ENOMEM;
97 }128 }
98 }129 }
99#endif130#endif
131 }
100 132
133 index = realloc_context_ids(&mm->context);
134 if (index < 0) {
135#ifdef CONFIG_PPC_SUBPAGE_PROT
136 kfree(mm->context.hash_context->spt);
137#endif
138 kfree(mm->context.hash_context);
139 return index;
101 }140 }
102 141
103 pkey_mm_init(mm);142 pkey_mm_init(mm);
arch/powerpc/mm/mem.c+2−1
@@ -248,7 +248,8 @@ void __init paging_init(void) · 247 unmodified lines
248 (long int)((top_of_ram - total_ram) >> 20));248 (long int)((top_of_ram - total_ram) >> 20));
249 249
250#ifdef CONFIG_ZONE_DMA250#ifdef CONFIG_ZONE_DMA
251 max_zone_pfns[ZONE_DMA] = min(max_low_pfn, 0x7fffffffUL >> PAGE_SHIFT);251 max_zone_pfns[ZONE_DMA] = min(max_low_pfn,
252 ((1UL << ARCH_ZONE_DMA_BITS) - 1) >> PAGE_SHIFT);
252#endif253#endif
253 max_zone_pfns[ZONE_NORMAL] = max_low_pfn;254 max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
254#ifdef CONFIG_HIGHMEM255#ifdef CONFIG_HIGHMEM
arch/powerpc/platforms/powermac/Kconfig+1−0
@@ -7,6 +7,7 @@ config PPC_PMAC · 6 unmodified lines
7 select PPC_INDIRECT_PCI if PPC327 select PPC_INDIRECT_PCI if PPC32
8 select PPC_MPC106 if PPC328 select PPC_MPC106 if PPC32
9 select PPC_NATIVE9 select PPC_NATIVE
10 select ZONE_DMA if PPC32
10 default y11 default y
11 12
12config PPC_PMAC6413config PPC_PMAC64
drivers/auxdisplay/cfag12864bfb.c+3−2
@@ -52,8 +52,9 @@ static const struct fb_var_screeninfo cfag12864bfb_var = { · 51 unmodified lines
52 52
53static int cfag12864bfb_mmap(struct fb_info *info, struct vm_area_struct *vma)53static int cfag12864bfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
54{54{
55 return vm_insert_page(vma, vma->vm_start,55 struct page *pages = virt_to_page(cfag12864b_buffer);
56 virt_to_page(cfag12864b_buffer));56
57 return vm_map_pages_zero(vma, &pages, 1);
57}58}
58 59
59static struct fb_ops cfag12864bfb_ops = {60static struct fb_ops cfag12864bfb_ops = {
drivers/auxdisplay/ht16k33.c+2−2
@@ -223,9 +223,9 @@ static const struct backlight_ops ht16k33_bl_ops = { · 222 unmodified lines
223static int ht16k33_mmap(struct fb_info *info, struct vm_area_struct *vma)223static int ht16k33_mmap(struct fb_info *info, struct vm_area_struct *vma)
224{224{
225 struct ht16k33_priv *priv = info->par;225 struct ht16k33_priv *priv = info->par;
226 struct page *pages = virt_to_page(priv->fbdev.buffer);
226 227
227 return vm_insert_page(vma, vma->vm_start,228 return vm_map_pages_zero(vma, &pages, 1);
228 virt_to_page(priv->fbdev.buffer));
229}229}
230 230
231static struct fb_ops ht16k33_fb_ops = {231static struct fb_ops ht16k33_fb_ops = {
drivers/clk/clk.c+1−1
@@ -368,7 +368,7 @@ static struct clk_core *clk_core_get(struct clk_core *core, u8 p_index) · 367 unmodified lines
368 const char *dev_id = dev ? dev_name(dev) : NULL;368 const char *dev_id = dev ? dev_name(dev) : NULL;
369 struct device_node *np = core->of_node;369 struct device_node *np = core->of_node;
370 370
371 if (np && index >= 0)371 if (np && (name || index >= 0))
372 hw = of_clk_get_hw(np, index, name);372 hw = of_clk_get_hw(np, index, name);
373 373
374 /*374 /*
drivers/clk/meson/g12a.c+2−2
@@ -2734,8 +2734,8 @@ static struct clk_hw_onecell_data g12a_hw_onecell_data = { · 2733 unmodified lines
2734 [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw,2734 [CLKID_MALI_1_DIV] = &g12a_mali_1_div.hw,
2735 [CLKID_MALI_1] = &g12a_mali_1.hw,2735 [CLKID_MALI_1] = &g12a_mali_1.hw,
2736 [CLKID_MALI] = &g12a_mali.hw,2736 [CLKID_MALI] = &g12a_mali.hw,
2737 [CLKID_MPLL_5OM_DIV] = &g12a_mpll_50m_div.hw,2737 [CLKID_MPLL_50M_DIV] = &g12a_mpll_50m_div.hw,
2738 [CLKID_MPLL_5OM] = &g12a_mpll_50m.hw,2738 [CLKID_MPLL_50M] = &g12a_mpll_50m.hw,
2739 [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw,2739 [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw,
2740 [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw,2740 [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw,
2741 [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw,2741 [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw,
drivers/clk/meson/g12a.h+1−1
@@ -166,7 +166,7 @@ · 165 unmodified lines
166#define CLKID_HDMI_DIV 167166#define CLKID_HDMI_DIV 167
167#define CLKID_MALI_0_DIV 170167#define CLKID_MALI_0_DIV 170
168#define CLKID_MALI_1_DIV 173168#define CLKID_MALI_1_DIV 173
169#define CLKID_MPLL_5OM_DIV 176169#define CLKID_MPLL_50M_DIV 176
170#define CLKID_SYS_PLL_DIV16_EN 178170#define CLKID_SYS_PLL_DIV16_EN 178
171#define CLKID_SYS_PLL_DIV16 179171#define CLKID_SYS_PLL_DIV16 179
172#define CLKID_CPU_CLK_DYN0_SEL 180172#define CLKID_CPU_CLK_DYN0_SEL 180
drivers/clk/meson/meson8b.c+5−5
@@ -1761,7 +1761,7 @@ static struct clk_regmap meson8m2_gp_pll = { · 1760 unmodified lines
1761 },1761 },
1762};1762};
1763 1763
1764static const char * const mmeson8b_vpu_0_1_parent_names[] = {1764static const char * const meson8b_vpu_0_1_parent_names[] = {
1765 "fclk_div4", "fclk_div3", "fclk_div5", "fclk_div7"1765 "fclk_div4", "fclk_div3", "fclk_div5", "fclk_div7"
1766};1766};
1767 1767
@@ -1778,8 +1778,8 @@ static struct clk_regmap meson8b_vpu_0_sel = { · 10 unmodified lines
1778 .hw.init = &(struct clk_init_data){1778 .hw.init = &(struct clk_init_data){
1779 .name = "vpu_0_sel",1779 .name = "vpu_0_sel",
1780 .ops = &clk_regmap_mux_ops,1780 .ops = &clk_regmap_mux_ops,
1781 .parent_names = mmeson8b_vpu_0_1_parent_names,1781 .parent_names = meson8b_vpu_0_1_parent_names,
1782 .num_parents = ARRAY_SIZE(mmeson8b_vpu_0_1_parent_names),1782 .num_parents = ARRAY_SIZE(meson8b_vpu_0_1_parent_names),
1783 .flags = CLK_SET_RATE_PARENT,1783 .flags = CLK_SET_RATE_PARENT,
1784 },1784 },
1785};1785};
@@ -1837,8 +1837,8 @@ static struct clk_regmap meson8b_vpu_1_sel = { · 51 unmodified lines
1837 .hw.init = &(struct clk_init_data){1837 .hw.init = &(struct clk_init_data){
1838 .name = "vpu_1_sel",1838 .name = "vpu_1_sel",
1839 .ops = &clk_regmap_mux_ops,1839 .ops = &clk_regmap_mux_ops,
1840 .parent_names = mmeson8b_vpu_0_1_parent_names,1840 .parent_names = meson8b_vpu_0_1_parent_names,
1841 .num_parents = ARRAY_SIZE(mmeson8b_vpu_0_1_parent_names),1841 .num_parents = ARRAY_SIZE(meson8b_vpu_0_1_parent_names),
1842 .flags = CLK_SET_RATE_PARENT,1842 .flags = CLK_SET_RATE_PARENT,
1843 },1843 },
1844};1844};
drivers/clk/socfpga/clk-s10.c+2−2
@@ -103,9 +103,9 @@ static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = { · 102 unmodified lines
103 { STRATIX10_NOC_CLK, "noc_clk", NULL, noc_mux, ARRAY_SIZE(noc_mux),103 { STRATIX10_NOC_CLK, "noc_clk", NULL, noc_mux, ARRAY_SIZE(noc_mux),
104 0, 0, 0, 0x3C, 1},104 0, 0, 0, 0x3C, 1},
105 { STRATIX10_EMAC_A_FREE_CLK, "emaca_free_clk", NULL, emaca_free_mux, ARRAY_SIZE(emaca_free_mux),105 { STRATIX10_EMAC_A_FREE_CLK, "emaca_free_clk", NULL, emaca_free_mux, ARRAY_SIZE(emaca_free_mux),
106 0, 0, 4, 0xB0, 0},106 0, 0, 2, 0xB0, 0},
107 { STRATIX10_EMAC_B_FREE_CLK, "emacb_free_clk", NULL, emacb_free_mux, ARRAY_SIZE(emacb_free_mux),107 { STRATIX10_EMAC_B_FREE_CLK, "emacb_free_clk", NULL, emacb_free_mux, ARRAY_SIZE(emacb_free_mux),
108 0, 0, 4, 0xB0, 1},108 0, 0, 2, 0xB0, 1},
109 { STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux,109 { STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux,
110 ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2},110 ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2},
111 { STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux,111 { STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux,
drivers/clk/tegra/clk-tegra210.c+2−0
@@ -3366,6 +3366,8 @@ static struct tegra_clk_init_table init_table[] __initdata = { · 3365 unmodified lines
3366 { TEGRA210_CLK_I2S3_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },3366 { TEGRA210_CLK_I2S3_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },
3367 { TEGRA210_CLK_I2S4_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },3367 { TEGRA210_CLK_I2S4_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },
3368 { TEGRA210_CLK_VIMCLK_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },3368 { TEGRA210_CLK_VIMCLK_SYNC, TEGRA210_CLK_CLK_MAX, 24576000, 0 },
3369 { TEGRA210_CLK_HDA, TEGRA210_CLK_PLL_P, 51000000, 0 },
3370 { TEGRA210_CLK_HDA2CODEC_2X, TEGRA210_CLK_PLL_P, 48000000, 0 },
3369 /* This MUST be the last entry. */3371 /* This MUST be the last entry. */
3370 { TEGRA210_CLK_CLK_MAX, TEGRA210_CLK_CLK_MAX, 0, 0 },3372 { TEGRA210_CLK_CLK_MAX, TEGRA210_CLK_CLK_MAX, 0, 0 },
3371};3373};
drivers/clk/ti/clkctrl.c+5−2
@@ -229,6 +229,7 @@ static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec, · 228 unmodified lines
229{229{
230 struct omap_clkctrl_provider *provider = data;230 struct omap_clkctrl_provider *provider = data;
231 struct omap_clkctrl_clk *entry;231 struct omap_clkctrl_clk *entry;
232 bool found = false;
232 233
233 if (clkspec->args_count != 2)234 if (clkspec->args_count != 2)
234 return ERR_PTR(-EINVAL);235 return ERR_PTR(-EINVAL);
@@ -238,11 +239,13 @@ static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec, · 3 unmodified lines
238 239
239 list_for_each_entry(entry, &provider->clocks, node) {240 list_for_each_entry(entry, &provider->clocks, node) {
240 if (entry->reg_offset == clkspec->args[0] &&241 if (entry->reg_offset == clkspec->args[0] &&
241 entry->bit_offset == clkspec->args[1])242 entry->bit_offset == clkspec->args[1]) {
243 found = true;
242 break;244 break;
245 }
243 }246 }
244 247
245 if (!entry)248 if (!found)
246 return ERR_PTR(-EINVAL);249 return ERR_PTR(-EINVAL);
247 250
248 return entry->clk;251 return entry->clk;
drivers/hid/hid-ids.h+3−0
@@ -80,6 +80,7 @@ · 79 unmodified lines
80#define HID_DEVICE_ID_ALPS_U1_DUAL_3BTN_PTP 0x122080#define HID_DEVICE_ID_ALPS_U1_DUAL_3BTN_PTP 0x1220
81#define HID_DEVICE_ID_ALPS_U1 0x121581#define HID_DEVICE_ID_ALPS_U1 0x1215
82#define HID_DEVICE_ID_ALPS_T4_BTNLESS 0x120C82#define HID_DEVICE_ID_ALPS_T4_BTNLESS 0x120C
83#define HID_DEVICE_ID_ALPS_1222 0x1222
83 84
84 85
85#define USB_VENDOR_ID_AMI 0x046b86#define USB_VENDOR_ID_AMI 0x046b
@@ -269,6 +270,7 @@ · 183 unmodified lines
269#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d270#define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d
270#define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618271#define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618
271#define USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE 0x1053272#define USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE 0x1053
273#define USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2 0x0939
272#define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123274#define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123
273#define USB_DEVICE_ID_ASUS_AK1D 0x1125275#define USB_DEVICE_ID_ASUS_AK1D 0x1125
274#define USB_DEVICE_ID_CHICONY_TOSHIBA_WT10A 0x1408276#define USB_DEVICE_ID_CHICONY_TOSHIBA_WT10A 0x1408
@@ -569,6 +571,7 @@ · 294 unmodified lines
569 571
570#define USB_VENDOR_ID_HUION 0x256c572#define USB_VENDOR_ID_HUION 0x256c
571#define USB_DEVICE_ID_HUION_TABLET 0x006e573#define USB_DEVICE_ID_HUION_TABLET 0x006e
574#define USB_DEVICE_ID_HUION_HS64 0x006d
572 575
573#define USB_VENDOR_ID_IBM 0x04b3576#define USB_VENDOR_ID_IBM 0x04b3
574#define USB_DEVICE_ID_IBM_SCROLLPOINT_III 0x3100577#define USB_DEVICE_ID_IBM_SCROLLPOINT_III 0x3100
drivers/hid/hid-logitech-dj.c+3−1
@@ -30,6 +30,7 @@ · 29 unmodified lines
30 30
31#define REPORT_ID_HIDPP_SHORT 0x1031#define REPORT_ID_HIDPP_SHORT 0x10
32#define REPORT_ID_HIDPP_LONG 0x1132#define REPORT_ID_HIDPP_LONG 0x11
33#define REPORT_ID_HIDPP_VERY_LONG 0x12
33 34
34#define HIDPP_REPORT_SHORT_LENGTH 735#define HIDPP_REPORT_SHORT_LENGTH 7
35#define HIDPP_REPORT_LONG_LENGTH 2036#define HIDPP_REPORT_LONG_LENGTH 20
@@ -1242,7 +1243,8 @@ static int logi_dj_ll_raw_request(struct hid_device *hid, · 1206 unmodified lines
1242 int ret;1243 int ret;
1243 1244
1244 if ((buf[0] == REPORT_ID_HIDPP_SHORT) ||1245 if ((buf[0] == REPORT_ID_HIDPP_SHORT) ||
1245 (buf[0] == REPORT_ID_HIDPP_LONG)) {1246 (buf[0] == REPORT_ID_HIDPP_LONG) ||
1247 (buf[0] == REPORT_ID_HIDPP_VERY_LONG)) {
1246 if (count < 2)1248 if (count < 2)
1247 return -EINVAL;1249 return -EINVAL;
1248 1250
drivers/hid/hid-multitouch.c+4−0
@@ -1776,6 +1776,10 @@ static const struct hid_device_id mt_devices[] = { · 1775 unmodified lines
1776 HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,1776 HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
1777 USB_VENDOR_ID_ALPS_JP,1777 USB_VENDOR_ID_ALPS_JP,
1778 HID_DEVICE_ID_ALPS_U1_DUAL_3BTN_PTP) },1778 HID_DEVICE_ID_ALPS_U1_DUAL_3BTN_PTP) },
1779 { .driver_data = MT_CLS_WIN_8_DUAL,
1780 HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
1781 USB_VENDOR_ID_ALPS_JP,
1782 HID_DEVICE_ID_ALPS_1222) },
1779 1783
1780 /* Lenovo X1 TAB Gen 2 */1784 /* Lenovo X1 TAB Gen 2 */
1781 { .driver_data = MT_CLS_WIN_8_DUAL,1785 { .driver_data = MT_CLS_WIN_8_DUAL,
drivers/hid/hid-quirks.c+1−0
@@ -42,6 +42,7 @@ static const struct hid_device_id hid_quirks[] = { · 41 unmodified lines
42 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },42 { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
43 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },43 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
44 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },44 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
45 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
45 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS), HID_QUIRK_MULTI_INPUT },46 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS), HID_QUIRK_MULTI_INPUT },
46 { HID_USB_DEVICE(USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD), HID_QUIRK_BADPAD },47 { HID_USB_DEVICE(USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD), HID_QUIRK_BADPAD },
47 { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK), HID_QUIRK_NOGET },48 { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK), HID_QUIRK_NOGET },
drivers/hid/hid-uclogic-core.c+2−0
@@ -369,6 +369,8 @@ static const struct hid_device_id uclogic_devices[] = { · 368 unmodified lines
369 USB_DEVICE_ID_UCLOGIC_TABLET_TWHA60) },369 USB_DEVICE_ID_UCLOGIC_TABLET_TWHA60) },
370 { HID_USB_DEVICE(USB_VENDOR_ID_HUION,370 { HID_USB_DEVICE(USB_VENDOR_ID_HUION,
371 USB_DEVICE_ID_HUION_TABLET) },371 USB_DEVICE_ID_HUION_TABLET) },
372 { HID_USB_DEVICE(USB_VENDOR_ID_HUION,
373 USB_DEVICE_ID_HUION_HS64) },
372 { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC,374 { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC,
373 USB_DEVICE_ID_HUION_TABLET) },375 USB_DEVICE_ID_HUION_TABLET) },
374 { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC,376 { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC,
drivers/hid/hid-uclogic-params.c+2−0
@@ -977,6 +977,8 @@ int uclogic_params_init(struct uclogic_params *params, · 976 unmodified lines
977 /* FALL THROUGH */977 /* FALL THROUGH */
978 case VID_PID(USB_VENDOR_ID_HUION,978 case VID_PID(USB_VENDOR_ID_HUION,
979 USB_DEVICE_ID_HUION_TABLET):979 USB_DEVICE_ID_HUION_TABLET):
980 case VID_PID(USB_VENDOR_ID_HUION,
981 USB_DEVICE_ID_HUION_HS64):
980 case VID_PID(USB_VENDOR_ID_UCLOGIC,982 case VID_PID(USB_VENDOR_ID_UCLOGIC,
981 USB_DEVICE_ID_HUION_TABLET):983 USB_DEVICE_ID_HUION_TABLET):
982 case VID_PID(USB_VENDOR_ID_UCLOGIC,984 case VID_PID(USB_VENDOR_ID_UCLOGIC,
drivers/hid/intel-ish-hid/ishtp-fw-loader.c+1−1
@@ -816,9 +816,9 @@ static int load_fw_from_host(struct ishtp_cl_data *client_data) · 815 unmodified lines
816 goto end_err_fw_release;816 goto end_err_fw_release;
817 817
818 release_firmware(fw);818 release_firmware(fw);
819 kfree(filename);
820 dev_info(cl_data_to_dev(client_data), "ISH firmware %s loaded\n",819 dev_info(cl_data_to_dev(client_data), "ISH firmware %s loaded\n",
821 filename);820 filename);
821 kfree(filename);
822 return 0;822 return 0;
823 823
824end_err_fw_release:824end_err_fw_release:
drivers/hid/intel-ish-hid/ishtp-hid-client.c+2−2
@@ -891,7 +891,7 @@ static int hid_ishtp_cl_reset(struct ishtp_cl_device *cl_device) · 890 unmodified lines
891 */891 */
892static int hid_ishtp_cl_suspend(struct device *device)892static int hid_ishtp_cl_suspend(struct device *device)
893{893{
894 struct ishtp_cl_device *cl_device = dev_get_drvdata(device);894 struct ishtp_cl_device *cl_device = ishtp_dev_to_cl_device(device);
895 struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);895 struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
896 struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);896 struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
897 897
@@ -912,7 +912,7 @@ static int hid_ishtp_cl_suspend(struct device *device) · 14 unmodified lines
912 */912 */
913static int hid_ishtp_cl_resume(struct device *device)913static int hid_ishtp_cl_resume(struct device *device)
914{914{
915 struct ishtp_cl_device *cl_device = dev_get_drvdata(device);915 struct ishtp_cl_device *cl_device = ishtp_dev_to_cl_device(device);
916 struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);916 struct ishtp_cl *hid_ishtp_cl = ishtp_get_drvdata(cl_device);
917 struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);917 struct ishtp_cl_data *client_data = ishtp_get_client_data(hid_ishtp_cl);
918 918
drivers/hid/intel-ish-hid/ishtp/bus.c+14−1
@@ -471,7 +471,6 @@ static struct ishtp_cl_device *ishtp_bus_add_device(struct ishtp_device *dev, · 470 unmodified lines
471 }471 }
472 472
473 ishtp_device_ready = true;473 ishtp_device_ready = true;
474 dev_set_drvdata(&device->dev, device);
475 474
476 return device;475 return device;
477}476}
@@ -639,6 +638,20 @@ void *ishtp_get_drvdata(struct ishtp_cl_device *cl_device) · 161 unmodified lines
639}638}
640EXPORT_SYMBOL(ishtp_get_drvdata);639EXPORT_SYMBOL(ishtp_get_drvdata);
641 640
641/**
642 * ishtp_dev_to_cl_device() - get ishtp_cl_device instance from device instance
643 * @device: device instance
644 *
645 * Get ish_cl_device instance which embeds device instance in it.
646 *
647 * Return: pointer to ishtp_cl_device instance
648 */
649struct ishtp_cl_device *ishtp_dev_to_cl_device(struct device *device)
650{
651 return to_ishtp_cl_device(device);
652}
653EXPORT_SYMBOL(ishtp_dev_to_cl_device);
654
642/**655/**
643 * ishtp_bus_new_client() - Create a new client656 * ishtp_bus_new_client() - Create a new client
644 * @dev: ISHTP device instance657 * @dev: ISHTP device instance
drivers/iommu/intel-iommu.c+3−4
@@ -2504,7 +2504,6 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu, · 2503 unmodified lines
2504 }2504 }
2505 }2505 }
2506 2506
2507 spin_lock(&iommu->lock);
2508 spin_lock_irqsave(&device_domain_lock, flags);2507 spin_lock_irqsave(&device_domain_lock, flags);
2509 if (dev)2508 if (dev)
2510 found = find_domain(dev);2509 found = find_domain(dev);
@@ -2520,16 +2519,17 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu, · 9 unmodified lines
2520 2519
2521 if (found) {2520 if (found) {
2522 spin_unlock_irqrestore(&device_domain_lock, flags);2521 spin_unlock_irqrestore(&device_domain_lock, flags);
2523 spin_unlock(&iommu->lock);
2524 free_devinfo_mem(info);2522 free_devinfo_mem(info);
2525 /* Caller must free the original domain */2523 /* Caller must free the original domain */
2526 return found;2524 return found;
2527 }2525 }
2528 2526
2527 spin_lock(&iommu->lock);
2529 ret = domain_attach_iommu(domain, iommu);2528 ret = domain_attach_iommu(domain, iommu);
2529 spin_unlock(&iommu->lock);
2530
2530 if (ret) {2531 if (ret) {
2531 spin_unlock_irqrestore(&device_domain_lock, flags);2532 spin_unlock_irqrestore(&device_domain_lock, flags);
2532 spin_unlock(&iommu->lock);
2533 free_devinfo_mem(info);2533 free_devinfo_mem(info);
2534 return NULL;2534 return NULL;
2535 }2535 }
@@ -2539,7 +2539,6 @@ static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu, · 3 unmodified lines
2539 if (dev)2539 if (dev)
2540 dev->archdata.iommu = info;2540 dev->archdata.iommu = info;
2541 spin_unlock_irqrestore(&device_domain_lock, flags);2541 spin_unlock_irqrestore(&device_domain_lock, flags);
2542 spin_unlock(&iommu->lock);
2543 2542
2544 /* PASID table is mandatory for a PCI device in scalable mode. */2543 /* PASID table is mandatory for a PCI device in scalable mode. */
2545 if (dev && dev_is_pci(dev) && sm_supported(iommu)) {2544 if (dev && dev_is_pci(dev) && sm_supported(iommu)) {
drivers/md/dm-init.c+5−5
@@ -140,8 +140,8 @@ static char __init *dm_parse_table_entry(struct dm_device *dev, char *str) · 139 unmodified lines
140 return ERR_PTR(-EINVAL);140 return ERR_PTR(-EINVAL);
141 }141 }
142 /* target_args */142 /* target_args */
143 dev->target_args_array[n] = kstrndup(field[3], GFP_KERNEL,143 dev->target_args_array[n] = kstrndup(field[3], DM_MAX_STR_SIZE,
144 DM_MAX_STR_SIZE);144 GFP_KERNEL);
145 if (!dev->target_args_array[n])145 if (!dev->target_args_array[n])
146 return ERR_PTR(-ENOMEM);146 return ERR_PTR(-ENOMEM);
147 147
@@ -272,10 +272,10 @@ static int __init dm_init_init(void) · 124 unmodified lines
272 return 0;272 return 0;
273 273
274 if (strlen(create) >= DM_MAX_STR_SIZE) {274 if (strlen(create) >= DM_MAX_STR_SIZE) {
275 DMERR("Argument is too big. Limit is %d\n", DM_MAX_STR_SIZE);275 DMERR("Argument is too big. Limit is %d", DM_MAX_STR_SIZE);
276 return -EINVAL;276 return -EINVAL;
277 }277 }
278 str = kstrndup(create, GFP_KERNEL, DM_MAX_STR_SIZE);278 str = kstrndup(create, DM_MAX_STR_SIZE, GFP_KERNEL);
279 if (!str)279 if (!str)
280 return -ENOMEM;280 return -ENOMEM;
281 281
@@ -283,7 +283,7 @@ static int __init dm_init_init(void) · 1 unmodified line
283 if (r)283 if (r)
284 goto out;284 goto out;
285 285
286 DMINFO("waiting for all devices to be available before creating mapped devices\n");286 DMINFO("waiting for all devices to be available before creating mapped devices");
287 wait_for_device_probe();287 wait_for_device_probe();
288 288
289 list_for_each_entry(dev, &devices, list) {289 list_for_each_entry(dev, &devices, list) {
drivers/md/dm-log-writes.c+21−2
@@ -60,6 +60,7 @@ · 59 unmodified lines
60 60
61#define WRITE_LOG_VERSION 1ULL61#define WRITE_LOG_VERSION 1ULL
62#define WRITE_LOG_MAGIC 0x6a736677736872ULL62#define WRITE_LOG_MAGIC 0x6a736677736872ULL
63#define WRITE_LOG_SUPER_SECTOR 0
63 64
64/*65/*
65 * The disk format for this is braindead simple.66 * The disk format for this is braindead simple.
@@ -115,6 +116,7 @@ struct log_writes_c { · 49 unmodified lines
115 struct list_head logging_blocks;116 struct list_head logging_blocks;
116 wait_queue_head_t wait;117 wait_queue_head_t wait;
117 struct task_struct *log_kthread;118 struct task_struct *log_kthread;
119 struct completion super_done;
118};120};
119 121
120struct pending_block {122struct pending_block {
@@ -180,6 +182,14 @@ static void log_end_io(struct bio *bio) · 59 unmodified lines
180 bio_put(bio);182 bio_put(bio);
181}183}
182 184
185static void log_end_super(struct bio *bio)
186{
187 struct log_writes_c *lc = bio->bi_private;
188
189 complete(&lc->super_done);
190 log_end_io(bio);
191}
192
183/*193/*
184 * Meant to be called if there is an error, it will free all the pages194 * Meant to be called if there is an error, it will free all the pages
185 * associated with the block.195 * associated with the block.
@@ -215,7 +225,8 @@ static int write_metadata(struct log_writes_c *lc, void *entry, · 29 unmodified lines
215 bio->bi_iter.bi_size = 0;225 bio->bi_iter.bi_size = 0;
216 bio->bi_iter.bi_sector = sector;226 bio->bi_iter.bi_sector = sector;
217 bio_set_dev(bio, lc->logdev->bdev);227 bio_set_dev(bio, lc->logdev->bdev);
218 bio->bi_end_io = log_end_io;228 bio->bi_end_io = (sector == WRITE_LOG_SUPER_SECTOR) ?
229 log_end_super : log_end_io;
219 bio->bi_private = lc;230 bio->bi_private = lc;
220 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);231 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
221 232
@@ -418,11 +429,18 @@ static int log_super(struct log_writes_c *lc) · 196 unmodified lines
418 super.nr_entries = cpu_to_le64(lc->logged_entries);429 super.nr_entries = cpu_to_le64(lc->logged_entries);
419 super.sectorsize = cpu_to_le32(lc->sectorsize);430 super.sectorsize = cpu_to_le32(lc->sectorsize);
420 431
421 if (write_metadata(lc, &super, sizeof(super), NULL, 0, 0)) {432 if (write_metadata(lc, &super, sizeof(super), NULL, 0,
433 WRITE_LOG_SUPER_SECTOR)) {
422 DMERR("Couldn't write super");434 DMERR("Couldn't write super");
423 return -1;435 return -1;
424 }436 }
425 437
438 /*
439 * Super sector should be writen in-order, otherwise the
440 * nr_entries could be rewritten incorrectly by an old bio.
441 */
442 wait_for_completion_io(&lc->super_done);
443
426 return 0;444 return 0;
427}445}
428 446
@@ -531,6 +549,7 @@ static int log_writes_ctr(struct dm_target *ti, unsigned int argc, char **argv) · 102 unmodified lines
531 INIT_LIST_HEAD(&lc->unflushed_blocks);549 INIT_LIST_HEAD(&lc->unflushed_blocks);
532 INIT_LIST_HEAD(&lc->logging_blocks);550 INIT_LIST_HEAD(&lc->logging_blocks);
533 init_waitqueue_head(&lc->wait);551 init_waitqueue_head(&lc->wait);
552 init_completion(&lc->super_done);
534 atomic_set(&lc->io_blocks, 0);553 atomic_set(&lc->io_blocks, 0);
535 atomic_set(&lc->pending_blocks, 0);554 atomic_set(&lc->pending_blocks, 0);
536 555
drivers/md/dm-table.c+1−1
@@ -561,7 +561,7 @@ static char **realloc_argv(unsigned *size, char **old_argv) · 560 unmodified lines
561 gfp = GFP_NOIO;561 gfp = GFP_NOIO;
562 }562 }
563 argv = kmalloc_array(new_size, sizeof(*argv), gfp);563 argv = kmalloc_array(new_size, sizeof(*argv), gfp);
564 if (argv) {564 if (argv && old_argv) {
565 memcpy(argv, old_argv, *size * sizeof(*argv));565 memcpy(argv, old_argv, *size * sizeof(*argv));
566 *size = new_size;566 *size = new_size;
567 }567 }
drivers/md/dm-verity-target.c+2−2
@@ -235,8 +235,8 @@ static int verity_handle_err(struct dm_verity *v, enum verity_block_type type, · 234 unmodified lines
235 BUG();235 BUG();
236 }236 }
237 237
238 DMERR("%s: %s block %llu is corrupted", v->data_dev->name, type_str,238 DMERR_LIMIT("%s: %s block %llu is corrupted", v->data_dev->name,
239 block);239 type_str, block);
240 240
241 if (v->corrupted_errs == DM_VERITY_MAX_CORRUPTED_ERRS)241 if (v->corrupted_errs == DM_VERITY_MAX_CORRUPTED_ERRS)
242 DMERR("%s: reached maximum errors", v->data_dev->name);242 DMERR("%s: reached maximum errors", v->data_dev->name);
drivers/mfd/stmfx.c+6−6
@@ -204,12 +204,11 @@ static struct irq_chip stmfx_irq_chip = { · 203 unmodified lines
204static irqreturn_t stmfx_irq_handler(int irq, void *data)204static irqreturn_t stmfx_irq_handler(int irq, void *data)
205{205{
206 struct stmfx *stmfx = data;206 struct stmfx *stmfx = data;
207 unsigned long n, pending;207 unsigned long bits;
208 u32 ack;208 u32 pending, ack;
209 int ret;209 int n, ret;
210 210
211 ret = regmap_read(stmfx->map, STMFX_REG_IRQ_PENDING,211 ret = regmap_read(stmfx->map, STMFX_REG_IRQ_PENDING, &pending);
212 (u32 *)&pending);
213 if (ret)212 if (ret)
214 return IRQ_NONE;213 return IRQ_NONE;
215 214
@@ -224,7 +223,8 @@ static irqreturn_t stmfx_irq_handler(int irq, void *data) · 8 unmodified lines
224 return IRQ_NONE;223 return IRQ_NONE;
225 }224 }
226 225
227 for_each_set_bit(n, &pending, STMFX_REG_IRQ_SRC_MAX)226 bits = pending;
227 for_each_set_bit(n, &bits, STMFX_REG_IRQ_SRC_MAX)
228 handle_nested_irq(irq_find_mapping(stmfx->irq_domain, n));228 handle_nested_irq(irq_find_mapping(stmfx->irq_domain, n));
229 229
230 return IRQ_HANDLED;230 return IRQ_HANDLED;
drivers/mtd/nand/raw/nand_base.c+2−1
@@ -4662,7 +4662,6 @@ static int nand_detect(struct nand_chip *chip, struct nand_flash_dev *type) · 4661 unmodified lines
4662 memorg = nanddev_get_memorg(&chip->base);4662 memorg = nanddev_get_memorg(&chip->base);
4663 memorg->planes_per_lun = 1;4663 memorg->planes_per_lun = 1;
4664 memorg->luns_per_target = 1;4664 memorg->luns_per_target = 1;
4665 memorg->ntargets = 1;
4666 4665
4667 /*4666 /*
4668 * Reset the chip, required by some chips (e.g. Micron MT29FxGxxxxx)4667 * Reset the chip, required by some chips (e.g. Micron MT29FxGxxxxx)
@@ -5027,6 +5026,8 @@ static int nand_scan_ident(struct nand_chip *chip, unsigned int maxchips, · 358 unmodified lines
5027 if (ret)5026 if (ret)
5028 return ret;5027 return ret;
5029 5028
5029 memorg->ntargets = maxchips;
5030
5030 /* Read the flash type */5031 /* Read the flash type */
5031 ret = nand_detect(chip, table);5032 ret = nand_detect(chip, table);
5032 if (ret) {5033 if (ret) {
drivers/mtd/spi-nor/spi-nor.c+108−11
@@ -1636,6 +1636,95 @@ static int sr2_bit7_quad_enable(struct spi_nor *nor) · 1635 unmodified lines
1636 return 0;1636 return 0;
1637}1637}
1638 1638
1639/**
1640 * spi_nor_clear_sr_bp() - clear the Status Register Block Protection bits.
1641 * @nor: pointer to a 'struct spi_nor'
1642 *
1643 * Read-modify-write function that clears the Block Protection bits from the
1644 * Status Register without affecting other bits.
1645 *
1646 * Return: 0 on success, -errno otherwise.
1647 */
1648static int spi_nor_clear_sr_bp(struct spi_nor *nor)
1649{
1650 int ret;
1651 u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
1652
1653 ret = read_sr(nor);
1654 if (ret < 0) {
1655 dev_err(nor->dev, "error while reading status register\n");
1656 return ret;
1657 }
1658
1659 write_enable(nor);
1660
1661 ret = write_sr(nor, ret & ~mask);
1662 if (ret) {
1663 dev_err(nor->dev, "write to status register failed\n");
1664 return ret;
1665 }
1666
1667 ret = spi_nor_wait_till_ready(nor);
1668 if (ret)
1669 dev_err(nor->dev, "timeout while writing status register\n");
1670 return ret;
1671}
1672
1673/**
1674 * spi_nor_spansion_clear_sr_bp() - clear the Status Register Block Protection
1675 * bits on spansion flashes.
1676 * @nor: pointer to a 'struct spi_nor'
1677 *
1678 * Read-modify-write function that clears the Block Protection bits from the
1679 * Status Register without affecting other bits. The function is tightly
1680 * coupled with the spansion_quad_enable() function. Both assume that the Write
1681 * Register with 16 bits, together with the Read Configuration Register (35h)
1682 * instructions are supported.
1683 *
1684 * Return: 0 on success, -errno otherwise.
1685 */
1686static int spi_nor_spansion_clear_sr_bp(struct spi_nor *nor)
1687{
1688 int ret;
1689 u8 mask = SR_BP2 | SR_BP1 | SR_BP0;
1690 u8 sr_cr[2] = {0};
1691
1692 /* Check current Quad Enable bit value. */
1693 ret = read_cr(nor);
1694 if (ret < 0) {
1695 dev_err(nor->dev,
1696 "error while reading configuration register\n");
1697 return ret;
1698 }
1699
1700 /*
1701 * When the configuration register Quad Enable bit is one, only the
1702 * Write Status (01h) command with two data bytes may be used.
1703 */
1704 if (ret & CR_QUAD_EN_SPAN) {
1705 sr_cr[1] = ret;
1706
1707 ret = read_sr(nor);
1708 if (ret < 0) {
1709 dev_err(nor->dev,
1710 "error while reading status register\n");
1711 return ret;
1712 }
1713 sr_cr[0] = ret & ~mask;
1714
1715 ret = write_sr_cr(nor, sr_cr);
1716 if (ret)
1717 dev_err(nor->dev, "16-bit write register failed\n");
1718 return ret;
1719 }
1720
1721 /*
1722 * If the Quad Enable bit is zero, use the Write Status (01h) command
1723 * with one data byte.
1724 */
1725 return spi_nor_clear_sr_bp(nor);
1726}
1727
1639/* Used when the "_ext_id" is two bytes at most */1728/* Used when the "_ext_id" is two bytes at most */
1640#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \1729#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
1641 .id = { \1730 .id = { \
@@ -3660,6 +3749,8 @@ static int spi_nor_init_params(struct spi_nor *nor, · 2018 unmodified lines
3660 default:3749 default:
3661 /* Kept only for backward compatibility purpose. */3750 /* Kept only for backward compatibility purpose. */
3662 params->quad_enable = spansion_quad_enable;3751 params->quad_enable = spansion_quad_enable;
3752 if (nor->clear_sr_bp)
3753 nor->clear_sr_bp = spi_nor_spansion_clear_sr_bp;
3663 break;3754 break;
3664 }3755 }
3665 3756
@@ -3912,17 +4003,13 @@ static int spi_nor_init(struct spi_nor *nor) · 246 unmodified lines
3912{4003{
3913 int err;4004 int err;
3914 4005
3915 /*4006 if (nor->clear_sr_bp) {
3916 * Atmel, SST, Intel/Numonyx, and others serial NOR tend to power up4007 err = nor->clear_sr_bp(nor);
3917 * with the software protection bits set4008 if (err) {
3918 */4009 dev_err(nor->dev,
3919 if (JEDEC_MFR(nor->info) == SNOR_MFR_ATMEL ||4010 "fail to clear block protection bits\n");
3920 JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||4011 return err;
3921 JEDEC_MFR(nor->info) == SNOR_MFR_SST ||4012 }
3922 nor->info->flags & SPI_NOR_HAS_LOCK) {
3923 write_enable(nor);
3924 write_sr(nor, 0);
3925 spi_nor_wait_till_ready(nor);
3926 }4013 }
3927 4014
3928 if (nor->quad_enable) {4015 if (nor->quad_enable) {
@@ -4047,6 +4134,16 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, · 118 unmodified lines
4047 if (info->flags & SPI_S3AN)4134 if (info->flags & SPI_S3AN)
4048 nor->flags |= SNOR_F_READY_XSR_RDY;4135 nor->flags |= SNOR_F_READY_XSR_RDY;
4049 4136
4137 /*
4138 * Atmel, SST, Intel/Numonyx, and others serial NOR tend to power up
4139 * with the software protection bits set.
4140 */
4141 if (JEDEC_MFR(nor->info) == SNOR_MFR_ATMEL ||
4142 JEDEC_MFR(nor->info) == SNOR_MFR_INTEL ||
4143 JEDEC_MFR(nor->info) == SNOR_MFR_SST ||
4144 nor->info->flags & SPI_NOR_HAS_LOCK)
4145 nor->clear_sr_bp = spi_nor_clear_sr_bp;
4146
4050 /* Parse the Serial Flash Discoverable Parameters table. */4147 /* Parse the Serial Flash Discoverable Parameters table. */
4051 ret = spi_nor_init_params(nor, &params);4148 ret = spi_nor_init_params(nor, &params);
4052 if (ret)4149 if (ret)
drivers/net/bonding/bond_main.c+1−1
@@ -4304,12 +4304,12 @@ void bond_setup(struct net_device *bond_dev) · 4303 unmodified lines
4304 bond_dev->features |= NETIF_F_NETNS_LOCAL;4304 bond_dev->features |= NETIF_F_NETNS_LOCAL;
4305 4305
4306 bond_dev->hw_features = BOND_VLAN_FEATURES |4306 bond_dev->hw_features = BOND_VLAN_FEATURES |
4307 NETIF_F_HW_VLAN_CTAG_TX |
4308 NETIF_F_HW_VLAN_CTAG_RX |4307 NETIF_F_HW_VLAN_CTAG_RX |
4309 NETIF_F_HW_VLAN_CTAG_FILTER;4308 NETIF_F_HW_VLAN_CTAG_FILTER;
4310 4309
4311 bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4;4310 bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4;
4312 bond_dev->features |= bond_dev->hw_features;4311 bond_dev->features |= bond_dev->hw_features;
4312 bond_dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
4313}4313}
4314 4314
4315/* Destroy a bonding device.4315/* Destroy a bonding device.
drivers/net/dsa/microchip/ksz_common.c+3−3
@@ -433,9 +433,9 @@ int ksz_switch_register(struct ksz_device *dev, · 432 unmodified lines
433 return PTR_ERR(dev->reset_gpio);433 return PTR_ERR(dev->reset_gpio);
434 434
435 if (dev->reset_gpio) {435 if (dev->reset_gpio) {
436 gpiod_set_value(dev->reset_gpio, 1);436 gpiod_set_value_cansleep(dev->reset_gpio, 1);
437 mdelay(10);437 mdelay(10);
438 gpiod_set_value(dev->reset_gpio, 0);438 gpiod_set_value_cansleep(dev->reset_gpio, 0);
439 }439 }
440 440
441 mutex_init(&dev->dev_mutex);441 mutex_init(&dev->dev_mutex);
@@ -485,7 +485,7 @@ void ksz_switch_remove(struct ksz_device *dev) · 43 unmodified lines
485 dsa_unregister_switch(dev->ds);485 dsa_unregister_switch(dev->ds);
486 486
487 if (dev->reset_gpio)487 if (dev->reset_gpio)
488 gpiod_set_value(dev->reset_gpio, 1);488 gpiod_set_value_cansleep(dev->reset_gpio, 1);
489 489
490}490}
491EXPORT_SYMBOL(ksz_switch_remove);491EXPORT_SYMBOL(ksz_switch_remove);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c+8−2
@@ -843,9 +843,14 @@ int aq_filters_vlans_update(struct aq_nic_s *aq_nic) · 842 unmodified lines
843 return err;843 return err;
844 844
845 if (aq_nic->ndev->features & NETIF_F_HW_VLAN_CTAG_FILTER) {845 if (aq_nic->ndev->features & NETIF_F_HW_VLAN_CTAG_FILTER) {
846 if (hweight < AQ_VLAN_MAX_FILTERS)846 if (hweight < AQ_VLAN_MAX_FILTERS && hweight > 0) {
847 err = aq_hw_ops->hw_filter_vlan_ctrl(aq_hw, true);847 err = aq_hw_ops->hw_filter_vlan_ctrl(aq_hw,
848 !(aq_nic->packet_filter & IFF_PROMISC));
849 aq_nic->aq_nic_cfg.is_vlan_force_promisc = false;
850 } else {
848 /* otherwise left in promiscue mode */851 /* otherwise left in promiscue mode */
852 aq_nic->aq_nic_cfg.is_vlan_force_promisc = true;
853 }
849 }854 }
850 855
851 return err;856 return err;
@@ -866,6 +871,7 @@ int aq_filters_vlan_offload_off(struct aq_nic_s *aq_nic) · 14 unmodified lines
866 if (unlikely(!aq_hw_ops->hw_filter_vlan_ctrl))871 if (unlikely(!aq_hw_ops->hw_filter_vlan_ctrl))
867 return -EOPNOTSUPP;872 return -EOPNOTSUPP;
868 873
874 aq_nic->aq_nic_cfg.is_vlan_force_promisc = true;
869 err = aq_hw_ops->hw_filter_vlan_ctrl(aq_hw, false);875 err = aq_hw_ops->hw_filter_vlan_ctrl(aq_hw, false);
870 if (err)876 if (err)
871 return err;877 return err;
drivers/net/ethernet/aquantia/atlantic/aq_nic.c+1−0
@@ -128,6 +128,7 @@ void aq_nic_cfg_start(struct aq_nic_s *self) · 127 unmodified lines
128 cfg->features = cfg->aq_hw_caps->hw_features;128 cfg->features = cfg->aq_hw_caps->hw_features;
129 cfg->is_vlan_rx_strip = !!(cfg->features & NETIF_F_HW_VLAN_CTAG_RX);129 cfg->is_vlan_rx_strip = !!(cfg->features & NETIF_F_HW_VLAN_CTAG_RX);
130 cfg->is_vlan_tx_insert = !!(cfg->features & NETIF_F_HW_VLAN_CTAG_TX);130 cfg->is_vlan_tx_insert = !!(cfg->features & NETIF_F_HW_VLAN_CTAG_TX);
131 cfg->is_vlan_force_promisc = true;
131}132}
132 133
133static int aq_nic_update_link_status(struct aq_nic_s *self)134static int aq_nic_update_link_status(struct aq_nic_s *self)
drivers/net/ethernet/aquantia/atlantic/aq_nic.h+1−0
@@ -37,6 +37,7 @@ struct aq_nic_cfg_s { · 36 unmodified lines
37 u32 wol;37 u32 wol;
38 u8 is_vlan_rx_strip;38 u8 is_vlan_rx_strip;
39 u8 is_vlan_tx_insert;39 u8 is_vlan_tx_insert;
40 bool is_vlan_force_promisc;
40 u16 is_mc_list_enabled;41 u16 is_mc_list_enabled;
41 u16 mc_list_count;42 u16 mc_list_count;
42 bool is_autoneg;43 bool is_autoneg;
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c+13−6
@@ -808,8 +808,15 @@ static int hw_atl_b0_hw_packet_filter_set(struct aq_hw_s *self, · 807 unmodified lines
808 unsigned int packet_filter)808 unsigned int packet_filter)
809{809{
810 unsigned int i = 0U;810 unsigned int i = 0U;
811 struct aq_nic_cfg_s *cfg = self->aq_nic_cfg;
812
813 hw_atl_rpfl2promiscuous_mode_en_set(self,
814 IS_FILTER_ENABLED(IFF_PROMISC));
815
816 hw_atl_rpf_vlan_prom_mode_en_set(self,
817 IS_FILTER_ENABLED(IFF_PROMISC) ||
818 cfg->is_vlan_force_promisc);
811 819
812 hw_atl_rpfl2promiscuous_mode_en_set(self, IS_FILTER_ENABLED(IFF_PROMISC));
813 hw_atl_rpfl2multicast_flr_en_set(self,820 hw_atl_rpfl2multicast_flr_en_set(self,
814 IS_FILTER_ENABLED(IFF_ALLMULTI), 0);821 IS_FILTER_ENABLED(IFF_ALLMULTI), 0);
815 822
@@ -818,13 +825,13 @@ static int hw_atl_b0_hw_packet_filter_set(struct aq_hw_s *self, · 2 unmodified lines
818 825
819 hw_atl_rpfl2broadcast_en_set(self, IS_FILTER_ENABLED(IFF_BROADCAST));826 hw_atl_rpfl2broadcast_en_set(self, IS_FILTER_ENABLED(IFF_BROADCAST));
820 827
821 self->aq_nic_cfg->is_mc_list_enabled = IS_FILTER_ENABLED(IFF_MULTICAST);828 cfg->is_mc_list_enabled = IS_FILTER_ENABLED(IFF_MULTICAST);
822 829
823 for (i = HW_ATL_B0_MAC_MIN; i < HW_ATL_B0_MAC_MAX; ++i)830 for (i = HW_ATL_B0_MAC_MIN; i < HW_ATL_B0_MAC_MAX; ++i)
824 hw_atl_rpfl2_uc_flr_en_set(self,831 hw_atl_rpfl2_uc_flr_en_set(self,
825 (self->aq_nic_cfg->is_mc_list_enabled &&832 (cfg->is_mc_list_enabled &&
826 (i <= self->aq_nic_cfg->mc_list_count)) ?833 (i <= cfg->mc_list_count)) ?
827 1U : 0U, i);834 1U : 0U, i);
828 835
829 return aq_hw_err_from_flags(self);836 return aq_hw_err_from_flags(self);
830}837}
@@ -1116,7 +1123,7 @@ static int hw_atl_b0_hw_vlan_set(struct aq_hw_s *self, · 285 unmodified lines
1116static int hw_atl_b0_hw_vlan_ctrl(struct aq_hw_s *self, bool enable)1123static int hw_atl_b0_hw_vlan_ctrl(struct aq_hw_s *self, bool enable)
1117{1124{
1118 /* set promisc in case of disabing the vland filter */1125 /* set promisc in case of disabing the vland filter */
1119 hw_atl_rpf_vlan_prom_mode_en_set(self, !!!enable);1126 hw_atl_rpf_vlan_prom_mode_en_set(self, !enable);
1120 1127
1121 return aq_hw_err_from_flags(self);1128 return aq_hw_err_from_flags(self);
1122}1129}
drivers/net/ethernet/cadence/macb_main.c+1−1
@@ -4303,7 +4303,7 @@ static int macb_probe(struct platform_device *pdev) · 4302 unmodified lines
4303 if (PTR_ERR(mac) == -EPROBE_DEFER) {4303 if (PTR_ERR(mac) == -EPROBE_DEFER) {
4304 err = -EPROBE_DEFER;4304 err = -EPROBE_DEFER;
4305 goto err_out_free_netdev;4305 goto err_out_free_netdev;
4306 } else if (!IS_ERR(mac)) {4306 } else if (!IS_ERR_OR_NULL(mac)) {
4307 ether_addr_copy(bp->dev->dev_addr, mac);4307 ether_addr_copy(bp->dev->dev_addr, mac);
4308 } else {4308 } else {
4309 macb_get_hwaddr(bp);4309 macb_get_hwaddr(bp);
drivers/net/ethernet/emulex/benet/be_ethtool.c+22−6
@@ -891,7 +891,7 @@ static void be_self_test(struct net_device *netdev, struct ethtool_test *test, · 890 unmodified lines
891 u64 *data)891 u64 *data)
892{892{
893 struct be_adapter *adapter = netdev_priv(netdev);893 struct be_adapter *adapter = netdev_priv(netdev);
894 int status;894 int status, cnt;
895 u8 link_status = 0;895 u8 link_status = 0;
896 896
897 if (adapter->function_caps & BE_FUNCTION_CAPS_SUPER_NIC) {897 if (adapter->function_caps & BE_FUNCTION_CAPS_SUPER_NIC) {
@@ -902,6 +902,9 @@ static void be_self_test(struct net_device *netdev, struct ethtool_test *test, · 4 unmodified lines
902 902
903 memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM);903 memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM);
904 904
905 /* check link status before offline tests */
906 link_status = netif_carrier_ok(netdev);
907
905 if (test->flags & ETH_TEST_FL_OFFLINE) {908 if (test->flags & ETH_TEST_FL_OFFLINE) {
906 if (be_loopback_test(adapter, BE_MAC_LOOPBACK, &data[0]) != 0)909 if (be_loopback_test(adapter, BE_MAC_LOOPBACK, &data[0]) != 0)
907 test->flags |= ETH_TEST_FL_FAILED;910 test->flags |= ETH_TEST_FL_FAILED;
@@ -922,13 +925,26 @@ static void be_self_test(struct net_device *netdev, struct ethtool_test *test, · 14 unmodified lines
922 test->flags |= ETH_TEST_FL_FAILED;925 test->flags |= ETH_TEST_FL_FAILED;
923 }926 }
924 927
925 status = be_cmd_link_status_query(adapter, NULL, &link_status, 0);928 /* link status was down prior to test */
926 if (status) {929 if (!link_status) {
927 test->flags |= ETH_TEST_FL_FAILED;
928 data[4] = -1;
929 } else if (!link_status) {
930 test->flags |= ETH_TEST_FL_FAILED;930 test->flags |= ETH_TEST_FL_FAILED;
931 data[4] = 1;931 data[4] = 1;
932 return;
933 }
934
935 for (cnt = 10; cnt; cnt--) {
936 status = be_cmd_link_status_query(adapter, NULL, &link_status,
937 0);
938 if (status) {
939 test->flags |= ETH_TEST_FL_FAILED;
940 data[4] = -1;
941 break;
942 }
943
944 if (link_status)
945 break;
946
947 msleep_interruptible(500);
932 }948 }
933}949}
934 950
drivers/net/ethernet/sis/sis900.c+8−8
@@ -1057,7 +1057,7 @@ sis900_open(struct net_device *net_dev) · 1056 unmodified lines
1057 sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED);1057 sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED);
1058 1058
1059 /* Enable all known interrupts by setting the interrupt mask. */1059 /* Enable all known interrupts by setting the interrupt mask. */
1060 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE);1060 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE | TxDESC);
1061 sw32(cr, RxENA | sr32(cr));1061 sw32(cr, RxENA | sr32(cr));
1062 sw32(ier, IE);1062 sw32(ier, IE);
1063 1063
@@ -1578,7 +1578,7 @@ static void sis900_tx_timeout(struct net_device *net_dev) · 514 unmodified lines
1578 sw32(txdp, sis_priv->tx_ring_dma);1578 sw32(txdp, sis_priv->tx_ring_dma);
1579 1579
1580 /* Enable all known interrupts by setting the interrupt mask. */1580 /* Enable all known interrupts by setting the interrupt mask. */
1581 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE);1581 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE | TxDESC);
1582}1582}
1583 1583
1584/**1584/**
@@ -1618,7 +1618,7 @@ sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) · 33 unmodified lines
1618 spin_unlock_irqrestore(&sis_priv->lock, flags);1618 spin_unlock_irqrestore(&sis_priv->lock, flags);
1619 return NETDEV_TX_OK;1619 return NETDEV_TX_OK;
1620 }1620 }
1621 sis_priv->tx_ring[entry].cmdsts = (OWN | skb->len);1621 sis_priv->tx_ring[entry].cmdsts = (OWN | INTR | skb->len);
1622 sw32(cr, TxENA | sr32(cr));1622 sw32(cr, TxENA | sr32(cr));
1623 1623
1624 sis_priv->cur_tx ++;1624 sis_priv->cur_tx ++;
@@ -1674,7 +1674,7 @@ static irqreturn_t sis900_interrupt(int irq, void *dev_instance) · 49 unmodified lines
1674 do {1674 do {
1675 status = sr32(isr);1675 status = sr32(isr);
1676 1676
1677 if ((status & (HIBERR|TxURN|TxERR|TxIDLE|RxORN|RxERR|RxOK)) == 0)1677 if ((status & (HIBERR|TxURN|TxERR|TxIDLE|TxDESC|RxORN|RxERR|RxOK)) == 0)
1678 /* nothing intresting happened */1678 /* nothing intresting happened */
1679 break;1679 break;
1680 handled = 1;1680 handled = 1;
@@ -1684,7 +1684,7 @@ static irqreturn_t sis900_interrupt(int irq, void *dev_instance) · 3 unmodified lines
1684 /* Rx interrupt */1684 /* Rx interrupt */
1685 sis900_rx(net_dev);1685 sis900_rx(net_dev);
1686 1686
1687 if (status & (TxURN | TxERR | TxIDLE))1687 if (status & (TxURN | TxERR | TxIDLE | TxDESC))
1688 /* Tx interrupt */1688 /* Tx interrupt */
1689 sis900_finish_xmit(net_dev);1689 sis900_finish_xmit(net_dev);
1690 1690
@@ -1896,8 +1896,8 @@ static void sis900_finish_xmit (struct net_device *net_dev) · 205 unmodified lines
1896 1896
1897 if (tx_status & OWN) {1897 if (tx_status & OWN) {
1898 /* The packet is not transmitted yet (owned by hardware) !1898 /* The packet is not transmitted yet (owned by hardware) !
1899 * Note: the interrupt is generated only when Tx Machine1899 * Note: this is an almost impossible condition
1900 * is idle, so this is an almost impossible case */1900 * in case of TxDESC ('descriptor interrupt') */
1901 break;1901 break;
1902 }1902 }
1903 1903
@@ -2473,7 +2473,7 @@ static int sis900_resume(struct pci_dev *pci_dev) · 569 unmodified lines
2473 sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED);2473 sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED);
2474 2474
2475 /* Enable all known interrupts by setting the interrupt mask. */2475 /* Enable all known interrupts by setting the interrupt mask. */
2476 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE);2476 sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE | TxDESC);
2477 sw32(cr, RxENA | sr32(cr));2477 sw32(cr, RxENA | sr32(cr));
2478 sw32(ier, IE);2478 sw32(ier, IE);
2479 2479
drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c+1−1
@@ -112,7 +112,7 @@ static int adjust_systime(void __iomem *ioaddr, u32 sec, u32 nsec, · 111 unmodified lines
112 * programmed with (2^32 – <new_sec_value>)112 * programmed with (2^32 – <new_sec_value>)
113 */113 */
114 if (gmac4)114 if (gmac4)
115 sec = (100000000ULL - sec);115 sec = -sec;
116 116
117 value = readl(ioaddr + PTP_TCR);117 value = readl(ioaddr + PTP_TCR);
118 if (value & PTP_TCR_TSCTRLSSR)118 if (value & PTP_TCR_TSCTRLSSR)
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c+14−8
@@ -2892,12 +2892,15 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev) · 2891 unmodified lines
2892 2892
2893 /* Manage tx mitigation */2893 /* Manage tx mitigation */
2894 tx_q->tx_count_frames += nfrags + 1;2894 tx_q->tx_count_frames += nfrags + 1;
2895 if (priv->tx_coal_frames <= tx_q->tx_count_frames) {2895 if (likely(priv->tx_coal_frames > tx_q->tx_count_frames) &&
2896 !(priv->synopsys_id >= DWMAC_CORE_4_00 &&
2897 (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
2898 priv->hwts_tx_en)) {
2899 stmmac_tx_timer_arm(priv, queue);
2900 } else {
2901 tx_q->tx_count_frames = 0;
2896 stmmac_set_tx_ic(priv, desc);2902 stmmac_set_tx_ic(priv, desc);
2897 priv->xstats.tx_set_ic_bit++;2903 priv->xstats.tx_set_ic_bit++;
2898 tx_q->tx_count_frames = 0;
2899 } else {
2900 stmmac_tx_timer_arm(priv, queue);
2901 }2904 }
2902 2905
2903 skb_tx_timestamp(skb);2906 skb_tx_timestamp(skb);
@@ -3111,12 +3114,15 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) · 207 unmodified lines
3111 * element in case of no SG.3114 * element in case of no SG.
3112 */3115 */
3113 tx_q->tx_count_frames += nfrags + 1;3116 tx_q->tx_count_frames += nfrags + 1;
3114 if (priv->tx_coal_frames <= tx_q->tx_count_frames) {3117 if (likely(priv->tx_coal_frames > tx_q->tx_count_frames) &&
3118 !(priv->synopsys_id >= DWMAC_CORE_4_00 &&
3119 (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
3120 priv->hwts_tx_en)) {
3121 stmmac_tx_timer_arm(priv, queue);
3122 } else {
3123 tx_q->tx_count_frames = 0;
3115 stmmac_set_tx_ic(priv, desc);3124 stmmac_set_tx_ic(priv, desc);
3116 priv->xstats.tx_set_ic_bit++;3125 priv->xstats.tx_set_ic_bit++;
3117 tx_q->tx_count_frames = 0;
3118 } else {
3119 stmmac_tx_timer_arm(priv, queue);
3120 }3126 }
3121 3127
3122 skb_tx_timestamp(skb);3128 skb_tx_timestamp(skb);
drivers/net/ppp/ppp_mppe.c+1−0
@@ -63,6 +63,7 @@ MODULE_AUTHOR("Frank Cusack <fcusack@fcusack.com>"); · 62 unmodified lines
63MODULE_DESCRIPTION("Point-to-Point Protocol Microsoft Point-to-Point Encryption support");63MODULE_DESCRIPTION("Point-to-Point Protocol Microsoft Point-to-Point Encryption support");
64MODULE_LICENSE("Dual BSD/GPL");64MODULE_LICENSE("Dual BSD/GPL");
65MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE));65MODULE_ALIAS("ppp-compress-" __stringify(CI_MPPE));
66MODULE_SOFTDEP("pre: arc4");
66MODULE_VERSION("1.0.2");67MODULE_VERSION("1.0.2");
67 68
68static unsigned int69static unsigned int
drivers/net/team/team.c+1−1
@@ -2153,12 +2153,12 @@ static void team_setup(struct net_device *dev) · 2152 unmodified lines
2153 dev->features |= NETIF_F_NETNS_LOCAL;2153 dev->features |= NETIF_F_NETNS_LOCAL;
2154 2154
2155 dev->hw_features = TEAM_VLAN_FEATURES |2155 dev->hw_features = TEAM_VLAN_FEATURES |
2156 NETIF_F_HW_VLAN_CTAG_TX |
2157 NETIF_F_HW_VLAN_CTAG_RX |2156 NETIF_F_HW_VLAN_CTAG_RX |
2158 NETIF_F_HW_VLAN_CTAG_FILTER;2157 NETIF_F_HW_VLAN_CTAG_FILTER;
2159 2158
2160 dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4;2159 dev->hw_features |= NETIF_F_GSO_ENCAP_ALL | NETIF_F_GSO_UDP_L4;
2161 dev->features |= dev->hw_features;2160 dev->features |= dev->hw_features;
2161 dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
2162}2162}
2163 2163
2164static int team_newlink(struct net *src_net, struct net_device *dev,2164static int team_newlink(struct net *src_net, struct net_device *dev,
drivers/net/usb/qmi_wwan.c+1−1
@@ -1482,7 +1482,7 @@ static int qmi_wwan_probe(struct usb_interface *intf, · 1481 unmodified lines
1482 * different. Ignore the current interface if the number of endpoints1482 * different. Ignore the current interface if the number of endpoints
1483 * equals the number for the diag interface (two).1483 * equals the number for the diag interface (two).
1484 */1484 */
1485 info = (void *)&id->driver_info;1485 info = (void *)id->driver_info;
1486 1486
1487 if (info->data & QMI_WWAN_QUIRK_QUECTEL_DYNCFG) {1487 if (info->data & QMI_WWAN_QUIRK_QUECTEL_DYNCFG) {
1488 if (desc->bNumEndpoints == 2)1488 if (desc->bNumEndpoints == 2)
drivers/net/vrf.c+1−1
@@ -350,8 +350,8 @@ static int vrf_finish_output6(struct net *net, struct sock *sk, · 349 unmodified lines
350{350{
351 struct dst_entry *dst = skb_dst(skb);351 struct dst_entry *dst = skb_dst(skb);
352 struct net_device *dev = dst->dev;352 struct net_device *dev = dst->dev;
353 const struct in6_addr *nexthop;
353 struct neighbour *neigh;354 struct neighbour *neigh;
354 struct in6_addr *nexthop;
355 int ret;355 int ret;
356 356
357 nf_reset(skb);357 nf_reset(skb);
drivers/pci/p2pdma.c+4−0
@@ -18,6 +18,7 @@ · 17 unmodified lines
18#include <linux/percpu-refcount.h>18#include <linux/percpu-refcount.h>
19#include <linux/random.h>19#include <linux/random.h>
20#include <linux/seq_buf.h>20#include <linux/seq_buf.h>
21#include <linux/iommu.h>
21 22
22struct pci_p2pdma {23struct pci_p2pdma {
23 struct gen_pool *pool;24 struct gen_pool *pool;
@@ -299,6 +300,9 @@ static bool root_complex_whitelist(struct pci_dev *dev) · 275 unmodified lines
299 struct pci_dev *root = pci_get_slot(host->bus, PCI_DEVFN(0, 0));300 struct pci_dev *root = pci_get_slot(host->bus, PCI_DEVFN(0, 0));
300 unsigned short vendor, device;301 unsigned short vendor, device;
301 302
303 if (iommu_present(dev->dev.bus))
304 return false;
305
302 if (!root)306 if (!root)
303 return false;307 return false;
304 308
drivers/scsi/qedi/qedi_main.c+3−0
@@ -987,6 +987,9 @@ static int qedi_find_boot_info(struct qedi_ctx *qedi, · 986 unmodified lines
987 if (!iscsi_is_session_online(cls_sess))987 if (!iscsi_is_session_online(cls_sess))
988 continue;988 continue;
989 989
990 if (!sess->targetname)
991 continue;
992
990 if (pri_ctrl_flags) {993 if (pri_ctrl_flags) {
991 if (!strcmp(pri_tgt->iscsi_name, sess->targetname) &&994 if (!strcmp(pri_tgt->iscsi_name, sess->targetname) &&
992 !strcmp(pri_tgt->ip_addr, ep_ip_addr)) {995 !strcmp(pri_tgt->ip_addr, ep_ip_addr)) {
drivers/scsi/qedi/qedi_version.h+3−3
@@ -4,8 +4,8 @@ · 3 unmodified lines
4 * Copyright (c) 2016 Cavium Inc.4 * Copyright (c) 2016 Cavium Inc.
5 */5 */
6 6
7#define QEDI_MODULE_VERSION "8.33.0.21"7#define QEDI_MODULE_VERSION "8.37.0.20"
8#define QEDI_DRIVER_MAJOR_VER 88#define QEDI_DRIVER_MAJOR_VER 8
9#define QEDI_DRIVER_MINOR_VER 339#define QEDI_DRIVER_MINOR_VER 37
10#define QEDI_DRIVER_REV_VER 010#define QEDI_DRIVER_REV_VER 0
11#define QEDI_DRIVER_ENG_VER 2111#define QEDI_DRIVER_ENG_VER 20
drivers/scsi/qla2xxx/qla_os.c+1−1
@@ -1731,8 +1731,8 @@ static void qla2x00_abort_srb(struct qla_qpair *qp, srb_t *sp, const int res, · 1730 unmodified lines
1731 !test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags) &&1731 !test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags) &&
1732 !qla2x00_isp_reg_stat(ha))) {1732 !qla2x00_isp_reg_stat(ha))) {
1733 sp->comp = &comp;1733 sp->comp = &comp;
1734 rval = ha->isp_ops->abort_command(sp);
1735 spin_unlock_irqrestore(qp->qp_lock_ptr, *flags);1734 spin_unlock_irqrestore(qp->qp_lock_ptr, *flags);
1735 rval = ha->isp_ops->abort_command(sp);
1736 1736
1737 switch (rval) {1737 switch (rval) {
1738 case QLA_SUCCESS:1738 case QLA_SUCCESS:
drivers/scsi/ufs/ufshcd-pltfrm.c+4−7
@@ -430,24 +430,21 @@ int ufshcd_pltfrm_init(struct platform_device *pdev, · 429 unmodified lines
430 goto dealloc_host;430 goto dealloc_host;
431 }431 }
432 432
433 pm_runtime_set_active(&pdev->dev);
434 pm_runtime_enable(&pdev->dev);
435
436 ufshcd_init_lanes_per_dir(hba);433 ufshcd_init_lanes_per_dir(hba);
437 434
438 err = ufshcd_init(hba, mmio_base, irq);435 err = ufshcd_init(hba, mmio_base, irq);
439 if (err) {436 if (err) {
440 dev_err(dev, "Initialization failed\n");437 dev_err(dev, "Initialization failed\n");
441 goto out_disable_rpm;438 goto dealloc_host;
442 }439 }
443 440
444 platform_set_drvdata(pdev, hba);441 platform_set_drvdata(pdev, hba);
445 442
443 pm_runtime_set_active(&pdev->dev);
444 pm_runtime_enable(&pdev->dev);
445
446 return 0;446 return 0;
447 447
448out_disable_rpm:
449 pm_runtime_disable(&pdev->dev);
450 pm_runtime_set_suspended(&pdev->dev);
451dealloc_host:448dealloc_host:
452 ufshcd_dealloc_host(hba);449 ufshcd_dealloc_host(hba);
453out:450out:
fs/afs/callback.c+2−2
@@ -275,9 +275,9 @@ static void afs_break_one_callback(struct afs_server *server, · 274 unmodified lines
275 struct afs_super_info *as = AFS_FS_S(cbi->sb);275 struct afs_super_info *as = AFS_FS_S(cbi->sb);
276 struct afs_volume *volume = as->volume;276 struct afs_volume *volume = as->volume;
277 277
278 write_lock(&volume->cb_break_lock);278 write_lock(&volume->cb_v_break_lock);
279 volume->cb_v_break++;279 volume->cb_v_break++;
280 write_unlock(&volume->cb_break_lock);280 write_unlock(&volume->cb_v_break_lock);
281 } else {281 } else {
282 data.volume = NULL;282 data.volume = NULL;
283 data.fid = *fid;283 data.fid = *fid;
fs/afs/inode.c+19−12
@@ -55,6 +55,16 @@ static noinline void dump_vnode(struct afs_vnode *vnode, struct afs_vnode *paren · 54 unmodified lines
55 dump_stack();55 dump_stack();
56}56}
57 57
58/*
59 * Set the file size and block count. Estimate the number of 512 bytes blocks
60 * used, rounded up to nearest 1K for consistency with other AFS clients.
61 */
62static void afs_set_i_size(struct afs_vnode *vnode, u64 size)
63{
64 i_size_write(&vnode->vfs_inode, size);
65 vnode->vfs_inode.i_blocks = ((size + 1023) >> 10) << 1;
66}
67
58/*68/*
59 * Initialise an inode from the vnode status.69 * Initialise an inode from the vnode status.
60 */70 */
@@ -124,12 +134,7 @@ static int afs_inode_init_from_status(struct afs_vnode *vnode, struct key *key, · 63 unmodified lines
124 return afs_protocol_error(NULL, -EBADMSG, afs_eproto_file_type);134 return afs_protocol_error(NULL, -EBADMSG, afs_eproto_file_type);
125 }135 }
126 136
127 /*137 afs_set_i_size(vnode, status->size);
128 * Estimate 512 bytes blocks used, rounded up to nearest 1K
129 * for consistency with other AFS clients.
130 */
131 inode->i_blocks = ((i_size_read(inode) + 1023) >> 10) << 1;
132 i_size_write(&vnode->vfs_inode, status->size);
133 138
134 vnode->invalid_before = status->data_version;139 vnode->invalid_before = status->data_version;
135 inode_set_iversion_raw(&vnode->vfs_inode, status->data_version);140 inode_set_iversion_raw(&vnode->vfs_inode, status->data_version);
@@ -207,11 +212,13 @@ static void afs_apply_status(struct afs_fs_cursor *fc, · 71 unmodified lines
207 212
208 if (expected_version &&213 if (expected_version &&
209 *expected_version != status->data_version) {214 *expected_version != status->data_version) {
210 kdebug("vnode modified %llx on {%llx:%llu} [exp %llx] %s",215 if (test_bit(AFS_VNODE_CB_PROMISED, &vnode->flags))
211 (unsigned long long) status->data_version,216 pr_warn("kAFS: vnode modified {%llx:%llu} %llx->%llx %s\n",
212 vnode->fid.vid, vnode->fid.vnode,217 vnode->fid.vid, vnode->fid.vnode,
213 (unsigned long long) *expected_version,218 (unsigned long long)*expected_version,
214 fc->type ? fc->type->name : "???");219 (unsigned long long)status->data_version,
220 fc->type ? fc->type->name : "???");
221
215 vnode->invalid_before = status->data_version;222 vnode->invalid_before = status->data_version;
216 if (vnode->status.type == AFS_FTYPE_DIR) {223 if (vnode->status.type == AFS_FTYPE_DIR) {
217 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &vnode->flags))224 if (test_and_clear_bit(AFS_VNODE_DIR_VALID, &vnode->flags))
@@ -230,7 +237,7 @@ static void afs_apply_status(struct afs_fs_cursor *fc, · 12 unmodified lines
230 237
231 if (data_changed) {238 if (data_changed) {
232 inode_set_iversion_raw(&vnode->vfs_inode, status->data_version);239 inode_set_iversion_raw(&vnode->vfs_inode, status->data_version);
233 i_size_write(&vnode->vfs_inode, status->size);240 afs_set_i_size(vnode, status->size);
234 }241 }
235}242}
236 243
fs/afs/internal.h+3−5
@@ -109,10 +109,8 @@ struct afs_call { · 108 unmodified lines
109 struct rxrpc_call *rxcall; /* RxRPC call handle */109 struct rxrpc_call *rxcall; /* RxRPC call handle */
110 struct key *key; /* security for this call */110 struct key *key; /* security for this call */
111 struct afs_net *net; /* The network namespace */111 struct afs_net *net; /* The network namespace */
112 union {112 struct afs_server *server; /* The fileserver record if fs op (pins ref) */
113 struct afs_server *server;113 struct afs_vlserver *vlserver; /* The vlserver record if vl op */
114 struct afs_vlserver *vlserver;
115 };
116 struct afs_cb_interest *cbi; /* Callback interest for server used */114 struct afs_cb_interest *cbi; /* Callback interest for server used */
117 struct afs_vnode *lvnode; /* vnode being locked */115 struct afs_vnode *lvnode; /* vnode being locked */
118 void *request; /* request data (first part) */116 void *request; /* request data (first part) */
@@ -616,7 +614,7 @@ struct afs_volume { · 497 unmodified lines
616 unsigned int servers_seq; /* Incremented each time ->servers changes */614 unsigned int servers_seq; /* Incremented each time ->servers changes */
617 615
618 unsigned cb_v_break; /* Break-everything counter. */616 unsigned cb_v_break; /* Break-everything counter. */
619 rwlock_t cb_break_lock;617 rwlock_t cb_v_break_lock;
620 618
621 afs_voltype_t type; /* type of volume */619 afs_voltype_t type; /* type of volume */
622 short error;620 short error;
fs/afs/volume.c+1−0
@@ -43,6 +43,7 @@ static struct afs_volume *afs_alloc_volume(struct afs_fs_context *params, · 42 unmodified lines
43 atomic_set(&volume->usage, 1);43 atomic_set(&volume->usage, 1);
44 INIT_LIST_HEAD(&volume->proc_link);44 INIT_LIST_HEAD(&volume->proc_link);
45 rwlock_init(&volume->servers_lock);45 rwlock_init(&volume->servers_lock);
46 rwlock_init(&volume->cb_v_break_lock);
46 memcpy(volume->name, vldb->name, vldb->name_len + 1);47 memcpy(volume->name, vldb->name, vldb->name_len + 1);
47 48
48 slist = afs_alloc_server_list(params->cell, params->key, vldb, type_mask);49 slist = afs_alloc_server_list(params->cell, params->key, vldb, type_mask);
fs/proc/base.c+1−2
@@ -3077,8 +3077,7 @@ static const struct file_operations proc_tgid_base_operations = { · 3076 unmodified lines
3077 3077
3078struct pid *tgid_pidfd_to_pid(const struct file *file)3078struct pid *tgid_pidfd_to_pid(const struct file *file)
3079{3079{
3080 if (!d_is_dir(file->f_path.dentry) ||3080 if (file->f_op != &proc_tgid_base_operations)
3081 (file->f_op != &proc_tgid_base_operations))
3082 return ERR_PTR(-EBADF);3081 return ERR_PTR(-EBADF);
3083 3082
3084 return proc_pid(file_inode(file));3083 return proc_pid(file_inode(file));
include/dt-bindings/clock/g12a-clkc.h+1−1
@@ -130,7 +130,7 @@ · 129 unmodified lines
130#define CLKID_MALI_1_SEL 172130#define CLKID_MALI_1_SEL 172
131#define CLKID_MALI_1 174131#define CLKID_MALI_1 174
132#define CLKID_MALI 175132#define CLKID_MALI 175
133#define CLKID_MPLL_5OM 177133#define CLKID_MPLL_50M 177
134#define CLKID_CPU_CLK 187134#define CLKID_CPU_CLK 187
135#define CLKID_PCIE_PLL 201135#define CLKID_PCIE_PLL 201
136#define CLKID_VDEC_1 204136#define CLKID_VDEC_1 204
include/linux/intel-ish-client-if.h+1−0
@@ -103,6 +103,7 @@ void ishtp_put_device(struct ishtp_cl_device *cl_dev); · 102 unmodified lines
103void ishtp_get_device(struct ishtp_cl_device *cl_dev);103void ishtp_get_device(struct ishtp_cl_device *cl_dev);
104void ishtp_set_drvdata(struct ishtp_cl_device *cl_device, void *data);104void ishtp_set_drvdata(struct ishtp_cl_device *cl_device, void *data);
105void *ishtp_get_drvdata(struct ishtp_cl_device *cl_device);105void *ishtp_get_drvdata(struct ishtp_cl_device *cl_device);
106struct ishtp_cl_device *ishtp_dev_to_cl_device(struct device *dev);
106int ishtp_register_event_cb(struct ishtp_cl_device *device,107int ishtp_register_event_cb(struct ishtp_cl_device *device,
107 void (*read_cb)(struct ishtp_cl_device *));108 void (*read_cb)(struct ishtp_cl_device *));
108struct ishtp_fw_client *ishtp_fw_cl_get_client(struct ishtp_device *dev,109struct ishtp_fw_client *ishtp_fw_cl_get_client(struct ishtp_device *dev,
include/linux/mtd/spi-nor.h+3−0
@@ -373,6 +373,8 @@ struct flash_info; · 372 unmodified lines
373 * @flash_unlock: [FLASH-SPECIFIC] unlock a region of the SPI NOR373 * @flash_unlock: [FLASH-SPECIFIC] unlock a region of the SPI NOR
374 * @flash_is_locked: [FLASH-SPECIFIC] check if a region of the SPI NOR is374 * @flash_is_locked: [FLASH-SPECIFIC] check if a region of the SPI NOR is
375 * @quad_enable: [FLASH-SPECIFIC] enables SPI NOR quad mode375 * @quad_enable: [FLASH-SPECIFIC] enables SPI NOR quad mode
376 * @clear_sr_bp: [FLASH-SPECIFIC] clears the Block Protection Bits from
377 * the SPI NOR Status Register.
376 * completely locked378 * completely locked
377 * @priv: the private data379 * @priv: the private data
378 */380 */
@@ -410,6 +412,7 @@ struct spi_nor { · 31 unmodified lines
410 int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);412 int (*flash_unlock)(struct spi_nor *nor, loff_t ofs, uint64_t len);
411 int (*flash_is_locked)(struct spi_nor *nor, loff_t ofs, uint64_t len);413 int (*flash_is_locked)(struct spi_nor *nor, loff_t ofs, uint64_t len);
412 int (*quad_enable)(struct spi_nor *nor);414 int (*quad_enable)(struct spi_nor *nor);
415 int (*clear_sr_bp)(struct spi_nor *nor);
413 416
414 void *priv;417 void *priv;
415};418};
include/net/ip6_route.h+2−2
@@ -281,8 +281,8 @@ static inline bool ip6_sk_ignore_df(const struct sock *sk) · 280 unmodified lines
281 inet6_sk(sk)->pmtudisc == IPV6_PMTUDISC_OMIT;281 inet6_sk(sk)->pmtudisc == IPV6_PMTUDISC_OMIT;
282}282}
283 283
284static inline struct in6_addr *rt6_nexthop(struct rt6_info *rt,284static inline const struct in6_addr *rt6_nexthop(const struct rt6_info *rt,
285 struct in6_addr *daddr)285 const struct in6_addr *daddr)
286{286{
287 if (rt->rt6i_flags & RTF_GATEWAY)287 if (rt->rt6i_flags & RTF_GATEWAY)
288 return &rt->rt6i_gateway;288 return &rt->rt6i_gateway;
include/net/route.h+1−0
@@ -221,6 +221,7 @@ void ip_rt_get_source(u8 *src, struct sk_buff *skb, struct rtable *rt); · 220 unmodified lines
221struct rtable *rt_dst_alloc(struct net_device *dev,221struct rtable *rt_dst_alloc(struct net_device *dev,
222 unsigned int flags, u16 type,222 unsigned int flags, u16 type,
223 bool nopolicy, bool noxfrm, bool will_cache);223 bool nopolicy, bool noxfrm, bool will_cache);
224struct rtable *rt_dst_clone(struct net_device *dev, struct rtable *rt);
224 225
225struct in_ifaddr;226struct in_ifaddr;
226void fib_add_ifaddr(struct in_ifaddr *);227void fib_add_ifaddr(struct in_ifaddr *);
include/net/tls.h+0−15
@@ -407,21 +407,6 @@ static inline bool tls_is_partially_sent_record(struct tls_context *ctx) · 406 unmodified lines
407 return !!ctx->partially_sent_record;407 return !!ctx->partially_sent_record;
408}408}
409 409
410static inline int tls_complete_pending_work(struct sock *sk,
411 struct tls_context *ctx,
412 int flags, long *timeo)
413{
414 int rc = 0;
415
416 if (unlikely(sk->sk_write_pending))
417 rc = wait_on_pending_writer(sk, timeo);
418
419 if (!rc && tls_is_partially_sent_record(ctx))
420 rc = tls_push_partial_record(sk, ctx, flags);
421
422 return rc;
423}
424
425static inline bool tls_is_pending_open_record(struct tls_context *tls_ctx)410static inline bool tls_is_pending_open_record(struct tls_context *tls_ctx)
426{411{
427 return tls_ctx->pending_open_record_frags;412 return tls_ctx->pending_open_record_frags;
kernel/fork.c+18−40
@@ -1712,31 +1712,6 @@ const struct file_operations pidfd_fops = { · 1711 unmodified lines
1712#endif1712#endif
1713};1713};
1714 1714
1715/**
1716 * pidfd_create() - Create a new pid file descriptor.
1717 *
1718 * @pid: struct pid that the pidfd will reference
1719 *
1720 * This creates a new pid file descriptor with the O_CLOEXEC flag set.
1721 *
1722 * Note, that this function can only be called after the fd table has
1723 * been unshared to avoid leaking the pidfd to the new process.
1724 *
1725 * Return: On success, a cloexec pidfd is returned.
1726 * On error, a negative errno number will be returned.
1727 */
1728static int pidfd_create(struct pid *pid)
1729{
1730 int fd;
1731
1732 fd = anon_inode_getfd("[pidfd]", &pidfd_fops, get_pid(pid),
1733 O_RDWR | O_CLOEXEC);
1734 if (fd < 0)
1735 put_pid(pid);
1736
1737 return fd;
1738}
1739
1740static void __delayed_free_task(struct rcu_head *rhp)1715static void __delayed_free_task(struct rcu_head *rhp)
1741{1716{
1742 struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);1717 struct task_struct *tsk = container_of(rhp, struct task_struct, rcu);
@@ -1774,6 +1749,7 @@ static __latent_entropy struct task_struct *copy_process( · 31 unmodified lines
1774 int pidfd = -1, retval;1749 int pidfd = -1, retval;
1775 struct task_struct *p;1750 struct task_struct *p;
1776 struct multiprocess_signals delayed;1751 struct multiprocess_signals delayed;
1752 struct file *pidfile = NULL;
1777 1753
1778 /*1754 /*
1779 * Don't allow sharing the root directory with processes in a different1755 * Don't allow sharing the root directory with processes in a different
@@ -1822,8 +1798,6 @@ static __latent_entropy struct task_struct *copy_process( · 42 unmodified lines
1822 }1798 }
1823 1799
1824 if (clone_flags & CLONE_PIDFD) {1800 if (clone_flags & CLONE_PIDFD) {
1825 int reserved;
1826
1827 /*1801 /*
1828 * - CLONE_PARENT_SETTID is useless for pidfds and also1802 * - CLONE_PARENT_SETTID is useless for pidfds and also
1829 * parent_tidptr is used to return pidfds.1803 * parent_tidptr is used to return pidfds.
@@ -1834,16 +1808,6 @@ static __latent_entropy struct task_struct *copy_process( · 4 unmodified lines
1834 if (clone_flags &1808 if (clone_flags &
1835 (CLONE_DETACHED | CLONE_PARENT_SETTID | CLONE_THREAD))1809 (CLONE_DETACHED | CLONE_PARENT_SETTID | CLONE_THREAD))
1836 return ERR_PTR(-EINVAL);1810 return ERR_PTR(-EINVAL);
1837
1838 /*
1839 * Verify that parent_tidptr is sane so we can potentially
1840 * reuse it later.
1841 */
1842 if (get_user(reserved, parent_tidptr))
1843 return ERR_PTR(-EFAULT);
1844
1845 if (reserved != 0)
1846 return ERR_PTR(-EINVAL);
1847 }1811 }
1848 1812
1849 /*1813 /*
@@ -2058,11 +2022,20 @@ static __latent_entropy struct task_struct *copy_process( · 208 unmodified lines
2058 * if the fd table isn't shared).2022 * if the fd table isn't shared).
2059 */2023 */
2060 if (clone_flags & CLONE_PIDFD) {2024 if (clone_flags & CLONE_PIDFD) {
2061 retval = pidfd_create(pid);2025 retval = get_unused_fd_flags(O_RDWR | O_CLOEXEC);
2062 if (retval < 0)2026 if (retval < 0)
2063 goto bad_fork_free_pid;2027 goto bad_fork_free_pid;
2064 2028
2065 pidfd = retval;2029 pidfd = retval;
2030
2031 pidfile = anon_inode_getfile("[pidfd]", &pidfd_fops, pid,
2032 O_RDWR | O_CLOEXEC);
2033 if (IS_ERR(pidfile)) {
2034 put_unused_fd(pidfd);
2035 goto bad_fork_free_pid;
2036 }
2037 get_pid(pid); /* held by pidfile now */
2038
2066 retval = put_user(pidfd, parent_tidptr);2039 retval = put_user(pidfd, parent_tidptr);
2067 if (retval)2040 if (retval)
2068 goto bad_fork_put_pidfd;2041 goto bad_fork_put_pidfd;
@@ -2180,6 +2153,9 @@ static __latent_entropy struct task_struct *copy_process( · 111 unmodified lines
2180 goto bad_fork_cancel_cgroup;2153 goto bad_fork_cancel_cgroup;
2181 }2154 }
2182 2155
2156 /* past the last point of failure */
2157 if (pidfile)
2158 fd_install(pidfd, pidfile);
2183 2159
2184 init_task_pid_links(p);2160 init_task_pid_links(p);
2185 if (likely(p->pid)) {2161 if (likely(p->pid)) {
@@ -2246,8 +2222,10 @@ bad_fork_cancel_cgroup: · 60 unmodified lines
2246bad_fork_cgroup_threadgroup_change_end:2222bad_fork_cgroup_threadgroup_change_end:
2247 cgroup_threadgroup_change_end(current);2223 cgroup_threadgroup_change_end(current);
2248bad_fork_put_pidfd:2224bad_fork_put_pidfd:
2249 if (clone_flags & CLONE_PIDFD)2225 if (clone_flags & CLONE_PIDFD) {
2250 ksys_close(pidfd);2226 fput(pidfile);
2227 put_unused_fd(pidfd);
2228 }
2251bad_fork_free_pid:2229bad_fork_free_pid:
2252 if (pid != &init_struct_pid)2230 if (pid != &init_struct_pid)
2253 free_pid(pid);2231 free_pid(pid);
net/bluetooth/6lowpan.c+2−2
@@ -160,10 +160,10 @@ static inline struct lowpan_peer *peer_lookup_dst(struct lowpan_btle_dev *dev, · 159 unmodified lines
160 struct in6_addr *daddr,160 struct in6_addr *daddr,
161 struct sk_buff *skb)161 struct sk_buff *skb)
162{162{
163 struct lowpan_peer *peer;
164 struct in6_addr *nexthop;
165 struct rt6_info *rt = (struct rt6_info *)skb_dst(skb);163 struct rt6_info *rt = (struct rt6_info *)skb_dst(skb);
166 int count = atomic_read(&dev->peer_count);164 int count = atomic_read(&dev->peer_count);
165 const struct in6_addr *nexthop;
166 struct lowpan_peer *peer;
167 167
168 BT_DBG("peers %d addr %pI6c rt %p", count, daddr, rt);168 BT_DBG("peers %d addr %pI6c rt %p", count, daddr, rt);
169 169
net/bluetooth/hci_conn.c+9−9
@@ -1276,14 +1276,6 @@ int hci_conn_check_link_mode(struct hci_conn *conn) · 1275 unmodified lines
1276 !test_bit(HCI_CONN_ENCRYPT, &conn->flags))1276 !test_bit(HCI_CONN_ENCRYPT, &conn->flags))
1277 return 0;1277 return 0;
1278 1278
1279 /* The minimum encryption key size needs to be enforced by the
1280 * host stack before establishing any L2CAP connections. The
1281 * specification in theory allows a minimum of 1, but to align
1282 * BR/EDR and LE transports, a minimum of 7 is chosen.
1283 */
1284 if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
1285 return 0;
1286
1287 return 1;1279 return 1;
1288}1280}
1289 1281
@@ -1400,8 +1392,16 @@ auth: · 110 unmodified lines
1400 return 0;1392 return 0;
1401 1393
1402encrypt:1394encrypt:
1403 if (test_bit(HCI_CONN_ENCRYPT, &conn->flags))1395 if (test_bit(HCI_CONN_ENCRYPT, &conn->flags)) {
1396 /* Ensure that the encryption key size has been read,
1397 * otherwise stall the upper layer responses.
1398 */
1399 if (!conn->enc_key_size)
1400 return 0;
1401
1402 /* Nothing else needed, all requirements are met */
1404 return 1;1403 return 1;
1404 }
1405 1405
1406 hci_conn_encrypt(conn);1406 hci_conn_encrypt(conn);
1407 return 0;1407 return 0;
net/bluetooth/l2cap_core.c+28−5
@@ -1341,6 +1341,21 @@ static void l2cap_request_info(struct l2cap_conn *conn) · 1340 unmodified lines
1341 sizeof(req), &req);1341 sizeof(req), &req);
1342}1342}
1343 1343
1344static bool l2cap_check_enc_key_size(struct hci_conn *hcon)
1345{
1346 /* The minimum encryption key size needs to be enforced by the
1347 * host stack before establishing any L2CAP connections. The
1348 * specification in theory allows a minimum of 1, but to align
1349 * BR/EDR and LE transports, a minimum of 7 is chosen.
1350 *
1351 * This check might also be called for unencrypted connections
1352 * that have no key size requirements. Ensure that the link is
1353 * actually encrypted before enforcing a key size.
1354 */
1355 return (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags) ||
1356 hcon->enc_key_size > HCI_MIN_ENC_KEY_SIZE);
1357}
1358
1344static void l2cap_do_start(struct l2cap_chan *chan)1359static void l2cap_do_start(struct l2cap_chan *chan)
1345{1360{
1346 struct l2cap_conn *conn = chan->conn;1361 struct l2cap_conn *conn = chan->conn;
@@ -1358,9 +1373,14 @@ static void l2cap_do_start(struct l2cap_chan *chan) · 11 unmodified lines
1358 if (!(conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE))1373 if (!(conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE))
1359 return;1374 return;
1360 1375
1361 if (l2cap_chan_check_security(chan, true) &&1376 if (!l2cap_chan_check_security(chan, true) ||
1362 __l2cap_no_conn_pending(chan))1377 !__l2cap_no_conn_pending(chan))
1378 return;
1379
1380 if (l2cap_check_enc_key_size(conn->hcon))
1363 l2cap_start_connection(chan);1381 l2cap_start_connection(chan);
1382 else
1383 __set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
1364}1384}
1365 1385
1366static inline int l2cap_mode_supported(__u8 mode, __u32 feat_mask)1386static inline int l2cap_mode_supported(__u8 mode, __u32 feat_mask)
@@ -1439,7 +1459,10 @@ static void l2cap_conn_start(struct l2cap_conn *conn) · 72 unmodified lines
1439 continue;1459 continue;
1440 }1460 }
1441 1461
1442 l2cap_start_connection(chan);1462 if (l2cap_check_enc_key_size(conn->hcon))
1463 l2cap_start_connection(chan);
1464 else
1465 l2cap_chan_close(chan, ECONNREFUSED);
1443 1466
1444 } else if (chan->state == BT_CONNECT2) {1467 } else if (chan->state == BT_CONNECT2) {
1445 struct l2cap_conn_rsp rsp;1468 struct l2cap_conn_rsp rsp;
@@ -7490,7 +7513,7 @@ static void l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt) · 6044 unmodified lines
7490 }7513 }
7491 7514
7492 if (chan->state == BT_CONNECT) {7515 if (chan->state == BT_CONNECT) {
7493 if (!status)7516 if (!status && l2cap_check_enc_key_size(hcon))
7494 l2cap_start_connection(chan);7517 l2cap_start_connection(chan);
7495 else7518 else
7496 __set_chan_timer(chan, L2CAP_DISC_TIMEOUT);7519 __set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
@@ -7499,7 +7522,7 @@ static void l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt) · 2 unmodified lines
7499 struct l2cap_conn_rsp rsp;7522 struct l2cap_conn_rsp rsp;
7500 __u16 res, stat;7523 __u16 res, stat;
7501 7524
7502 if (!status) {7525 if (!status && l2cap_check_enc_key_size(hcon)) {
7503 if (test_bit(FLAG_DEFER_SETUP, &chan->flags)) {7526 if (test_bit(FLAG_DEFER_SETUP, &chan->flags)) {
7504 res = L2CAP_CR_PEND;7527 res = L2CAP_CR_PEND;
7505 stat = L2CAP_CS_AUTHOR_PEND;7528 stat = L2CAP_CS_AUTHOR_PEND;
net/ipv4/ip_output.c+21−4
@@ -327,18 +327,35 @@ static int ip_finish_output(struct net *net, struct sock *sk, struct sk_buff *sk · 326 unmodified lines
327static int ip_mc_finish_output(struct net *net, struct sock *sk,327static int ip_mc_finish_output(struct net *net, struct sock *sk,
328 struct sk_buff *skb)328 struct sk_buff *skb)
329{329{
330 int ret;330 struct rtable *new_rt;
331 bool do_cn = false;
332 int ret, err;
331 333
332 ret = BPF_CGROUP_RUN_PROG_INET_EGRESS(sk, skb);334 ret = BPF_CGROUP_RUN_PROG_INET_EGRESS(sk, skb);
333 switch (ret) {335 switch (ret) {
334 case NET_XMIT_SUCCESS:
335 return dev_loopback_xmit(net, sk, skb);
336 case NET_XMIT_CN:336 case NET_XMIT_CN:
337 return dev_loopback_xmit(net, sk, skb) ? : ret;337 do_cn = true;
338 /* fall through */
339 case NET_XMIT_SUCCESS:
340 break;
338 default:341 default:
339 kfree_skb(skb);342 kfree_skb(skb);
340 return ret;343 return ret;
341 }344 }
345
346 /* Reset rt_iif so that inet_iif() will return skb->skb_iif. Setting
347 * this to non-zero causes ipi_ifindex in in_pktinfo to be overwritten,
348 * see ipv4_pktinfo_prepare().
349 */
350 new_rt = rt_dst_clone(net->loopback_dev, skb_rtable(skb));
351 if (new_rt) {
352 new_rt->rt_iif = 0;
353 skb_dst_drop(skb);
354 skb_dst_set(skb, &new_rt->dst);
355 }
356
357 err = dev_loopback_xmit(net, sk, skb);
358 return (do_cn && err) ? ret : err;
342}359}
343 360
344int ip_mc_output(struct net *net, struct sock *sk, struct sk_buff *skb)361int ip_mc_output(struct net *net, struct sock *sk, struct sk_buff *skb)
net/ipv4/raw.c+1−1
@@ -197,7 +197,7 @@ static int raw_v4_input(struct sk_buff *skb, const struct iphdr *iph, int hash) · 196 unmodified lines
197 }197 }
198 sk = __raw_v4_lookup(net, sk_next(sk), iph->protocol,198 sk = __raw_v4_lookup(net, sk_next(sk), iph->protocol,
199 iph->saddr, iph->daddr,199 iph->saddr, iph->daddr,
200 skb->dev->ifindex, sdif);200 dif, sdif);
201 }201 }
202out:202out:
203 read_unlock(&raw_v4_hashinfo.lock);203 read_unlock(&raw_v4_hashinfo.lock);
net/ipv4/route.c+33−0
@@ -1648,6 +1648,39 @@ struct rtable *rt_dst_alloc(struct net_device *dev, · 1647 unmodified lines
1648}1648}
1649EXPORT_SYMBOL(rt_dst_alloc);1649EXPORT_SYMBOL(rt_dst_alloc);
1650 1650
1651struct rtable *rt_dst_clone(struct net_device *dev, struct rtable *rt)
1652{
1653 struct rtable *new_rt;
1654
1655 new_rt = dst_alloc(&ipv4_dst_ops, dev, 1, DST_OBSOLETE_FORCE_CHK,
1656 rt->dst.flags);
1657
1658 if (new_rt) {
1659 new_rt->rt_genid = rt_genid_ipv4(dev_net(dev));
1660 new_rt->rt_flags = rt->rt_flags;
1661 new_rt->rt_type = rt->rt_type;
1662 new_rt->rt_is_input = rt->rt_is_input;
1663 new_rt->rt_iif = rt->rt_iif;
1664 new_rt->rt_pmtu = rt->rt_pmtu;
1665 new_rt->rt_mtu_locked = rt->rt_mtu_locked;
1666 new_rt->rt_gw_family = rt->rt_gw_family;
1667 if (rt->rt_gw_family == AF_INET)
1668 new_rt->rt_gw4 = rt->rt_gw4;
1669 else if (rt->rt_gw_family == AF_INET6)
1670 new_rt->rt_gw6 = rt->rt_gw6;
1671 INIT_LIST_HEAD(&new_rt->rt_uncached);
1672
1673 new_rt->dst.flags |= DST_HOST;
1674 new_rt->dst.input = rt->dst.input;
1675 new_rt->dst.output = rt->dst.output;
1676 new_rt->dst.error = rt->dst.error;
1677 new_rt->dst.lastuse = jiffies;
1678 new_rt->dst.lwtstate = lwtstate_get(rt->dst.lwtstate);
1679 }
1680 return new_rt;
1681}
1682EXPORT_SYMBOL(rt_dst_clone);
1683
1651/* called in rcu_read_lock() section */1684/* called in rcu_read_lock() section */
1652int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,1685int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,
1653 u8 tos, struct net_device *dev,1686 u8 tos, struct net_device *dev,
net/ipv6/ip6_output.c+1−1
@@ -59,8 +59,8 @@ static int ip6_finish_output2(struct net *net, struct sock *sk, struct sk_buff * · 58 unmodified lines
59{59{
60 struct dst_entry *dst = skb_dst(skb);60 struct dst_entry *dst = skb_dst(skb);
61 struct net_device *dev = dst->dev;61 struct net_device *dev = dst->dev;
62 const struct in6_addr *nexthop;
62 struct neighbour *neigh;63 struct neighbour *neigh;
63 struct in6_addr *nexthop;
64 int ret;64 int ret;
65 65
66 if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {66 if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
net/ipv6/route.c+3−2
@@ -218,7 +218,8 @@ static struct neighbour *ip6_dst_neigh_lookup(const struct dst_entry *dst, · 217 unmodified lines
218{218{
219 const struct rt6_info *rt = container_of(dst, struct rt6_info, dst);219 const struct rt6_info *rt = container_of(dst, struct rt6_info, dst);
220 220
221 return ip6_neigh_lookup(&rt->rt6i_gateway, dst->dev, skb, daddr);221 return ip6_neigh_lookup(rt6_nexthop(rt, &in6addr_any),
222 dst->dev, skb, daddr);
222}223}
223 224
224static void ip6_confirm_neigh(const struct dst_entry *dst, const void *daddr)225static void ip6_confirm_neigh(const struct dst_entry *dst, const void *daddr)
@@ -6073,7 +6074,7 @@ static struct ctl_table ipv6_route_table_template[] = { · 5848 unmodified lines
6073 .data = &init_net.ipv6.sysctl.skip_notify_on_dev_down,6074 .data = &init_net.ipv6.sysctl.skip_notify_on_dev_down,
6074 .maxlen = sizeof(int),6075 .maxlen = sizeof(int),
6075 .mode = 0644,6076 .mode = 0644,
6076 .proc_handler = proc_dointvec,6077 .proc_handler = proc_dointvec_minmax,
6077 .extra1 = &zero,6078 .extra1 = &zero,
6078 .extra2 = &one,6079 .extra2 = &one,
6079 },6080 },
net/netfilter/nf_flow_table_ip.c+1−1
@@ -439,9 +439,9 @@ nf_flow_offload_ipv6_hook(void *priv, struct sk_buff *skb, · 438 unmodified lines
439 struct nf_flowtable *flow_table = priv;439 struct nf_flowtable *flow_table = priv;
440 struct flow_offload_tuple tuple = {};440 struct flow_offload_tuple tuple = {};
441 enum flow_offload_tuple_dir dir;441 enum flow_offload_tuple_dir dir;
442 const struct in6_addr *nexthop;
442 struct flow_offload *flow;443 struct flow_offload *flow;
443 struct net_device *outdev;444 struct net_device *outdev;
444 struct in6_addr *nexthop;
445 struct ipv6hdr *ip6h;445 struct ipv6hdr *ip6h;
446 struct rt6_info *rt;446 struct rt6_info *rt;
447 447
net/packet/af_packet.c+19−4
@@ -2412,6 +2412,9 @@ static void tpacket_destruct_skb(struct sk_buff *skb) · 2411 unmodified lines
2412 2412
2413 ts = __packet_set_timestamp(po, ph, skb);2413 ts = __packet_set_timestamp(po, ph, skb);
2414 __packet_set_status(po, ph, TP_STATUS_AVAILABLE | ts);2414 __packet_set_status(po, ph, TP_STATUS_AVAILABLE | ts);
2415
2416 if (!packet_read_pending(&po->tx_ring))
2417 complete(&po->skb_completion);
2415 }2418 }
2416 2419
2417 sock_wfree(skb);2420 sock_wfree(skb);
@@ -2596,7 +2599,7 @@ static int tpacket_parse_header(struct packet_sock *po, void *frame, · 178 unmodified lines
2596 2599
2597static int tpacket_snd(struct packet_sock *po, struct msghdr *msg)2600static int tpacket_snd(struct packet_sock *po, struct msghdr *msg)
2598{2601{
2599 struct sk_buff *skb;2602 struct sk_buff *skb = NULL;
2600 struct net_device *dev;2603 struct net_device *dev;
2601 struct virtio_net_hdr *vnet_hdr = NULL;2604 struct virtio_net_hdr *vnet_hdr = NULL;
2602 struct sockcm_cookie sockc;2605 struct sockcm_cookie sockc;
@@ -2611,6 +2614,7 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) · 8 unmodified lines
2611 int len_sum = 0;2614 int len_sum = 0;
2612 int status = TP_STATUS_AVAILABLE;2615 int status = TP_STATUS_AVAILABLE;
2613 int hlen, tlen, copylen = 0;2616 int hlen, tlen, copylen = 0;
2617 long timeo = 0;
2614 2618
2615 mutex_lock(&po->pg_vec_lock);2619 mutex_lock(&po->pg_vec_lock);
2616 2620
@@ -2657,12 +2661,21 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) · 40 unmodified lines
2657 if ((size_max > dev->mtu + reserve + VLAN_HLEN) && !po->has_vnet_hdr)2661 if ((size_max > dev->mtu + reserve + VLAN_HLEN) && !po->has_vnet_hdr)
2658 size_max = dev->mtu + reserve + VLAN_HLEN;2662 size_max = dev->mtu + reserve + VLAN_HLEN;
2659 2663
2664 reinit_completion(&po->skb_completion);
2665
2660 do {2666 do {
2661 ph = packet_current_frame(po, &po->tx_ring,2667 ph = packet_current_frame(po, &po->tx_ring,
2662 TP_STATUS_SEND_REQUEST);2668 TP_STATUS_SEND_REQUEST);
2663 if (unlikely(ph == NULL)) {2669 if (unlikely(ph == NULL)) {
2664 if (need_wait && need_resched())2670 if (need_wait && skb) {
2665 schedule();2671 timeo = sock_sndtimeo(&po->sk, msg->msg_flags & MSG_DONTWAIT);
2672 timeo = wait_for_completion_interruptible_timeout(&po->skb_completion, timeo);
2673 if (timeo <= 0) {
2674 err = !timeo ? -ETIMEDOUT : -ERESTARTSYS;
2675 goto out_put;
2676 }
2677 }
2678 /* check for additional frames */
2666 continue;2679 continue;
2667 }2680 }
2668 2681
@@ -3218,6 +3231,7 @@ static int packet_create(struct net *net, struct socket *sock, int protocol, · 549 unmodified lines
3218 sock_init_data(sock, sk);3231 sock_init_data(sock, sk);
3219 3232
3220 po = pkt_sk(sk);3233 po = pkt_sk(sk);
3234 init_completion(&po->skb_completion);
3221 sk->sk_family = PF_PACKET;3235 sk->sk_family = PF_PACKET;
3222 po->num = proto;3236 po->num = proto;
3223 po->xmit = dev_queue_xmit;3237 po->xmit = dev_queue_xmit;
@@ -4327,7 +4341,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, · 1103 unmodified lines
4327 req3->tp_sizeof_priv ||4341 req3->tp_sizeof_priv ||
4328 req3->tp_feature_req_word) {4342 req3->tp_feature_req_word) {
4329 err = -EINVAL;4343 err = -EINVAL;
4330 goto out;4344 goto out_free_pg_vec;
4331 }4345 }
4332 }4346 }
4333 break;4347 break;
@@ -4391,6 +4405,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, · 57 unmodified lines
4391 prb_shutdown_retire_blk_timer(po, rb_queue);4405 prb_shutdown_retire_blk_timer(po, rb_queue);
4392 }4406 }
4393 4407
4408out_free_pg_vec:
4394 if (pg_vec)4409 if (pg_vec)
4395 free_pg_vec(pg_vec, order, req->tp_block_nr);4410 free_pg_vec(pg_vec, order, req->tp_block_nr);
4396out:4411out:
net/packet/internal.h+1−0
@@ -128,6 +128,7 @@ struct packet_sock { · 127 unmodified lines
128 unsigned int tp_hdrlen;128 unsigned int tp_hdrlen;
129 unsigned int tp_reserve;129 unsigned int tp_reserve;
130 unsigned int tp_tstamp;130 unsigned int tp_tstamp;
131 struct completion skb_completion;
131 struct net_device __rcu *cached_dev;132 struct net_device __rcu *cached_dev;
132 int (*xmit)(struct sk_buff *skb);133 int (*xmit)(struct sk_buff *skb);
133 struct packet_type prot_hook ____cacheline_aligned_in_smp;134 struct packet_type prot_hook ____cacheline_aligned_in_smp;
net/sched/sch_cbs.c+7−2
@@ -549,12 +549,17 @@ static struct notifier_block cbs_device_notifier = { · 548 unmodified lines
549 549
550static int __init cbs_module_init(void)550static int __init cbs_module_init(void)
551{551{
552 int err = register_netdevice_notifier(&cbs_device_notifier);552 int err;
553 553
554 err = register_netdevice_notifier(&cbs_device_notifier);
554 if (err)555 if (err)
555 return err;556 return err;
556 557
557 return register_qdisc(&cbs_qdisc_ops);558 err = register_qdisc(&cbs_qdisc_ops);
559 if (err)
560 unregister_netdevice_notifier(&cbs_device_notifier);
561
562 return err;
558}563}
559 564
560static void __exit cbs_module_exit(void)565static void __exit cbs_module_exit(void)
net/sctp/endpointola.c+4−4
@@ -118,10 +118,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, · 117 unmodified lines
118 /* Initialize the bind addr area */118 /* Initialize the bind addr area */
119 sctp_bind_addr_init(&ep->base.bind_addr, 0);119 sctp_bind_addr_init(&ep->base.bind_addr, 0);
120 120
121 /* Remember who we are attached to. */
122 ep->base.sk = sk;
123 sock_hold(ep->base.sk);
124
125 /* Create the lists of associations. */121 /* Create the lists of associations. */
126 INIT_LIST_HEAD(&ep->asocs);122 INIT_LIST_HEAD(&ep->asocs);
127 123
@@ -154,6 +150,10 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, · 26 unmodified lines
154 ep->prsctp_enable = net->sctp.prsctp_enable;150 ep->prsctp_enable = net->sctp.prsctp_enable;
155 ep->reconf_enable = net->sctp.reconf_enable;151 ep->reconf_enable = net->sctp.reconf_enable;
156 152
153 /* Remember who we are attached to. */
154 ep->base.sk = sk;
155 sock_hold(ep->base.sk);
156
157 return ep;157 return ep;
158 158
159nomem_shkey:159nomem_shkey:
net/smc/af_smc.c+4−1
@@ -2020,7 +2020,7 @@ static int __init smc_init(void) · 2019 unmodified lines
2020 2020
2021 rc = smc_pnet_init();2021 rc = smc_pnet_init();
2022 if (rc)2022 if (rc)
2023 return rc;2023 goto out_pernet_subsys;
2024 2024
2025 rc = smc_llc_init();2025 rc = smc_llc_init();
2026 if (rc) {2026 if (rc) {
@@ -2071,6 +2071,9 @@ out_proto: · 44 unmodified lines
2071 proto_unregister(&smc_proto);2071 proto_unregister(&smc_proto);
2072out_pnet:2072out_pnet:
2073 smc_pnet_exit();2073 smc_pnet_exit();
2074out_pernet_subsys:
2075 unregister_pernet_subsys(&smc_net_ops);
2076
2074 return rc;2077 return rc;
2075}2078}
2076 2079
net/smc/smc_core.c+3−0
@@ -652,7 +652,10 @@ create: · 651 unmodified lines
652 rc = smc_lgr_create(smc, ini);652 rc = smc_lgr_create(smc, ini);
653 if (rc)653 if (rc)
654 goto out;654 goto out;
655 lgr = conn->lgr;
656 write_lock_bh(&lgr->conns_lock);
655 smc_lgr_register_conn(conn); /* add smc conn to lgr */657 smc_lgr_register_conn(conn); /* add smc conn to lgr */
658 write_unlock_bh(&lgr->conns_lock);
656 }659 }
657 conn->local_tx_ctrl.common.type = SMC_CDC_MSG_TYPE;660 conn->local_tx_ctrl.common.type = SMC_CDC_MSG_TYPE;
658 conn->local_tx_ctrl.len = SMC_WR_TX_SIZE;661 conn->local_tx_ctrl.len = SMC_WR_TX_SIZE;
net/tipc/core.c+6−6
@@ -134,7 +134,7 @@ static int __init tipc_init(void) · 133 unmodified lines
134 if (err)134 if (err)
135 goto out_sysctl;135 goto out_sysctl;
136 136
137 err = register_pernet_subsys(&tipc_net_ops);137 err = register_pernet_device(&tipc_net_ops);
138 if (err)138 if (err)
139 goto out_pernet;139 goto out_pernet;
140 140
@@ -142,7 +142,7 @@ static int __init tipc_init(void) · 1 unmodified line
142 if (err)142 if (err)
143 goto out_socket;143 goto out_socket;
144 144
145 err = register_pernet_subsys(&tipc_topsrv_net_ops);145 err = register_pernet_device(&tipc_topsrv_net_ops);
146 if (err)146 if (err)
147 goto out_pernet_topsrv;147 goto out_pernet_topsrv;
148 148
@@ -153,11 +153,11 @@ static int __init tipc_init(void) · 4 unmodified lines
153 pr_info("Started in single node mode\n");153 pr_info("Started in single node mode\n");
154 return 0;154 return 0;
155out_bearer:155out_bearer:
156 unregister_pernet_subsys(&tipc_topsrv_net_ops);156 unregister_pernet_device(&tipc_topsrv_net_ops);
157out_pernet_topsrv:157out_pernet_topsrv:
158 tipc_socket_stop();158 tipc_socket_stop();
159out_socket:159out_socket:
160 unregister_pernet_subsys(&tipc_net_ops);160 unregister_pernet_device(&tipc_net_ops);
161out_pernet:161out_pernet:
162 tipc_unregister_sysctl();162 tipc_unregister_sysctl();
163out_sysctl:163out_sysctl:
@@ -172,9 +172,9 @@ out_netlink: · 8 unmodified lines
172static void __exit tipc_exit(void)172static void __exit tipc_exit(void)
173{173{
174 tipc_bearer_cleanup();174 tipc_bearer_cleanup();
175 unregister_pernet_subsys(&tipc_topsrv_net_ops);175 unregister_pernet_device(&tipc_topsrv_net_ops);
176 tipc_socket_stop();176 tipc_socket_stop();
177 unregister_pernet_subsys(&tipc_net_ops);177 unregister_pernet_device(&tipc_net_ops);
178 tipc_netlink_stop();178 tipc_netlink_stop();
179 tipc_netlink_compat_stop();179 tipc_netlink_compat_stop();
180 tipc_unregister_sysctl();180 tipc_unregister_sysctl();
net/tipc/netlink_compat.c+15−3
@@ -445,7 +445,11 @@ static int tipc_nl_compat_bearer_disable(struct tipc_nl_compat_cmd_doit *cmd, · 444 unmodified lines
445 if (!bearer)445 if (!bearer)
446 return -EMSGSIZE;446 return -EMSGSIZE;
447 447
448 len = min_t(int, TLV_GET_DATA_LEN(msg->req), TIPC_MAX_BEARER_NAME);448 len = TLV_GET_DATA_LEN(msg->req);
449 if (len <= 0)
450 return -EINVAL;
451
452 len = min_t(int, len, TIPC_MAX_BEARER_NAME);
449 if (!string_is_valid(name, len))453 if (!string_is_valid(name, len))
450 return -EINVAL;454 return -EINVAL;
451 455
@@ -539,7 +543,11 @@ static int tipc_nl_compat_link_stat_dump(struct tipc_nl_compat_msg *msg, · 87 unmodified lines
539 543
540 name = (char *)TLV_DATA(msg->req);544 name = (char *)TLV_DATA(msg->req);
541 545
542 len = min_t(int, TLV_GET_DATA_LEN(msg->req), TIPC_MAX_LINK_NAME);546 len = TLV_GET_DATA_LEN(msg->req);
547 if (len <= 0)
548 return -EINVAL;
549
550 len = min_t(int, len, TIPC_MAX_BEARER_NAME);
543 if (!string_is_valid(name, len))551 if (!string_is_valid(name, len))
544 return -EINVAL;552 return -EINVAL;
545 553
@@ -807,7 +815,11 @@ static int tipc_nl_compat_link_reset_stats(struct tipc_nl_compat_cmd_doit *cmd, · 261 unmodified lines
807 if (!link)815 if (!link)
808 return -EMSGSIZE;816 return -EMSGSIZE;
809 817
810 len = min_t(int, TLV_GET_DATA_LEN(msg->req), TIPC_MAX_LINK_NAME);818 len = TLV_GET_DATA_LEN(msg->req);
819 if (len <= 0)
820 return -EINVAL;
821
822 len = min_t(int, len, TIPC_MAX_BEARER_NAME);
811 if (!string_is_valid(name, len))823 if (!string_is_valid(name, len))
812 return -EINVAL;824 return -EINVAL;
813 825
net/tls/tls_main.c+2−1
@@ -279,7 +279,8 @@ static void tls_sk_proto_close(struct sock *sk, long timeout) · 278 unmodified lines
279 goto skip_tx_cleanup;279 goto skip_tx_cleanup;
280 }280 }
281 281
282 if (!tls_complete_pending_work(sk, ctx, 0, &timeo))282 if (unlikely(sk->sk_write_pending) &&
283 !wait_on_pending_writer(sk, &timeo))
283 tls_handle_open_record(sk, 0);284 tls_handle_open_record(sk, 0);
284 285
285 /* We need these for tls_sw_fallback handling of other packets */286 /* We need these for tls_sw_fallback handling of other packets */
samples/pidfd/pidfd-metadata.c+6−2
@@ -83,7 +83,7 @@ static int pidfd_metadata_fd(pid_t pid, int pidfd) · 82 unmodified lines
83 83
84int main(int argc, char *argv[])84int main(int argc, char *argv[])
85{85{
86 int pidfd = 0, ret = EXIT_FAILURE;86 int pidfd = -1, ret = EXIT_FAILURE;
87 char buf[4096] = { 0 };87 char buf[4096] = { 0 };
88 pid_t pid;88 pid_t pid;
89 int procfd, statusfd;89 int procfd, statusfd;
@@ -91,7 +91,11 @@ int main(int argc, char *argv[]) · 1 unmodified line
91 91
92 pid = pidfd_clone(CLONE_PIDFD, &pidfd);92 pid = pidfd_clone(CLONE_PIDFD, &pidfd);
93 if (pid < 0)93 if (pid < 0)
94 exit(ret);94 err(ret, "CLONE_PIDFD");
95 if (pidfd == -1) {
96 warnx("CLONE_PIDFD is not supported by the kernel");
97 goto out;
98 }
95 99
96 procfd = pidfd_metadata_fd(pid, pidfd);100 procfd = pidfd_metadata_fd(pid, pidfd);
97 close(pidfd);101 close(pidfd);
tools/testing/selftests/powerpc/mm/.gitignore+2−1
@@ -3,4 +3,5 @@ subpage_prot · 2 unmodified lines
3tempfile3tempfile
4prot_sao4prot_sao
5segv_errors5segv_errors
6wild_bctr6wild_bctr
7large_vm_fork_separation
tools/testing/selftests/powerpc/mm/Makefile+3−1
@@ -2,7 +2,8 @@ · 1 unmodified line
2noarg:2noarg:
3 $(MAKE) -C ../3 $(MAKE) -C ../
4 4
5TEST_GEN_PROGS := hugetlb_vs_thp_test subpage_prot prot_sao segv_errors wild_bctr5TEST_GEN_PROGS := hugetlb_vs_thp_test subpage_prot prot_sao segv_errors wild_bctr \
6 large_vm_fork_separation
6TEST_GEN_FILES := tempfile7TEST_GEN_FILES := tempfile
7 8
8top_srcdir = ../../../../..9top_srcdir = ../../../../..
@@ -13,6 +14,7 @@ $(TEST_GEN_PROGS): ../harness.c · 4 unmodified lines
13$(OUTPUT)/prot_sao: ../utils.c14$(OUTPUT)/prot_sao: ../utils.c
14 15
15$(OUTPUT)/wild_bctr: CFLAGS += -m6416$(OUTPUT)/wild_bctr: CFLAGS += -m64
17$(OUTPUT)/large_vm_fork_separation: CFLAGS += -m64
16 18
17$(OUTPUT)/tempfile:19$(OUTPUT)/tempfile:
18 dd if=/dev/zero of=$@ bs=64k count=120 dd if=/dev/zero of=$@ bs=64k count=1
tools/testing/selftests/powerpc/mm/large_vm_fork_separation.c+87−0
@@ -0,0 +1,87 @@
1// SPDX-License-Identifier: GPL-2.0+
2//
3// Copyright 2019, Michael Ellerman, IBM Corp.
4//
5// Test that allocating memory beyond the memory limit and then forking is
6// handled correctly, ie. the child is able to access the mappings beyond the
7// memory limit and the child's writes are not visible to the parent.
8
9#include <stdio.h>
10#include <stdlib.h>
11#include <sys/mman.h>
12#include <sys/types.h>
13#include <sys/wait.h>
14#include <unistd.h>
15
16#include "utils.h"
17
18
19#ifndef MAP_FIXED_NOREPLACE
20#define MAP_FIXED_NOREPLACE MAP_FIXED // "Should be safe" above 512TB
21#endif
22
23
24static int test(void)
25{
26 int p2c[2], c2p[2], rc, status, c, *p;
27 unsigned long page_size;
28 pid_t pid;
29
30 page_size = sysconf(_SC_PAGESIZE);
31 SKIP_IF(page_size != 65536);
32
33 // Create a mapping at 512TB to allocate an extended_id
34 p = mmap((void *)(512ul << 40), page_size, PROT_READ | PROT_WRITE,
35 MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED_NOREPLACE, -1, 0);
36 if (p == MAP_FAILED) {
37 perror("mmap");
38 printf("Error: couldn't mmap(), confirm kernel has 4TB support?\n");
39 return 1;
40 }
41
42 printf("parent writing %p = 1\n", p);
43 *p = 1;
44
45 FAIL_IF(pipe(p2c) == -1 || pipe(c2p) == -1);
46
47 pid = fork();
48 if (pid == 0) {
49 FAIL_IF(read(p2c[0], &c, 1) != 1);
50
51 pid = getpid();
52 printf("child writing %p = %d\n", p, pid);
53 *p = pid;
54
55 FAIL_IF(write(c2p[1], &c, 1) != 1);
56 FAIL_IF(read(p2c[0], &c, 1) != 1);
57 exit(0);
58 }
59
60 c = 0;
61 FAIL_IF(write(p2c[1], &c, 1) != 1);
62 FAIL_IF(read(c2p[0], &c, 1) != 1);
63
64 // Prevent compiler optimisation
65 barrier();
66
67 rc = 0;
68 printf("parent reading %p = %d\n", p, *p);
69 if (*p != 1) {
70 printf("Error: BUG! parent saw child's write! *p = %d\n", *p);
71 rc = 1;
72 }
73
74 FAIL_IF(write(p2c[1], &c, 1) != 1);
75 FAIL_IF(waitpid(pid, &status, 0) == -1);
76 FAIL_IF(!WIFEXITED(status) || WEXITSTATUS(status));
77
78 if (rc == 0)
79 printf("success: test completed OK\n");
80
81 return rc;
82}
83
84int main(void)
85{
86 return test_harness(test, "large_vm_fork_separation");
87}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t