Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.14/0121-4.14.22-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3238 - (hide annotations) (download)
Fri Nov 9 12:14:58 2018 UTC (5 years, 7 months ago) by niro
File size: 165170 byte(s)
-added up to patches-4.14.79
1 niro 3238 diff --git a/Makefile b/Makefile
2     index 68d70485b088..03d41143900c 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 4
8     PATCHLEVEL = 14
9     -SUBLEVEL = 21
10     +SUBLEVEL = 22
11     EXTRAVERSION =
12     NAME = Petit Gorille
13    
14     diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
15     index e5b061469bf8..4714a59fd86d 100644
16     --- a/arch/arm/boot/dts/am4372.dtsi
17     +++ b/arch/arm/boot/dts/am4372.dtsi
18     @@ -927,7 +927,8 @@
19     reg = <0x48038000 0x2000>,
20     <0x46000000 0x400000>;
21     reg-names = "mpu", "dat";
22     - interrupts = <80>, <81>;
23     + interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
24     + <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
25     interrupt-names = "tx", "rx";
26     status = "disabled";
27     dmas = <&edma 8 2>,
28     @@ -941,7 +942,8 @@
29     reg = <0x4803C000 0x2000>,
30     <0x46400000 0x400000>;
31     reg-names = "mpu", "dat";
32     - interrupts = <82>, <83>;
33     + interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
34     + <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
35     interrupt-names = "tx", "rx";
36     status = "disabled";
37     dmas = <&edma 10 2>,
38     diff --git a/arch/arm/boot/dts/am437x-cm-t43.dts b/arch/arm/boot/dts/am437x-cm-t43.dts
39     index 9e92d480576b..3b9a94c274a7 100644
40     --- a/arch/arm/boot/dts/am437x-cm-t43.dts
41     +++ b/arch/arm/boot/dts/am437x-cm-t43.dts
42     @@ -301,8 +301,8 @@
43     status = "okay";
44     pinctrl-names = "default";
45     pinctrl-0 = <&spi0_pins>;
46     - dmas = <&edma 16
47     - &edma 17>;
48     + dmas = <&edma 16 0
49     + &edma 17 0>;
50     dma-names = "tx0", "rx0";
51    
52     flash: w25q64cvzpig@0 {
53     diff --git a/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts b/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
54     index 38faa90007d7..2fa5eb4bd402 100644
55     --- a/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
56     +++ b/arch/arm/boot/dts/logicpd-som-lv-37xx-devkit.dts
57     @@ -72,7 +72,8 @@
58     };
59    
60     &gpmc {
61     - ranges = <1 0 0x08000000 0x1000000>; /* CS1: 16MB for LAN9221 */
62     + ranges = <0 0 0x30000000 0x1000000 /* CS0: 16MB for NAND */
63     + 1 0 0x2c000000 0x1000000>; /* CS1: 16MB for LAN9221 */
64    
65     ethernet@gpmc {
66     pinctrl-names = "default";
67     diff --git a/arch/arm/boot/dts/logicpd-som-lv.dtsi b/arch/arm/boot/dts/logicpd-som-lv.dtsi
68     index 26cce4d18405..4f2c5ec75714 100644
69     --- a/arch/arm/boot/dts/logicpd-som-lv.dtsi
70     +++ b/arch/arm/boot/dts/logicpd-som-lv.dtsi
71     @@ -37,7 +37,7 @@
72     };
73    
74     &gpmc {
75     - ranges = <0 0 0x00000000 0x1000000>; /* CS0: 16MB for NAND */
76     + ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
77    
78     nand@0,0 {
79     compatible = "ti,omap2-nand";
80     @@ -121,7 +121,7 @@
81    
82     &mmc3 {
83     interrupts-extended = <&intc 94 &omap3_pmx_core2 0x46>;
84     - pinctrl-0 = <&mmc3_pins>;
85     + pinctrl-0 = <&mmc3_pins &wl127x_gpio>;
86     pinctrl-names = "default";
87     vmmc-supply = <&wl12xx_vmmc>;
88     non-removable;
89     @@ -132,8 +132,8 @@
90     wlcore: wlcore@2 {
91     compatible = "ti,wl1273";
92     reg = <2>;
93     - interrupt-parent = <&gpio5>;
94     - interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
95     + interrupt-parent = <&gpio1>;
96     + interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; /* gpio 2 */
97     ref-clock-frequency = <26000000>;
98     };
99     };
100     @@ -157,8 +157,6 @@
101     OMAP3_CORE1_IOPAD(0x2166, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat5.sdmmc3_dat1 */
102     OMAP3_CORE1_IOPAD(0x2168, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat6.sdmmc3_dat2 */
103     OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE3) /* sdmmc2_dat6.sdmmc3_dat3 */
104     - OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT_PULLUP | MUX_MODE4) /* mcbsp4_clkx.gpio_152 */
105     - OMAP3_CORE1_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
106     OMAP3_CORE1_IOPAD(0x21d0, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs1.sdmmc3_cmd */
107     OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs2.sdmmc_clk */
108     >;
109     @@ -228,6 +226,12 @@
110     OMAP3_WKUP_IOPAD(0x2a0e, PIN_OUTPUT | MUX_MODE4) /* sys_boot2.gpio_4 */
111     >;
112     };
113     + wl127x_gpio: pinmux_wl127x_gpio_pin {
114     + pinctrl-single,pins = <
115     + OMAP3_WKUP_IOPAD(0x2a0c, PIN_INPUT | MUX_MODE4) /* sys_boot0.gpio_2 */
116     + OMAP3_WKUP_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
117     + >;
118     + };
119     };
120    
121     &omap3_pmx_core2 {
122     diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
123     index 64d00f5893a6..28d10abd8b04 100644
124     --- a/arch/arm/boot/dts/omap4.dtsi
125     +++ b/arch/arm/boot/dts/omap4.dtsi
126     @@ -354,7 +354,7 @@
127     elm: elm@48078000 {
128     compatible = "ti,am3352-elm";
129     reg = <0x48078000 0x2000>;
130     - interrupts = <4>;
131     + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
132     ti,hwmods = "elm";
133     status = "disabled";
134     };
135     @@ -861,14 +861,12 @@
136     usbhsohci: ohci@4a064800 {
137     compatible = "ti,ohci-omap3";
138     reg = <0x4a064800 0x400>;
139     - interrupt-parent = <&gic>;
140     interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
141     };
142    
143     usbhsehci: ehci@4a064c00 {
144     compatible = "ti,ehci-omap";
145     reg = <0x4a064c00 0x400>;
146     - interrupt-parent = <&gic>;
147     interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
148     };
149     };
150     diff --git a/arch/arm/common/bL_switcher_dummy_if.c b/arch/arm/common/bL_switcher_dummy_if.c
151     index 4c10c6452678..f4dc1714a79e 100644
152     --- a/arch/arm/common/bL_switcher_dummy_if.c
153     +++ b/arch/arm/common/bL_switcher_dummy_if.c
154     @@ -57,3 +57,7 @@ static struct miscdevice bL_switcher_device = {
155     &bL_switcher_fops
156     };
157     module_misc_device(bL_switcher_device);
158     +
159     +MODULE_AUTHOR("Nicolas Pitre <nico@linaro.org>");
160     +MODULE_LICENSE("GPL v2");
161     +MODULE_DESCRIPTION("big.LITTLE switcher dummy user interface");
162     diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
163     index 5ac122e88f67..9ff92050053c 100644
164     --- a/arch/arm/mach-omap2/omap-secure.c
165     +++ b/arch/arm/mach-omap2/omap-secure.c
166     @@ -73,6 +73,25 @@ phys_addr_t omap_secure_ram_mempool_base(void)
167     return omap_secure_memblock_base;
168     }
169    
170     +u32 omap3_save_secure_ram(void __iomem *addr, int size)
171     +{
172     + u32 ret;
173     + u32 param[5];
174     +
175     + if (size != OMAP3_SAVE_SECURE_RAM_SZ)
176     + return OMAP3_SAVE_SECURE_RAM_SZ;
177     +
178     + param[0] = 4; /* Number of arguments */
179     + param[1] = __pa(addr); /* Physical address for saving */
180     + param[2] = 0;
181     + param[3] = 1;
182     + param[4] = 1;
183     +
184     + ret = save_secure_ram_context(__pa(param));
185     +
186     + return ret;
187     +}
188     +
189     /**
190     * rx51_secure_dispatcher: Routine to dispatch secure PPA API calls
191     * @idx: The PPA API index
192     diff --git a/arch/arm/mach-omap2/omap-secure.h b/arch/arm/mach-omap2/omap-secure.h
193     index bae263fba640..c509cde71f93 100644
194     --- a/arch/arm/mach-omap2/omap-secure.h
195     +++ b/arch/arm/mach-omap2/omap-secure.h
196     @@ -31,6 +31,8 @@
197     /* Maximum Secure memory storage size */
198     #define OMAP_SECURE_RAM_STORAGE (88 * SZ_1K)
199    
200     +#define OMAP3_SAVE_SECURE_RAM_SZ 0x803F
201     +
202     /* Secure low power HAL API index */
203     #define OMAP4_HAL_SAVESECURERAM_INDEX 0x1a
204     #define OMAP4_HAL_SAVEHW_INDEX 0x1b
205     @@ -65,6 +67,8 @@ extern u32 omap_smc2(u32 id, u32 falg, u32 pargs);
206     extern u32 omap_smc3(u32 id, u32 process, u32 flag, u32 pargs);
207     extern phys_addr_t omap_secure_ram_mempool_base(void);
208     extern int omap_secure_ram_reserve_memblock(void);
209     +extern u32 save_secure_ram_context(u32 args_pa);
210     +extern u32 omap3_save_secure_ram(void __iomem *save_regs, int size);
211    
212     extern u32 rx51_secure_dispatcher(u32 idx, u32 process, u32 flag, u32 nargs,
213     u32 arg1, u32 arg2, u32 arg3, u32 arg4);
214     diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
215     index b668719b9b25..8e30772cfe32 100644
216     --- a/arch/arm/mach-omap2/pm.h
217     +++ b/arch/arm/mach-omap2/pm.h
218     @@ -81,10 +81,6 @@ extern unsigned int omap3_do_wfi_sz;
219     /* ... and its pointer from SRAM after copy */
220     extern void (*omap3_do_wfi_sram)(void);
221    
222     -/* save_secure_ram_context function pointer and size, for copy to SRAM */
223     -extern int save_secure_ram_context(u32 *addr);
224     -extern unsigned int save_secure_ram_context_sz;
225     -
226     extern void omap3_save_scratchpad_contents(void);
227    
228     #define PM_RTA_ERRATUM_i608 (1 << 0)
229     diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
230     index 841ba19d64a6..36c55547137c 100644
231     --- a/arch/arm/mach-omap2/pm34xx.c
232     +++ b/arch/arm/mach-omap2/pm34xx.c
233     @@ -48,6 +48,7 @@
234     #include "prm3xxx.h"
235     #include "pm.h"
236     #include "sdrc.h"
237     +#include "omap-secure.h"
238     #include "sram.h"
239     #include "control.h"
240     #include "vc.h"
241     @@ -66,7 +67,6 @@ struct power_state {
242    
243     static LIST_HEAD(pwrst_list);
244    
245     -static int (*_omap_save_secure_sram)(u32 *addr);
246     void (*omap3_do_wfi_sram)(void);
247    
248     static struct powerdomain *mpu_pwrdm, *neon_pwrdm;
249     @@ -121,8 +121,8 @@ static void omap3_save_secure_ram_context(void)
250     * will hang the system.
251     */
252     pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON);
253     - ret = _omap_save_secure_sram((u32 *)(unsigned long)
254     - __pa(omap3_secure_ram_storage));
255     + ret = omap3_save_secure_ram(omap3_secure_ram_storage,
256     + OMAP3_SAVE_SECURE_RAM_SZ);
257     pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state);
258     /* Following is for error tracking, it should not happen */
259     if (ret) {
260     @@ -434,15 +434,10 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
261     *
262     * The minimum set of functions is pushed to SRAM for execution:
263     * - omap3_do_wfi for erratum i581 WA,
264     - * - save_secure_ram_context for security extensions.
265     */
266     void omap_push_sram_idle(void)
267     {
268     omap3_do_wfi_sram = omap_sram_push(omap3_do_wfi, omap3_do_wfi_sz);
269     -
270     - if (omap_type() != OMAP2_DEVICE_TYPE_GP)
271     - _omap_save_secure_sram = omap_sram_push(save_secure_ram_context,
272     - save_secure_ram_context_sz);
273     }
274    
275     static void __init pm_errata_configure(void)
276     @@ -553,7 +548,7 @@ int __init omap3_pm_init(void)
277     clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
278     if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
279     omap3_secure_ram_storage =
280     - kmalloc(0x803F, GFP_KERNEL);
281     + kmalloc(OMAP3_SAVE_SECURE_RAM_SZ, GFP_KERNEL);
282     if (!omap3_secure_ram_storage)
283     pr_err("Memory allocation failed when allocating for secure sram context\n");
284    
285     diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c
286     index d2c5bcabdbeb..ebaf80d72a10 100644
287     --- a/arch/arm/mach-omap2/prm33xx.c
288     +++ b/arch/arm/mach-omap2/prm33xx.c
289     @@ -176,17 +176,6 @@ static int am33xx_pwrdm_read_pwrst(struct powerdomain *pwrdm)
290     return v;
291     }
292    
293     -static int am33xx_pwrdm_read_prev_pwrst(struct powerdomain *pwrdm)
294     -{
295     - u32 v;
296     -
297     - v = am33xx_prm_read_reg(pwrdm->prcm_offs, pwrdm->pwrstst_offs);
298     - v &= AM33XX_LASTPOWERSTATEENTERED_MASK;
299     - v >>= AM33XX_LASTPOWERSTATEENTERED_SHIFT;
300     -
301     - return v;
302     -}
303     -
304     static int am33xx_pwrdm_set_lowpwrstchange(struct powerdomain *pwrdm)
305     {
306     am33xx_prm_rmw_reg_bits(AM33XX_LOWPOWERSTATECHANGE_MASK,
307     @@ -357,7 +346,6 @@ struct pwrdm_ops am33xx_pwrdm_operations = {
308     .pwrdm_set_next_pwrst = am33xx_pwrdm_set_next_pwrst,
309     .pwrdm_read_next_pwrst = am33xx_pwrdm_read_next_pwrst,
310     .pwrdm_read_pwrst = am33xx_pwrdm_read_pwrst,
311     - .pwrdm_read_prev_pwrst = am33xx_pwrdm_read_prev_pwrst,
312     .pwrdm_set_logic_retst = am33xx_pwrdm_set_logic_retst,
313     .pwrdm_read_logic_pwrst = am33xx_pwrdm_read_logic_pwrst,
314     .pwrdm_read_logic_retst = am33xx_pwrdm_read_logic_retst,
315     diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
316     index fa5fd24f524c..22daf4efed68 100644
317     --- a/arch/arm/mach-omap2/sleep34xx.S
318     +++ b/arch/arm/mach-omap2/sleep34xx.S
319     @@ -93,20 +93,13 @@ ENTRY(enable_omap3630_toggle_l2_on_restore)
320     ENDPROC(enable_omap3630_toggle_l2_on_restore)
321    
322     /*
323     - * Function to call rom code to save secure ram context. This gets
324     - * relocated to SRAM, so it can be all in .data section. Otherwise
325     - * we need to initialize api_params separately.
326     + * Function to call rom code to save secure ram context.
327     + *
328     + * r0 = physical address of the parameters
329     */
330     - .data
331     - .align 3
332     ENTRY(save_secure_ram_context)
333     stmfd sp!, {r4 - r11, lr} @ save registers on stack
334     - adr r3, api_params @ r3 points to parameters
335     - str r0, [r3,#0x4] @ r0 has sdram address
336     - ldr r12, high_mask
337     - and r3, r3, r12
338     - ldr r12, sram_phy_addr_mask
339     - orr r3, r3, r12
340     + mov r3, r0 @ physical address of parameters
341     mov r0, #25 @ set service ID for PPA
342     mov r12, r0 @ copy secure service ID in r12
343     mov r1, #0 @ set task id for ROM code in r1
344     @@ -120,18 +113,7 @@ ENTRY(save_secure_ram_context)
345     nop
346     nop
347     ldmfd sp!, {r4 - r11, pc}
348     - .align
349     -sram_phy_addr_mask:
350     - .word SRAM_BASE_P
351     -high_mask:
352     - .word 0xffff
353     -api_params:
354     - .word 0x4, 0x0, 0x0, 0x1, 0x1
355     ENDPROC(save_secure_ram_context)
356     -ENTRY(save_secure_ram_context_sz)
357     - .word . - save_secure_ram_context
358     -
359     - .text
360    
361     /*
362     * ======================
363     diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
364     index b99a27372965..da64e1cab233 100644
365     --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
366     +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
367     @@ -81,6 +81,7 @@
368     reg = <0x000>;
369     enable-method = "psci";
370     cpu-idle-states = <&CPU_SLEEP_0>;
371     + #cooling-cells = <2>;
372     };
373    
374     cpu1: cpu@1 {
375     @@ -97,6 +98,7 @@
376     reg = <0x100>;
377     enable-method = "psci";
378     cpu-idle-states = <&CPU_SLEEP_0>;
379     + #cooling-cells = <2>;
380     };
381    
382     cpu3: cpu@101 {
383     diff --git a/arch/m68k/kernel/vmlinux-nommu.lds b/arch/m68k/kernel/vmlinux-nommu.lds
384     index 3aa571a513b5..cf6edda38971 100644
385     --- a/arch/m68k/kernel/vmlinux-nommu.lds
386     +++ b/arch/m68k/kernel/vmlinux-nommu.lds
387     @@ -45,6 +45,8 @@ SECTIONS {
388     .text : {
389     HEAD_TEXT
390     TEXT_TEXT
391     + IRQENTRY_TEXT
392     + SOFTIRQENTRY_TEXT
393     SCHED_TEXT
394     CPUIDLE_TEXT
395     LOCK_TEXT
396     diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
397     index 89172b8974b9..625a5785804f 100644
398     --- a/arch/m68k/kernel/vmlinux-std.lds
399     +++ b/arch/m68k/kernel/vmlinux-std.lds
400     @@ -16,6 +16,8 @@ SECTIONS
401     .text : {
402     HEAD_TEXT
403     TEXT_TEXT
404     + IRQENTRY_TEXT
405     + SOFTIRQENTRY_TEXT
406     SCHED_TEXT
407     CPUIDLE_TEXT
408     LOCK_TEXT
409     diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
410     index 293990efc917..9868270b0984 100644
411     --- a/arch/m68k/kernel/vmlinux-sun3.lds
412     +++ b/arch/m68k/kernel/vmlinux-sun3.lds
413     @@ -16,6 +16,8 @@ SECTIONS
414     .text : {
415     HEAD_TEXT
416     TEXT_TEXT
417     + IRQENTRY_TEXT
418     + SOFTIRQENTRY_TEXT
419     SCHED_TEXT
420     CPUIDLE_TEXT
421     LOCK_TEXT
422     diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
423     index b4209a68b85d..fce545774d50 100644
424     --- a/arch/powerpc/perf/core-book3s.c
425     +++ b/arch/powerpc/perf/core-book3s.c
426     @@ -1419,7 +1419,7 @@ static int collect_events(struct perf_event *group, int max_count,
427     int n = 0;
428     struct perf_event *event;
429    
430     - if (!is_software_event(group)) {
431     + if (group->pmu->task_ctx_nr == perf_hw_context) {
432     if (n >= max_count)
433     return -1;
434     ctrs[n] = group;
435     @@ -1427,7 +1427,7 @@ static int collect_events(struct perf_event *group, int max_count,
436     events[n++] = group->hw.config;
437     }
438     list_for_each_entry(event, &group->sibling_list, group_entry) {
439     - if (!is_software_event(event) &&
440     + if (event->pmu->task_ctx_nr == perf_hw_context &&
441     event->state != PERF_EVENT_STATE_OFF) {
442     if (n >= max_count)
443     return -1;
444     diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
445     index cf64e16f92c2..da6ba9ba73ed 100644
446     --- a/arch/powerpc/perf/imc-pmu.c
447     +++ b/arch/powerpc/perf/imc-pmu.c
448     @@ -308,6 +308,19 @@ static int ppc_nest_imc_cpu_offline(unsigned int cpu)
449     if (!cpumask_test_and_clear_cpu(cpu, &nest_imc_cpumask))
450     return 0;
451    
452     + /*
453     + * Check whether nest_imc is registered. We could end up here if the
454     + * cpuhotplug callback registration fails. i.e, callback invokes the
455     + * offline path for all successfully registered nodes. At this stage,
456     + * nest_imc pmu will not be registered and we should return here.
457     + *
458     + * We return with a zero since this is not an offline failure. And
459     + * cpuhp_setup_state() returns the actual failure reason to the caller,
460     + * which in turn will call the cleanup routine.
461     + */
462     + if (!nest_pmus)
463     + return 0;
464     +
465     /*
466     * Now that this cpu is one of the designated,
467     * find a next cpu a) which is online and b) in same chip.
468     diff --git a/arch/s390/include/uapi/asm/virtio-ccw.h b/arch/s390/include/uapi/asm/virtio-ccw.h
469     index 967aad390105..9e62587d9472 100644
470     --- a/arch/s390/include/uapi/asm/virtio-ccw.h
471     +++ b/arch/s390/include/uapi/asm/virtio-ccw.h
472     @@ -1,4 +1,4 @@
473     -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
474     +/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
475     /*
476     * Definitions for virtio-ccw devices.
477     *
478     diff --git a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
479     index 1c3b7ceb36d2..e7273a606a07 100644
480     --- a/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
481     +++ b/arch/x86/crypto/twofish-x86_64-asm_64-3way.S
482     @@ -55,29 +55,31 @@
483     #define RAB1bl %bl
484     #define RAB2bl %cl
485    
486     +#define CD0 0x0(%rsp)
487     +#define CD1 0x8(%rsp)
488     +#define CD2 0x10(%rsp)
489     +
490     +# used only before/after all rounds
491     #define RCD0 %r8
492     #define RCD1 %r9
493     #define RCD2 %r10
494    
495     -#define RCD0d %r8d
496     -#define RCD1d %r9d
497     -#define RCD2d %r10d
498     -
499     -#define RX0 %rbp
500     -#define RX1 %r11
501     -#define RX2 %r12
502     +# used only during rounds
503     +#define RX0 %r8
504     +#define RX1 %r9
505     +#define RX2 %r10
506    
507     -#define RX0d %ebp
508     -#define RX1d %r11d
509     -#define RX2d %r12d
510     +#define RX0d %r8d
511     +#define RX1d %r9d
512     +#define RX2d %r10d
513    
514     -#define RY0 %r13
515     -#define RY1 %r14
516     -#define RY2 %r15
517     +#define RY0 %r11
518     +#define RY1 %r12
519     +#define RY2 %r13
520    
521     -#define RY0d %r13d
522     -#define RY1d %r14d
523     -#define RY2d %r15d
524     +#define RY0d %r11d
525     +#define RY1d %r12d
526     +#define RY2d %r13d
527    
528     #define RT0 %rdx
529     #define RT1 %rsi
530     @@ -85,6 +87,8 @@
531     #define RT0d %edx
532     #define RT1d %esi
533    
534     +#define RT1bl %sil
535     +
536     #define do16bit_ror(rot, op1, op2, T0, T1, tmp1, tmp2, ab, dst) \
537     movzbl ab ## bl, tmp2 ## d; \
538     movzbl ab ## bh, tmp1 ## d; \
539     @@ -92,6 +96,11 @@
540     op1##l T0(CTX, tmp2, 4), dst ## d; \
541     op2##l T1(CTX, tmp1, 4), dst ## d;
542    
543     +#define swap_ab_with_cd(ab, cd, tmp) \
544     + movq cd, tmp; \
545     + movq ab, cd; \
546     + movq tmp, ab;
547     +
548     /*
549     * Combined G1 & G2 function. Reordered with help of rotates to have moves
550     * at begining.
551     @@ -110,15 +119,15 @@
552     /* G1,2 && G2,2 */ \
553     do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 0, x ## 0); \
554     do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 0, y ## 0); \
555     - xchgq cd ## 0, ab ## 0; \
556     + swap_ab_with_cd(ab ## 0, cd ## 0, RT0); \
557     \
558     do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 1, x ## 1); \
559     do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 1, y ## 1); \
560     - xchgq cd ## 1, ab ## 1; \
561     + swap_ab_with_cd(ab ## 1, cd ## 1, RT0); \
562     \
563     do16bit_ror(32, xor, xor, Tx2, Tx3, RT0, RT1, ab ## 2, x ## 2); \
564     do16bit_ror(16, xor, xor, Ty3, Ty0, RT0, RT1, ab ## 2, y ## 2); \
565     - xchgq cd ## 2, ab ## 2;
566     + swap_ab_with_cd(ab ## 2, cd ## 2, RT0);
567    
568     #define enc_round_end(ab, x, y, n) \
569     addl y ## d, x ## d; \
570     @@ -168,6 +177,16 @@
571     decrypt_round3(ba, dc, (n*2)+1); \
572     decrypt_round3(ba, dc, (n*2));
573    
574     +#define push_cd() \
575     + pushq RCD2; \
576     + pushq RCD1; \
577     + pushq RCD0;
578     +
579     +#define pop_cd() \
580     + popq RCD0; \
581     + popq RCD1; \
582     + popq RCD2;
583     +
584     #define inpack3(in, n, xy, m) \
585     movq 4*(n)(in), xy ## 0; \
586     xorq w+4*m(CTX), xy ## 0; \
587     @@ -223,11 +242,8 @@ ENTRY(__twofish_enc_blk_3way)
588     * %rdx: src, RIO
589     * %rcx: bool, if true: xor output
590     */
591     - pushq %r15;
592     - pushq %r14;
593     pushq %r13;
594     pushq %r12;
595     - pushq %rbp;
596     pushq %rbx;
597    
598     pushq %rcx; /* bool xor */
599     @@ -235,40 +251,36 @@ ENTRY(__twofish_enc_blk_3way)
600    
601     inpack_enc3();
602    
603     - encrypt_cycle3(RAB, RCD, 0);
604     - encrypt_cycle3(RAB, RCD, 1);
605     - encrypt_cycle3(RAB, RCD, 2);
606     - encrypt_cycle3(RAB, RCD, 3);
607     - encrypt_cycle3(RAB, RCD, 4);
608     - encrypt_cycle3(RAB, RCD, 5);
609     - encrypt_cycle3(RAB, RCD, 6);
610     - encrypt_cycle3(RAB, RCD, 7);
611     + push_cd();
612     + encrypt_cycle3(RAB, CD, 0);
613     + encrypt_cycle3(RAB, CD, 1);
614     + encrypt_cycle3(RAB, CD, 2);
615     + encrypt_cycle3(RAB, CD, 3);
616     + encrypt_cycle3(RAB, CD, 4);
617     + encrypt_cycle3(RAB, CD, 5);
618     + encrypt_cycle3(RAB, CD, 6);
619     + encrypt_cycle3(RAB, CD, 7);
620     + pop_cd();
621    
622     popq RIO; /* dst */
623     - popq %rbp; /* bool xor */
624     + popq RT1; /* bool xor */
625    
626     - testb %bpl, %bpl;
627     + testb RT1bl, RT1bl;
628     jnz .L__enc_xor3;
629    
630     outunpack_enc3(mov);
631    
632     popq %rbx;
633     - popq %rbp;
634     popq %r12;
635     popq %r13;
636     - popq %r14;
637     - popq %r15;
638     ret;
639    
640     .L__enc_xor3:
641     outunpack_enc3(xor);
642    
643     popq %rbx;
644     - popq %rbp;
645     popq %r12;
646     popq %r13;
647     - popq %r14;
648     - popq %r15;
649     ret;
650     ENDPROC(__twofish_enc_blk_3way)
651    
652     @@ -278,35 +290,31 @@ ENTRY(twofish_dec_blk_3way)
653     * %rsi: dst
654     * %rdx: src, RIO
655     */
656     - pushq %r15;
657     - pushq %r14;
658     pushq %r13;
659     pushq %r12;
660     - pushq %rbp;
661     pushq %rbx;
662    
663     pushq %rsi; /* dst */
664    
665     inpack_dec3();
666    
667     - decrypt_cycle3(RAB, RCD, 7);
668     - decrypt_cycle3(RAB, RCD, 6);
669     - decrypt_cycle3(RAB, RCD, 5);
670     - decrypt_cycle3(RAB, RCD, 4);
671     - decrypt_cycle3(RAB, RCD, 3);
672     - decrypt_cycle3(RAB, RCD, 2);
673     - decrypt_cycle3(RAB, RCD, 1);
674     - decrypt_cycle3(RAB, RCD, 0);
675     + push_cd();
676     + decrypt_cycle3(RAB, CD, 7);
677     + decrypt_cycle3(RAB, CD, 6);
678     + decrypt_cycle3(RAB, CD, 5);
679     + decrypt_cycle3(RAB, CD, 4);
680     + decrypt_cycle3(RAB, CD, 3);
681     + decrypt_cycle3(RAB, CD, 2);
682     + decrypt_cycle3(RAB, CD, 1);
683     + decrypt_cycle3(RAB, CD, 0);
684     + pop_cd();
685    
686     popq RIO; /* dst */
687    
688     outunpack_dec3();
689    
690     popq %rbx;
691     - popq %rbp;
692     popq %r12;
693     popq %r13;
694     - popq %r14;
695     - popq %r15;
696     ret;
697     ENDPROC(twofish_dec_blk_3way)
698     diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
699     index dd35c6c50516..5ffde16253cb 100644
700     --- a/arch/x86/kvm/vmx.c
701     +++ b/arch/x86/kvm/vmx.c
702     @@ -6950,7 +6950,6 @@ static __init int hardware_setup(void)
703     goto out;
704     }
705    
706     - vmx_io_bitmap_b = (unsigned long *)__get_free_page(GFP_KERNEL);
707     memset(vmx_vmread_bitmap, 0xff, PAGE_SIZE);
708     memset(vmx_vmwrite_bitmap, 0xff, PAGE_SIZE);
709    
710     diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
711     index f97358423f9c..0dcd7bf45dc1 100644
712     --- a/arch/x86/kvm/x86.c
713     +++ b/arch/x86/kvm/x86.c
714     @@ -2926,6 +2926,12 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
715     kvm_x86_ops->vcpu_put(vcpu);
716     kvm_put_guest_fpu(vcpu);
717     vcpu->arch.last_host_tsc = rdtsc();
718     + /*
719     + * If userspace has set any breakpoints or watchpoints, dr6 is restored
720     + * on every vmexit, but if not, we might have a stale dr6 from the
721     + * guest. do_debug expects dr6 to be cleared after it runs, do the same.
722     + */
723     + set_debugreg(0, 6);
724     }
725    
726     static int kvm_vcpu_ioctl_get_lapic(struct kvm_vcpu *vcpu,
727     @@ -7474,6 +7480,29 @@ int kvm_task_switch(struct kvm_vcpu *vcpu, u16 tss_selector, int idt_index,
728     }
729     EXPORT_SYMBOL_GPL(kvm_task_switch);
730    
731     +int kvm_valid_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs)
732     +{
733     + if ((sregs->efer & EFER_LME) && (sregs->cr0 & X86_CR0_PG_BIT)) {
734     + /*
735     + * When EFER.LME and CR0.PG are set, the processor is in
736     + * 64-bit mode (though maybe in a 32-bit code segment).
737     + * CR4.PAE and EFER.LMA must be set.
738     + */
739     + if (!(sregs->cr4 & X86_CR4_PAE_BIT)
740     + || !(sregs->efer & EFER_LMA))
741     + return -EINVAL;
742     + } else {
743     + /*
744     + * Not in 64-bit mode: EFER.LMA is clear and the code
745     + * segment cannot be 64-bit.
746     + */
747     + if (sregs->efer & EFER_LMA || sregs->cs.l)
748     + return -EINVAL;
749     + }
750     +
751     + return 0;
752     +}
753     +
754     int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
755     struct kvm_sregs *sregs)
756     {
757     @@ -7486,6 +7515,9 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
758     (sregs->cr4 & X86_CR4_OSXSAVE))
759     return -EINVAL;
760    
761     + if (kvm_valid_sregs(vcpu, sregs))
762     + return -EINVAL;
763     +
764     apic_base_msr.data = sregs->apic_base;
765     apic_base_msr.host_initiated = true;
766     if (kvm_set_apic_base(vcpu, &apic_base_msr))
767     diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
768     index bb120e59c597..7bebdd0273d3 100644
769     --- a/arch/x86/mm/ioremap.c
770     +++ b/arch/x86/mm/ioremap.c
771     @@ -349,11 +349,11 @@ void iounmap(volatile void __iomem *addr)
772     return;
773     }
774    
775     + mmiotrace_iounmap(addr);
776     +
777     addr = (volatile void __iomem *)
778     (PAGE_MASK & (unsigned long __force)addr);
779    
780     - mmiotrace_iounmap(addr);
781     -
782     /* Use the vm area unlocked, assuming the caller
783     ensures there isn't another iounmap for the same address
784     in parallel. Reuse of the virtual address is prevented by
785     diff --git a/arch/x86/mm/kmmio.c b/arch/x86/mm/kmmio.c
786     index aa44c3aa4cd5..7c8686709636 100644
787     --- a/arch/x86/mm/kmmio.c
788     +++ b/arch/x86/mm/kmmio.c
789     @@ -435,17 +435,18 @@ int register_kmmio_probe(struct kmmio_probe *p)
790     unsigned long flags;
791     int ret = 0;
792     unsigned long size = 0;
793     + unsigned long addr = p->addr & PAGE_MASK;
794     const unsigned long size_lim = p->len + (p->addr & ~PAGE_MASK);
795     unsigned int l;
796     pte_t *pte;
797    
798     spin_lock_irqsave(&kmmio_lock, flags);
799     - if (get_kmmio_probe(p->addr)) {
800     + if (get_kmmio_probe(addr)) {
801     ret = -EEXIST;
802     goto out;
803     }
804    
805     - pte = lookup_address(p->addr, &l);
806     + pte = lookup_address(addr, &l);
807     if (!pte) {
808     ret = -EINVAL;
809     goto out;
810     @@ -454,7 +455,7 @@ int register_kmmio_probe(struct kmmio_probe *p)
811     kmmio_count++;
812     list_add_rcu(&p->list, &kmmio_probes);
813     while (size < size_lim) {
814     - if (add_kmmio_fault_page(p->addr + size))
815     + if (add_kmmio_fault_page(addr + size))
816     pr_err("Unable to set page fault.\n");
817     size += page_level_size(l);
818     }
819     @@ -528,19 +529,20 @@ void unregister_kmmio_probe(struct kmmio_probe *p)
820     {
821     unsigned long flags;
822     unsigned long size = 0;
823     + unsigned long addr = p->addr & PAGE_MASK;
824     const unsigned long size_lim = p->len + (p->addr & ~PAGE_MASK);
825     struct kmmio_fault_page *release_list = NULL;
826     struct kmmio_delayed_release *drelease;
827     unsigned int l;
828     pte_t *pte;
829    
830     - pte = lookup_address(p->addr, &l);
831     + pte = lookup_address(addr, &l);
832     if (!pte)
833     return;
834    
835     spin_lock_irqsave(&kmmio_lock, flags);
836     while (size < size_lim) {
837     - release_kmmio_fault_page(p->addr + size, &release_list);
838     + release_kmmio_fault_page(addr + size, &release_list);
839     size += page_level_size(l);
840     }
841     list_del_rcu(&p->list);
842     diff --git a/block/blk-map.c b/block/blk-map.c
843     index 368daa02714e..e31be14da8ea 100644
844     --- a/block/blk-map.c
845     +++ b/block/blk-map.c
846     @@ -126,7 +126,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
847     unsigned long align = q->dma_pad_mask | queue_dma_alignment(q);
848     struct bio *bio = NULL;
849     struct iov_iter i;
850     - int ret;
851     + int ret = -EINVAL;
852    
853     if (!iter_is_iovec(iter))
854     goto fail;
855     @@ -155,7 +155,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
856     __blk_rq_unmap_user(bio);
857     fail:
858     rq->bio = NULL;
859     - return -EINVAL;
860     + return ret;
861     }
862     EXPORT_SYMBOL(blk_rq_map_user_iov);
863    
864     diff --git a/drivers/Makefile b/drivers/Makefile
865     index d242d3514d30..5f5ccdbad21a 100644
866     --- a/drivers/Makefile
867     +++ b/drivers/Makefile
868     @@ -105,6 +105,7 @@ obj-$(CONFIG_TC) += tc/
869     obj-$(CONFIG_UWB) += uwb/
870     obj-$(CONFIG_USB_PHY) += usb/
871     obj-$(CONFIG_USB) += usb/
872     +obj-$(CONFIG_USB_SUPPORT) += usb/
873     obj-$(CONFIG_PCI) += usb/
874     obj-$(CONFIG_USB_GADGET) += usb/
875     obj-$(CONFIG_OF) += usb/
876     diff --git a/drivers/android/binder.c b/drivers/android/binder.c
877     index 2ef8bd29e188..b7efdc8badee 100644
878     --- a/drivers/android/binder.c
879     +++ b/drivers/android/binder.c
880     @@ -1933,8 +1933,14 @@ static void binder_send_failed_reply(struct binder_transaction *t,
881     &target_thread->todo);
882     wake_up_interruptible(&target_thread->wait);
883     } else {
884     - WARN(1, "Unexpected reply error: %u\n",
885     - target_thread->reply_error.cmd);
886     + /*
887     + * Cannot get here for normal operation, but
888     + * we can if multiple synchronous transactions
889     + * are sent without blocking for responses.
890     + * Just ignore the 2nd error in this case.
891     + */
892     + pr_warn("Unexpected reply error: %u\n",
893     + target_thread->reply_error.cmd);
894     }
895     binder_inner_proc_unlock(target_thread->proc);
896     binder_thread_dec_tmpref(target_thread);
897     @@ -2135,7 +2141,7 @@ static void binder_transaction_buffer_release(struct binder_proc *proc,
898     int debug_id = buffer->debug_id;
899    
900     binder_debug(BINDER_DEBUG_TRANSACTION,
901     - "%d buffer release %d, size %zd-%zd, failed at %p\n",
902     + "%d buffer release %d, size %zd-%zd, failed at %pK\n",
903     proc->pid, buffer->debug_id,
904     buffer->data_size, buffer->offsets_size, failed_at);
905    
906     @@ -3647,7 +3653,7 @@ static int binder_thread_write(struct binder_proc *proc,
907     }
908     }
909     binder_debug(BINDER_DEBUG_DEAD_BINDER,
910     - "%d:%d BC_DEAD_BINDER_DONE %016llx found %p\n",
911     + "%d:%d BC_DEAD_BINDER_DONE %016llx found %pK\n",
912     proc->pid, thread->pid, (u64)cookie,
913     death);
914     if (death == NULL) {
915     @@ -4316,6 +4322,15 @@ static int binder_thread_release(struct binder_proc *proc,
916    
917     binder_inner_proc_unlock(thread->proc);
918    
919     + /*
920     + * This is needed to avoid races between wake_up_poll() above and
921     + * and ep_remove_waitqueue() called for other reasons (eg the epoll file
922     + * descriptor being closed); ep_remove_waitqueue() holds an RCU read
923     + * lock, so we can be sure it's done after calling synchronize_rcu().
924     + */
925     + if (thread->looper & BINDER_LOOPER_STATE_POLL)
926     + synchronize_rcu();
927     +
928     if (send_reply)
929     binder_send_failed_reply(send_reply, BR_DEAD_REPLY);
930     binder_release_work(proc, &thread->todo);
931     @@ -4331,6 +4346,8 @@ static unsigned int binder_poll(struct file *filp,
932     bool wait_for_proc_work;
933    
934     thread = binder_get_thread(proc);
935     + if (!thread)
936     + return POLLERR;
937    
938     binder_inner_proc_lock(thread->proc);
939     thread->looper |= BINDER_LOOPER_STATE_POLL;
940     @@ -4974,7 +4991,7 @@ static void print_binder_transaction_ilocked(struct seq_file *m,
941     spin_lock(&t->lock);
942     to_proc = t->to_proc;
943     seq_printf(m,
944     - "%s %d: %p from %d:%d to %d:%d code %x flags %x pri %ld r%d",
945     + "%s %d: %pK from %d:%d to %d:%d code %x flags %x pri %ld r%d",
946     prefix, t->debug_id, t,
947     t->from ? t->from->proc->pid : 0,
948     t->from ? t->from->pid : 0,
949     @@ -4998,7 +5015,7 @@ static void print_binder_transaction_ilocked(struct seq_file *m,
950     }
951     if (buffer->target_node)
952     seq_printf(m, " node %d", buffer->target_node->debug_id);
953     - seq_printf(m, " size %zd:%zd data %p\n",
954     + seq_printf(m, " size %zd:%zd data %pK\n",
955     buffer->data_size, buffer->offsets_size,
956     buffer->data);
957     }
958     diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
959     index 7bcf80fa9ada..b2b1eece0db1 100644
960     --- a/drivers/base/power/runtime.c
961     +++ b/drivers/base/power/runtime.c
962     @@ -276,7 +276,8 @@ static int rpm_get_suppliers(struct device *dev)
963     continue;
964    
965     retval = pm_runtime_get_sync(link->supplier);
966     - if (retval < 0) {
967     + /* Ignore suppliers with disabled runtime PM. */
968     + if (retval < 0 && retval != -EACCES) {
969     pm_runtime_put_noidle(link->supplier);
970     return retval;
971     }
972     diff --git a/drivers/crypto/s5p-sss.c b/drivers/crypto/s5p-sss.c
973     index 7ac657f46d15..aec66159566d 100644
974     --- a/drivers/crypto/s5p-sss.c
975     +++ b/drivers/crypto/s5p-sss.c
976     @@ -601,15 +601,21 @@ static void s5p_aes_crypt_start(struct s5p_aes_dev *dev, unsigned long mode)
977     uint32_t aes_control;
978     unsigned long flags;
979     int err;
980     + u8 *iv;
981    
982     aes_control = SSS_AES_KEY_CHANGE_MODE;
983     if (mode & FLAGS_AES_DECRYPT)
984     aes_control |= SSS_AES_MODE_DECRYPT;
985    
986     - if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CBC)
987     + if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CBC) {
988     aes_control |= SSS_AES_CHAIN_MODE_CBC;
989     - else if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CTR)
990     + iv = req->info;
991     + } else if ((mode & FLAGS_AES_MODE_MASK) == FLAGS_AES_CTR) {
992     aes_control |= SSS_AES_CHAIN_MODE_CTR;
993     + iv = req->info;
994     + } else {
995     + iv = NULL; /* AES_ECB */
996     + }
997    
998     if (dev->ctx->keylen == AES_KEYSIZE_192)
999     aes_control |= SSS_AES_KEY_SIZE_192;
1000     @@ -640,7 +646,7 @@ static void s5p_aes_crypt_start(struct s5p_aes_dev *dev, unsigned long mode)
1001     goto outdata_error;
1002    
1003     SSS_AES_WRITE(dev, AES_CONTROL, aes_control);
1004     - s5p_set_aes(dev, dev->ctx->aes_key, req->info, dev->ctx->keylen);
1005     + s5p_set_aes(dev, dev->ctx->aes_key, iv, dev->ctx->keylen);
1006    
1007     s5p_set_dma_indata(dev, dev->sg_src);
1008     s5p_set_dma_outdata(dev, dev->sg_dst);
1009     diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
1010     index a19b5d0300a9..ceae25112acd 100644
1011     --- a/drivers/crypto/talitos.c
1012     +++ b/drivers/crypto/talitos.c
1013     @@ -1124,6 +1124,11 @@ int talitos_sg_map(struct device *dev, struct scatterlist *src,
1014     struct talitos_private *priv = dev_get_drvdata(dev);
1015     bool is_sec1 = has_ftr_sec1(priv);
1016    
1017     + if (!src) {
1018     + *ptr = zero_entry;
1019     + return 1;
1020     + }
1021     +
1022     to_talitos_ptr_len(ptr, len, is_sec1);
1023     to_talitos_ptr_ext_set(ptr, 0, is_sec1);
1024    
1025     diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
1026     index fbab271b3bf9..a861b5b4d443 100644
1027     --- a/drivers/dma/at_hdmac.c
1028     +++ b/drivers/dma/at_hdmac.c
1029     @@ -708,7 +708,7 @@ atc_prep_dma_interleaved(struct dma_chan *chan,
1030     unsigned long flags)
1031     {
1032     struct at_dma_chan *atchan = to_at_dma_chan(chan);
1033     - struct data_chunk *first = xt->sgl;
1034     + struct data_chunk *first;
1035     struct at_desc *desc = NULL;
1036     size_t xfer_count;
1037     unsigned int dwidth;
1038     @@ -720,6 +720,8 @@ atc_prep_dma_interleaved(struct dma_chan *chan,
1039     if (unlikely(!xt || xt->numf != 1 || !xt->frame_size))
1040     return NULL;
1041    
1042     + first = xt->sgl;
1043     +
1044     dev_info(chan2dev(chan),
1045     "%s: src=%pad, dest=%pad, numf=%d, frame_size=%d, flags=0x%lx\n",
1046     __func__, &xt->src_start, &xt->dst_start, xt->numf,
1047     diff --git a/drivers/dma/dma-jz4740.c b/drivers/dma/dma-jz4740.c
1048     index d50273fed715..afd5e10f8927 100644
1049     --- a/drivers/dma/dma-jz4740.c
1050     +++ b/drivers/dma/dma-jz4740.c
1051     @@ -555,7 +555,7 @@ static int jz4740_dma_probe(struct platform_device *pdev)
1052    
1053     ret = dma_async_device_register(dd);
1054     if (ret)
1055     - return ret;
1056     + goto err_clk;
1057    
1058     irq = platform_get_irq(pdev, 0);
1059     ret = request_irq(irq, jz4740_dma_irq, 0, dev_name(&pdev->dev), dmadev);
1060     @@ -568,6 +568,8 @@ static int jz4740_dma_probe(struct platform_device *pdev)
1061    
1062     err_unregister:
1063     dma_async_device_unregister(dd);
1064     +err_clk:
1065     + clk_disable_unprepare(dmadev->clk);
1066     return ret;
1067     }
1068    
1069     diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
1070     index 93e006c3441d..854deb0da07c 100644
1071     --- a/drivers/dma/ioat/init.c
1072     +++ b/drivers/dma/ioat/init.c
1073     @@ -390,7 +390,7 @@ static int ioat_dma_self_test(struct ioatdma_device *ioat_dma)
1074     if (memcmp(src, dest, IOAT_TEST_SIZE)) {
1075     dev_err(dev, "Self-test copy failed compare, disabling\n");
1076     err = -ENODEV;
1077     - goto free_resources;
1078     + goto unmap_dma;
1079     }
1080    
1081     unmap_dma:
1082     diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c
1083     index 6b535ec858cc..15a1f4b348c4 100644
1084     --- a/drivers/gpio/gpio-74x164.c
1085     +++ b/drivers/gpio/gpio-74x164.c
1086     @@ -23,6 +23,7 @@
1087     struct gen_74x164_chip {
1088     struct gpio_chip gpio_chip;
1089     struct mutex lock;
1090     + struct gpio_desc *gpiod_oe;
1091     u32 registers;
1092     /*
1093     * Since the registers are chained, every byte sent will make
1094     @@ -31,8 +32,7 @@ struct gen_74x164_chip {
1095     * register at the end of the transfer. So, to have a logical
1096     * numbering, store the bytes in reverse order.
1097     */
1098     - u8 buffer[0];
1099     - struct gpio_desc *gpiod_oe;
1100     + u8 buffer[];
1101     };
1102    
1103     static int __gen_74x164_write_config(struct gen_74x164_chip *chip)
1104     diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
1105     index f75d8443ecaf..e4b3d7db68c9 100644
1106     --- a/drivers/gpio/gpio-davinci.c
1107     +++ b/drivers/gpio/gpio-davinci.c
1108     @@ -383,7 +383,7 @@ static int gpio_irq_type_unbanked(struct irq_data *data, unsigned trigger)
1109     u32 mask;
1110    
1111     d = (struct davinci_gpio_controller *)irq_data_get_irq_handler_data(data);
1112     - g = (struct davinci_gpio_regs __iomem *)d->regs;
1113     + g = (struct davinci_gpio_regs __iomem *)d->regs[0];
1114     mask = __gpio_mask(data->irq - d->base_irq);
1115    
1116     if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
1117     diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
1118     index 2a4d163ac76f..79ce877bf45f 100644
1119     --- a/drivers/gpu/drm/armada/armada_crtc.c
1120     +++ b/drivers/gpu/drm/armada/armada_crtc.c
1121     @@ -1225,17 +1225,13 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
1122    
1123     ret = devm_request_irq(dev, irq, armada_drm_irq, 0, "armada_drm_crtc",
1124     dcrtc);
1125     - if (ret < 0) {
1126     - kfree(dcrtc);
1127     - return ret;
1128     - }
1129     + if (ret < 0)
1130     + goto err_crtc;
1131    
1132     if (dcrtc->variant->init) {
1133     ret = dcrtc->variant->init(dcrtc, dev);
1134     - if (ret) {
1135     - kfree(dcrtc);
1136     - return ret;
1137     - }
1138     + if (ret)
1139     + goto err_crtc;
1140     }
1141    
1142     /* Ensure AXI pipeline is enabled */
1143     @@ -1246,13 +1242,15 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
1144     dcrtc->crtc.port = port;
1145    
1146     primary = kzalloc(sizeof(*primary), GFP_KERNEL);
1147     - if (!primary)
1148     - return -ENOMEM;
1149     + if (!primary) {
1150     + ret = -ENOMEM;
1151     + goto err_crtc;
1152     + }
1153    
1154     ret = armada_drm_plane_init(primary);
1155     if (ret) {
1156     kfree(primary);
1157     - return ret;
1158     + goto err_crtc;
1159     }
1160    
1161     ret = drm_universal_plane_init(drm, &primary->base, 0,
1162     @@ -1263,7 +1261,7 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
1163     DRM_PLANE_TYPE_PRIMARY, NULL);
1164     if (ret) {
1165     kfree(primary);
1166     - return ret;
1167     + goto err_crtc;
1168     }
1169    
1170     ret = drm_crtc_init_with_planes(drm, &dcrtc->crtc, &primary->base, NULL,
1171     @@ -1282,6 +1280,9 @@ static int armada_drm_crtc_create(struct drm_device *drm, struct device *dev,
1172    
1173     err_crtc_init:
1174     primary->base.funcs->destroy(&primary->base);
1175     +err_crtc:
1176     + kfree(dcrtc);
1177     +
1178     return ret;
1179     }
1180    
1181     diff --git a/drivers/gpu/drm/drm_modeset_lock.c b/drivers/gpu/drm/drm_modeset_lock.c
1182     index af4e906c630d..56b9f9b1c3ae 100644
1183     --- a/drivers/gpu/drm/drm_modeset_lock.c
1184     +++ b/drivers/gpu/drm/drm_modeset_lock.c
1185     @@ -88,7 +88,7 @@ void drm_modeset_lock_all(struct drm_device *dev)
1186     struct drm_modeset_acquire_ctx *ctx;
1187     int ret;
1188    
1189     - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
1190     + ctx = kzalloc(sizeof(*ctx), GFP_KERNEL | __GFP_NOFAIL);
1191     if (WARN_ON(!ctx))
1192     return;
1193    
1194     diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
1195     index 10ae9681f02d..589905aab185 100644
1196     --- a/drivers/gpu/drm/i915/intel_drv.h
1197     +++ b/drivers/gpu/drm/i915/intel_drv.h
1198     @@ -1708,7 +1708,7 @@ extern struct drm_display_mode *intel_find_panel_downclock(
1199     int intel_backlight_device_register(struct intel_connector *connector);
1200     void intel_backlight_device_unregister(struct intel_connector *connector);
1201     #else /* CONFIG_BACKLIGHT_CLASS_DEVICE */
1202     -static int intel_backlight_device_register(struct intel_connector *connector)
1203     +static inline int intel_backlight_device_register(struct intel_connector *connector)
1204     {
1205     return 0;
1206     }
1207     diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
1208     index c50debb1986f..d31b3d0c9955 100644
1209     --- a/drivers/gpu/drm/vc4/vc4_gem.c
1210     +++ b/drivers/gpu/drm/vc4/vc4_gem.c
1211     @@ -829,8 +829,10 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec)
1212     /* If we got force-completed because of GPU reset rather than
1213     * through our IRQ handler, signal the fence now.
1214     */
1215     - if (exec->fence)
1216     + if (exec->fence) {
1217     dma_fence_signal(exec->fence);
1218     + dma_fence_put(exec->fence);
1219     + }
1220    
1221     if (exec->bo) {
1222     for (i = 0; i < exec->bo_count; i++)
1223     diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c
1224     index 521addec831e..3dd62d75f531 100644
1225     --- a/drivers/gpu/drm/vc4/vc4_irq.c
1226     +++ b/drivers/gpu/drm/vc4/vc4_irq.c
1227     @@ -139,6 +139,7 @@ vc4_irq_finish_render_job(struct drm_device *dev)
1228     list_move_tail(&exec->head, &vc4->job_done_list);
1229     if (exec->fence) {
1230     dma_fence_signal_locked(exec->fence);
1231     + dma_fence_put(exec->fence);
1232     exec->fence = NULL;
1233     }
1234     vc4_submit_next_render_job(dev);
1235     diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
1236     index a47428b4d31b..e565fd4fc414 100644
1237     --- a/drivers/iio/industrialio-core.c
1238     +++ b/drivers/iio/industrialio-core.c
1239     @@ -631,7 +631,7 @@ static ssize_t __iio_format_value(char *buf, size_t len, unsigned int type,
1240     * iio_format_value() - Formats a IIO value into its string representation
1241     * @buf: The buffer to which the formatted value gets written
1242     * which is assumed to be big enough (i.e. PAGE_SIZE).
1243     - * @type: One of the IIO_VAL_... constants. This decides how the val
1244     + * @type: One of the IIO_VAL_* constants. This decides how the val
1245     * and val2 parameters are formatted.
1246     * @size: Number of IIO value entries contained in vals
1247     * @vals: Pointer to the values, exact meaning depends on the
1248     @@ -639,7 +639,7 @@ static ssize_t __iio_format_value(char *buf, size_t len, unsigned int type,
1249     *
1250     * Return: 0 by default, a negative number on failure or the
1251     * total number of characters written for a type that belongs
1252     - * to the IIO_VAL_... constant.
1253     + * to the IIO_VAL_* constant.
1254     */
1255     ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals)
1256     {
1257     diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c
1258     index f42b3a1c75ff..dba796c06ba6 100644
1259     --- a/drivers/iio/proximity/sx9500.c
1260     +++ b/drivers/iio/proximity/sx9500.c
1261     @@ -871,6 +871,7 @@ static int sx9500_init_device(struct iio_dev *indio_dev)
1262     static void sx9500_gpio_probe(struct i2c_client *client,
1263     struct sx9500_data *data)
1264     {
1265     + struct gpio_desc *gpiod_int;
1266     struct device *dev;
1267    
1268     if (!client)
1269     @@ -878,6 +879,14 @@ static void sx9500_gpio_probe(struct i2c_client *client,
1270    
1271     dev = &client->dev;
1272    
1273     + if (client->irq <= 0) {
1274     + gpiod_int = devm_gpiod_get(dev, SX9500_GPIO_INT, GPIOD_IN);
1275     + if (IS_ERR(gpiod_int))
1276     + dev_err(dev, "gpio get irq failed\n");
1277     + else
1278     + client->irq = gpiod_to_irq(gpiod_int);
1279     + }
1280     +
1281     data->gpiod_rst = devm_gpiod_get(dev, SX9500_GPIO_RESET, GPIOD_OUT_HIGH);
1282     if (IS_ERR(data->gpiod_rst)) {
1283     dev_warn(dev, "gpio get reset pin failed\n");
1284     diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
1285     index fa79c7076ccd..e457dface2d2 100644
1286     --- a/drivers/infiniband/core/cma.c
1287     +++ b/drivers/infiniband/core/cma.c
1288     @@ -801,6 +801,7 @@ struct rdma_cm_id *rdma_create_id(struct net *net,
1289     INIT_LIST_HEAD(&id_priv->mc_list);
1290     get_random_bytes(&id_priv->seq_num, sizeof id_priv->seq_num);
1291     id_priv->id.route.addr.dev_addr.net = get_net(net);
1292     + id_priv->seq_num &= 0x00ffffff;
1293    
1294     return &id_priv->id;
1295     }
1296     @@ -4461,7 +4462,7 @@ static int cma_get_id_stats(struct sk_buff *skb, struct netlink_callback *cb)
1297     return skb->len;
1298     }
1299    
1300     -static const struct rdma_nl_cbs cma_cb_table[] = {
1301     +static const struct rdma_nl_cbs cma_cb_table[RDMA_NL_RDMA_CM_NUM_OPS] = {
1302     [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats},
1303     };
1304    
1305     diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
1306     index ebfdb5503701..b4b28ff8b7dc 100644
1307     --- a/drivers/infiniband/core/device.c
1308     +++ b/drivers/infiniband/core/device.c
1309     @@ -1154,7 +1154,7 @@ struct net_device *ib_get_net_dev_by_params(struct ib_device *dev,
1310     }
1311     EXPORT_SYMBOL(ib_get_net_dev_by_params);
1312    
1313     -static const struct rdma_nl_cbs ibnl_ls_cb_table[] = {
1314     +static const struct rdma_nl_cbs ibnl_ls_cb_table[RDMA_NL_LS_NUM_OPS] = {
1315     [RDMA_NL_LS_OP_RESOLVE] = {
1316     .doit = ib_nl_handle_resolve_resp,
1317     .flags = RDMA_NL_ADMIN_PERM,
1318     @@ -1261,5 +1261,5 @@ static void __exit ib_core_cleanup(void)
1319    
1320     MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_LS, 4);
1321    
1322     -module_init(ib_core_init);
1323     +subsys_initcall(ib_core_init);
1324     module_exit(ib_core_cleanup);
1325     diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c
1326     index fcf42f6bb82a..30d7277249b8 100644
1327     --- a/drivers/infiniband/core/iwcm.c
1328     +++ b/drivers/infiniband/core/iwcm.c
1329     @@ -80,7 +80,7 @@ const char *__attribute_const__ iwcm_reject_msg(int reason)
1330     }
1331     EXPORT_SYMBOL(iwcm_reject_msg);
1332    
1333     -static struct rdma_nl_cbs iwcm_nl_cb_table[] = {
1334     +static struct rdma_nl_cbs iwcm_nl_cb_table[RDMA_NL_IWPM_NUM_OPS] = {
1335     [RDMA_NL_IWPM_REG_PID] = {.dump = iwpm_register_pid_cb},
1336     [RDMA_NL_IWPM_ADD_MAPPING] = {.dump = iwpm_add_mapping_cb},
1337     [RDMA_NL_IWPM_QUERY_MAPPING] = {.dump = iwpm_add_and_query_mapping_cb},
1338     diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
1339     index 2fae850a3eff..9a05245a1acf 100644
1340     --- a/drivers/infiniband/core/nldev.c
1341     +++ b/drivers/infiniband/core/nldev.c
1342     @@ -303,7 +303,7 @@ out: cb->args[0] = idx;
1343     return skb->len;
1344     }
1345    
1346     -static const struct rdma_nl_cbs nldev_cb_table[] = {
1347     +static const struct rdma_nl_cbs nldev_cb_table[RDMA_NLDEV_NUM_OPS] = {
1348     [RDMA_NLDEV_CMD_GET] = {
1349     .doit = nldev_get_doit,
1350     .dump = nldev_get_dumpit,
1351     diff --git a/drivers/infiniband/hw/hfi1/rc.c b/drivers/infiniband/hw/hfi1/rc.c
1352     index e1cf0c08ca6f..84c6a6ff4a67 100644
1353     --- a/drivers/infiniband/hw/hfi1/rc.c
1354     +++ b/drivers/infiniband/hw/hfi1/rc.c
1355     @@ -815,7 +815,7 @@ static inline void hfi1_make_rc_ack_16B(struct rvt_qp *qp,
1356     struct hfi1_pportdata *ppd = ppd_from_ibp(ibp);
1357     struct hfi1_16b_header *hdr = &opa_hdr->opah;
1358     struct ib_other_headers *ohdr;
1359     - u32 bth0, bth1;
1360     + u32 bth0, bth1 = 0;
1361     u16 len, pkey;
1362     u8 becn = !!is_fecn;
1363     u8 l4 = OPA_16B_L4_IB_LOCAL;
1364     diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c
1365     index 5230dd3c938c..d6a1a308c6a0 100644
1366     --- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
1367     +++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
1368     @@ -1043,7 +1043,7 @@ static int i40iw_parse_mpa(struct i40iw_cm_node *cm_node, u8 *buffer, u32 *type,
1369     * i40iw_schedule_cm_timer
1370     * @@cm_node: connection's node
1371     * @sqbuf: buffer to send
1372     - * @type: if it es send ot close
1373     + * @type: if it is send or close
1374     * @send_retrans: if rexmits to be done
1375     * @close_when_complete: is cm_node to be removed
1376     *
1377     @@ -1067,7 +1067,8 @@ int i40iw_schedule_cm_timer(struct i40iw_cm_node *cm_node,
1378    
1379     new_send = kzalloc(sizeof(*new_send), GFP_ATOMIC);
1380     if (!new_send) {
1381     - i40iw_free_sqbuf(vsi, (void *)sqbuf);
1382     + if (type != I40IW_TIMER_TYPE_CLOSE)
1383     + i40iw_free_sqbuf(vsi, (void *)sqbuf);
1384     return -ENOMEM;
1385     }
1386     new_send->retrycount = I40IW_DEFAULT_RETRYS;
1387     @@ -1082,7 +1083,6 @@ int i40iw_schedule_cm_timer(struct i40iw_cm_node *cm_node,
1388     new_send->timetosend += (HZ / 10);
1389     if (cm_node->close_entry) {
1390     kfree(new_send);
1391     - i40iw_free_sqbuf(vsi, (void *)sqbuf);
1392     i40iw_pr_err("already close entry\n");
1393     return -EINVAL;
1394     }
1395     diff --git a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
1396     index 42ca5346777d..d86f3e670804 100644
1397     --- a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
1398     +++ b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
1399     @@ -506,7 +506,7 @@ static enum i40iw_status_code i40iw_sc_cqp_create(struct i40iw_sc_cqp *cqp,
1400    
1401     ret_code = i40iw_allocate_dma_mem(cqp->dev->hw,
1402     &cqp->sdbuf,
1403     - 128,
1404     + I40IW_UPDATE_SD_BUF_SIZE * cqp->sq_size,
1405     I40IW_SD_BUF_ALIGNMENT);
1406    
1407     if (ret_code)
1408     @@ -589,14 +589,15 @@ void i40iw_sc_cqp_post_sq(struct i40iw_sc_cqp *cqp)
1409     }
1410    
1411     /**
1412     - * i40iw_sc_cqp_get_next_send_wqe - get next wqe on cqp sq
1413     - * @cqp: struct for cqp hw
1414     - * @wqe_idx: we index of cqp ring
1415     + * i40iw_sc_cqp_get_next_send_wqe_idx - get next WQE on CQP SQ and pass back the index
1416     + * @cqp: pointer to CQP structure
1417     + * @scratch: private data for CQP WQE
1418     + * @wqe_idx: WQE index for next WQE on CQP SQ
1419     */
1420     -u64 *i40iw_sc_cqp_get_next_send_wqe(struct i40iw_sc_cqp *cqp, u64 scratch)
1421     +static u64 *i40iw_sc_cqp_get_next_send_wqe_idx(struct i40iw_sc_cqp *cqp,
1422     + u64 scratch, u32 *wqe_idx)
1423     {
1424     u64 *wqe = NULL;
1425     - u32 wqe_idx;
1426     enum i40iw_status_code ret_code;
1427    
1428     if (I40IW_RING_FULL_ERR(cqp->sq_ring)) {
1429     @@ -609,20 +610,32 @@ u64 *i40iw_sc_cqp_get_next_send_wqe(struct i40iw_sc_cqp *cqp, u64 scratch)
1430     cqp->sq_ring.size);
1431     return NULL;
1432     }
1433     - I40IW_ATOMIC_RING_MOVE_HEAD(cqp->sq_ring, wqe_idx, ret_code);
1434     + I40IW_ATOMIC_RING_MOVE_HEAD(cqp->sq_ring, *wqe_idx, ret_code);
1435     cqp->dev->cqp_cmd_stats[OP_REQUESTED_COMMANDS]++;
1436     if (ret_code)
1437     return NULL;
1438     - if (!wqe_idx)
1439     + if (!*wqe_idx)
1440     cqp->polarity = !cqp->polarity;
1441    
1442     - wqe = cqp->sq_base[wqe_idx].elem;
1443     - cqp->scratch_array[wqe_idx] = scratch;
1444     + wqe = cqp->sq_base[*wqe_idx].elem;
1445     + cqp->scratch_array[*wqe_idx] = scratch;
1446     I40IW_CQP_INIT_WQE(wqe);
1447    
1448     return wqe;
1449     }
1450    
1451     +/**
1452     + * i40iw_sc_cqp_get_next_send_wqe - get next wqe on cqp sq
1453     + * @cqp: struct for cqp hw
1454     + * @scratch: private data for CQP WQE
1455     + */
1456     +u64 *i40iw_sc_cqp_get_next_send_wqe(struct i40iw_sc_cqp *cqp, u64 scratch)
1457     +{
1458     + u32 wqe_idx;
1459     +
1460     + return i40iw_sc_cqp_get_next_send_wqe_idx(cqp, scratch, &wqe_idx);
1461     +}
1462     +
1463     /**
1464     * i40iw_sc_cqp_destroy - destroy cqp during close
1465     * @cqp: struct for cqp hw
1466     @@ -3534,8 +3547,10 @@ static enum i40iw_status_code cqp_sds_wqe_fill(struct i40iw_sc_cqp *cqp,
1467     u64 *wqe;
1468     int mem_entries, wqe_entries;
1469     struct i40iw_dma_mem *sdbuf = &cqp->sdbuf;
1470     + u64 offset;
1471     + u32 wqe_idx;
1472    
1473     - wqe = i40iw_sc_cqp_get_next_send_wqe(cqp, scratch);
1474     + wqe = i40iw_sc_cqp_get_next_send_wqe_idx(cqp, scratch, &wqe_idx);
1475     if (!wqe)
1476     return I40IW_ERR_RING_FULL;
1477    
1478     @@ -3548,8 +3563,10 @@ static enum i40iw_status_code cqp_sds_wqe_fill(struct i40iw_sc_cqp *cqp,
1479     LS_64(mem_entries, I40IW_CQPSQ_UPESD_ENTRY_COUNT);
1480    
1481     if (mem_entries) {
1482     - memcpy(sdbuf->va, &info->entry[3], (mem_entries << 4));
1483     - data = sdbuf->pa;
1484     + offset = wqe_idx * I40IW_UPDATE_SD_BUF_SIZE;
1485     + memcpy((char *)sdbuf->va + offset, &info->entry[3],
1486     + mem_entries << 4);
1487     + data = (u64)sdbuf->pa + offset;
1488     } else {
1489     data = 0;
1490     }
1491     diff --git a/drivers/infiniband/hw/i40iw/i40iw_d.h b/drivers/infiniband/hw/i40iw/i40iw_d.h
1492     index 2ebaadbed379..24eabcad5e40 100644
1493     --- a/drivers/infiniband/hw/i40iw/i40iw_d.h
1494     +++ b/drivers/infiniband/hw/i40iw/i40iw_d.h
1495     @@ -1109,7 +1109,7 @@
1496     #define I40IWQPC_VLANTAG_MASK (0xffffULL << I40IWQPC_VLANTAG_SHIFT)
1497    
1498     #define I40IWQPC_ARPIDX_SHIFT 48
1499     -#define I40IWQPC_ARPIDX_MASK (0xfffULL << I40IWQPC_ARPIDX_SHIFT)
1500     +#define I40IWQPC_ARPIDX_MASK (0xffffULL << I40IWQPC_ARPIDX_SHIFT)
1501    
1502     #define I40IWQPC_FLOWLABEL_SHIFT 0
1503     #define I40IWQPC_FLOWLABEL_MASK (0xfffffUL << I40IWQPC_FLOWLABEL_SHIFT)
1504     @@ -1516,7 +1516,7 @@ enum i40iw_alignment {
1505     I40IW_AEQ_ALIGNMENT = 0x100,
1506     I40IW_CEQ_ALIGNMENT = 0x100,
1507     I40IW_CQ0_ALIGNMENT = 0x100,
1508     - I40IW_SD_BUF_ALIGNMENT = 0x100
1509     + I40IW_SD_BUF_ALIGNMENT = 0x80
1510     };
1511    
1512     #define I40IW_WQE_SIZE_64 64
1513     @@ -1524,6 +1524,8 @@ enum i40iw_alignment {
1514     #define I40IW_QP_WQE_MIN_SIZE 32
1515     #define I40IW_QP_WQE_MAX_SIZE 128
1516    
1517     +#define I40IW_UPDATE_SD_BUF_SIZE 128
1518     +
1519     #define I40IW_CQE_QTYPE_RQ 0
1520     #define I40IW_CQE_QTYPE_SQ 1
1521    
1522     diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
1523     index fcfa08747899..9354fec8efe7 100644
1524     --- a/drivers/infiniband/hw/mlx4/qp.c
1525     +++ b/drivers/infiniband/hw/mlx4/qp.c
1526     @@ -666,6 +666,19 @@ static int set_qp_rss(struct mlx4_ib_dev *dev, struct mlx4_ib_rss *rss_ctx,
1527     return (-EOPNOTSUPP);
1528     }
1529    
1530     + if (ucmd->rx_hash_fields_mask & ~(MLX4_IB_RX_HASH_SRC_IPV4 |
1531     + MLX4_IB_RX_HASH_DST_IPV4 |
1532     + MLX4_IB_RX_HASH_SRC_IPV6 |
1533     + MLX4_IB_RX_HASH_DST_IPV6 |
1534     + MLX4_IB_RX_HASH_SRC_PORT_TCP |
1535     + MLX4_IB_RX_HASH_DST_PORT_TCP |
1536     + MLX4_IB_RX_HASH_SRC_PORT_UDP |
1537     + MLX4_IB_RX_HASH_DST_PORT_UDP)) {
1538     + pr_debug("RX Hash fields_mask has unsupported mask (0x%llx)\n",
1539     + ucmd->rx_hash_fields_mask);
1540     + return (-EOPNOTSUPP);
1541     + }
1542     +
1543     if ((ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_SRC_IPV4) &&
1544     (ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_DST_IPV4)) {
1545     rss_ctx->flags = MLX4_RSS_IPV4;
1546     @@ -691,11 +704,11 @@ static int set_qp_rss(struct mlx4_ib_dev *dev, struct mlx4_ib_rss *rss_ctx,
1547     return (-EOPNOTSUPP);
1548     }
1549    
1550     - if (rss_ctx->flags & MLX4_RSS_IPV4) {
1551     + if (rss_ctx->flags & MLX4_RSS_IPV4)
1552     rss_ctx->flags |= MLX4_RSS_UDP_IPV4;
1553     - } else if (rss_ctx->flags & MLX4_RSS_IPV6) {
1554     + if (rss_ctx->flags & MLX4_RSS_IPV6)
1555     rss_ctx->flags |= MLX4_RSS_UDP_IPV6;
1556     - } else {
1557     + if (!(rss_ctx->flags & (MLX4_RSS_IPV6 | MLX4_RSS_IPV4))) {
1558     pr_debug("RX Hash fields_mask is not supported - UDP must be set with IPv4 or IPv6\n");
1559     return (-EOPNOTSUPP);
1560     }
1561     @@ -707,15 +720,14 @@ static int set_qp_rss(struct mlx4_ib_dev *dev, struct mlx4_ib_rss *rss_ctx,
1562    
1563     if ((ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_SRC_PORT_TCP) &&
1564     (ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_DST_PORT_TCP)) {
1565     - if (rss_ctx->flags & MLX4_RSS_IPV4) {
1566     + if (rss_ctx->flags & MLX4_RSS_IPV4)
1567     rss_ctx->flags |= MLX4_RSS_TCP_IPV4;
1568     - } else if (rss_ctx->flags & MLX4_RSS_IPV6) {
1569     + if (rss_ctx->flags & MLX4_RSS_IPV6)
1570     rss_ctx->flags |= MLX4_RSS_TCP_IPV6;
1571     - } else {
1572     + if (!(rss_ctx->flags & (MLX4_RSS_IPV6 | MLX4_RSS_IPV4))) {
1573     pr_debug("RX Hash fields_mask is not supported - TCP must be set with IPv4 or IPv6\n");
1574     return (-EOPNOTSUPP);
1575     }
1576     -
1577     } else if ((ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_SRC_PORT_TCP) ||
1578     (ucmd->rx_hash_fields_mask & MLX4_IB_RX_HASH_DST_PORT_TCP)) {
1579     pr_debug("RX Hash fields_mask is not supported - both TCP SRC and DST must be set\n");
1580     diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
1581     index 5a8216b50e38..788fc0800465 100644
1582     --- a/drivers/md/raid1.c
1583     +++ b/drivers/md/raid1.c
1584     @@ -810,11 +810,15 @@ static void flush_pending_writes(struct r1conf *conf)
1585     spin_lock_irq(&conf->device_lock);
1586    
1587     if (conf->pending_bio_list.head) {
1588     + struct blk_plug plug;
1589     struct bio *bio;
1590     +
1591     bio = bio_list_get(&conf->pending_bio_list);
1592     conf->pending_count = 0;
1593     spin_unlock_irq(&conf->device_lock);
1594     + blk_start_plug(&plug);
1595     flush_bio_list(conf, bio);
1596     + blk_finish_plug(&plug);
1597     } else
1598     spin_unlock_irq(&conf->device_lock);
1599     }
1600     diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
1601     index 374df5796649..0d18d3b95201 100644
1602     --- a/drivers/md/raid10.c
1603     +++ b/drivers/md/raid10.c
1604     @@ -890,10 +890,13 @@ static void flush_pending_writes(struct r10conf *conf)
1605     spin_lock_irq(&conf->device_lock);
1606    
1607     if (conf->pending_bio_list.head) {
1608     + struct blk_plug plug;
1609     struct bio *bio;
1610     +
1611     bio = bio_list_get(&conf->pending_bio_list);
1612     conf->pending_count = 0;
1613     spin_unlock_irq(&conf->device_lock);
1614     + blk_start_plug(&plug);
1615     /* flush any pending bitmap writes to disk
1616     * before proceeding w/ I/O */
1617     bitmap_unplug(conf->mddev->bitmap);
1618     @@ -914,6 +917,7 @@ static void flush_pending_writes(struct r10conf *conf)
1619     generic_make_request(bio);
1620     bio = next;
1621     }
1622     + blk_finish_plug(&plug);
1623     } else
1624     spin_unlock_irq(&conf->device_lock);
1625     }
1626     diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
1627     index c406f16f5295..7ec822ced80b 100644
1628     --- a/drivers/md/raid5.c
1629     +++ b/drivers/md/raid5.c
1630     @@ -2678,13 +2678,13 @@ static void raid5_error(struct mddev *mddev, struct md_rdev *rdev)
1631     pr_debug("raid456: error called\n");
1632    
1633     spin_lock_irqsave(&conf->device_lock, flags);
1634     + set_bit(Faulty, &rdev->flags);
1635     clear_bit(In_sync, &rdev->flags);
1636     mddev->degraded = raid5_calc_degraded(conf);
1637     spin_unlock_irqrestore(&conf->device_lock, flags);
1638     set_bit(MD_RECOVERY_INTR, &mddev->recovery);
1639    
1640     set_bit(Blocked, &rdev->flags);
1641     - set_bit(Faulty, &rdev->flags);
1642     set_mask_bits(&mddev->sb_flags, 0,
1643     BIT(MD_SB_CHANGE_DEVS) | BIT(MD_SB_CHANGE_PENDING));
1644     pr_crit("md/raid:%s: Disk failure on %s, disabling device.\n"
1645     diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
1646     index 94153895fcd4..3bdc34deae7b 100644
1647     --- a/drivers/media/i2c/Kconfig
1648     +++ b/drivers/media/i2c/Kconfig
1649     @@ -660,6 +660,7 @@ config VIDEO_OV13858
1650     tristate "OmniVision OV13858 sensor support"
1651     depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
1652     depends on MEDIA_CAMERA_SUPPORT
1653     + select V4L2_FWNODE
1654     ---help---
1655     This is a Video4Linux2 sensor-level driver for the OmniVision
1656     OV13858 camera.
1657     diff --git a/drivers/media/i2c/s5k6aa.c b/drivers/media/i2c/s5k6aa.c
1658     index 9fd254a8e20d..13c10b5e2b45 100644
1659     --- a/drivers/media/i2c/s5k6aa.c
1660     +++ b/drivers/media/i2c/s5k6aa.c
1661     @@ -421,6 +421,7 @@ static int s5k6aa_set_ahb_address(struct i2c_client *client)
1662    
1663     /**
1664     * s5k6aa_configure_pixel_clock - apply ISP main clock/PLL configuration
1665     + * @s5k6aa: pointer to &struct s5k6aa describing the device
1666     *
1667     * Configure the internal ISP PLL for the required output frequency.
1668     * Locking: called with s5k6aa.lock mutex held.
1669     @@ -669,6 +670,7 @@ static int s5k6aa_set_input_params(struct s5k6aa *s5k6aa)
1670    
1671     /**
1672     * s5k6aa_configure_video_bus - configure the video output interface
1673     + * @s5k6aa: pointer to &struct s5k6aa describing the device
1674     * @bus_type: video bus type: parallel or MIPI-CSI
1675     * @nlanes: number of MIPI lanes to be used (MIPI-CSI only)
1676     *
1677     @@ -724,6 +726,8 @@ static int s5k6aa_new_config_sync(struct i2c_client *client, int timeout,
1678    
1679     /**
1680     * s5k6aa_set_prev_config - write user preview register set
1681     + * @s5k6aa: pointer to &struct s5k6aa describing the device
1682     + * @preset: s5kaa preset to be applied
1683     *
1684     * Configure output resolution and color fromat, pixel clock
1685     * frequency range, device frame rate type and frame period range.
1686     @@ -777,6 +781,7 @@ static int s5k6aa_set_prev_config(struct s5k6aa *s5k6aa,
1687    
1688     /**
1689     * s5k6aa_initialize_isp - basic ISP MCU initialization
1690     + * @sd: pointer to V4L2 sub-device descriptor
1691     *
1692     * Configure AHB addresses for registers read/write; configure PLLs for
1693     * required output pixel clock. The ISP power supply needs to be already
1694     diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1695     index ad5b25b89699..44975061b953 100644
1696     --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1697     +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1698     @@ -3642,6 +3642,12 @@ static int pvr2_send_request_ex(struct pvr2_hdw *hdw,
1699     hdw);
1700     hdw->ctl_write_urb->actual_length = 0;
1701     hdw->ctl_write_pend_flag = !0;
1702     + if (usb_urb_ep_type_check(hdw->ctl_write_urb)) {
1703     + pvr2_trace(
1704     + PVR2_TRACE_ERROR_LEGS,
1705     + "Invalid write control endpoint");
1706     + return -EINVAL;
1707     + }
1708     status = usb_submit_urb(hdw->ctl_write_urb,GFP_KERNEL);
1709     if (status < 0) {
1710     pvr2_trace(PVR2_TRACE_ERROR_LEGS,
1711     @@ -3666,6 +3672,12 @@ status);
1712     hdw);
1713     hdw->ctl_read_urb->actual_length = 0;
1714     hdw->ctl_read_pend_flag = !0;
1715     + if (usb_urb_ep_type_check(hdw->ctl_read_urb)) {
1716     + pvr2_trace(
1717     + PVR2_TRACE_ERROR_LEGS,
1718     + "Invalid read control endpoint");
1719     + return -EINVAL;
1720     + }
1721     status = usb_submit_urb(hdw->ctl_read_urb,GFP_KERNEL);
1722     if (status < 0) {
1723     pvr2_trace(PVR2_TRACE_ERROR_LEGS,
1724     diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
1725     index 0ccccbaf530d..e4b10b2d1a08 100644
1726     --- a/drivers/misc/mei/hw-me-regs.h
1727     +++ b/drivers/misc/mei/hw-me-regs.h
1728     @@ -132,6 +132,11 @@
1729     #define MEI_DEV_ID_KBP 0xA2BA /* Kaby Point */
1730     #define MEI_DEV_ID_KBP_2 0xA2BB /* Kaby Point 2 */
1731    
1732     +#define MEI_DEV_ID_CNP_LP 0x9DE0 /* Cannon Point LP */
1733     +#define MEI_DEV_ID_CNP_LP_4 0x9DE4 /* Cannon Point LP 4 (iTouch) */
1734     +#define MEI_DEV_ID_CNP_H 0xA360 /* Cannon Point H */
1735     +#define MEI_DEV_ID_CNP_H_4 0xA364 /* Cannon Point H 4 (iTouch) */
1736     +
1737     /*
1738     * MEI HW Section
1739     */
1740     diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
1741     index d46cb1f0868f..c77e08cbbfd1 100644
1742     --- a/drivers/misc/mei/pci-me.c
1743     +++ b/drivers/misc/mei/pci-me.c
1744     @@ -98,6 +98,11 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
1745     {MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)},
1746     {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_2, MEI_ME_PCH8_CFG)},
1747    
1748     + {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP, MEI_ME_PCH8_CFG)},
1749     + {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP_4, MEI_ME_PCH8_CFG)},
1750     + {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H, MEI_ME_PCH8_CFG)},
1751     + {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H_4, MEI_ME_PCH8_CFG)},
1752     +
1753     /* required last entry */
1754     {0, }
1755     };
1756     diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
1757     index d74c7335c512..eebda5ec9676 100644
1758     --- a/drivers/net/dsa/mv88e6xxx/chip.c
1759     +++ b/drivers/net/dsa/mv88e6xxx/chip.c
1760     @@ -339,7 +339,7 @@ static void mv88e6xxx_g1_irq_free(struct mv88e6xxx_chip *chip)
1761     u16 mask;
1762    
1763     mv88e6xxx_g1_read(chip, MV88E6XXX_G1_CTL1, &mask);
1764     - mask |= GENMASK(chip->g1_irq.nirqs, 0);
1765     + mask &= ~GENMASK(chip->g1_irq.nirqs, 0);
1766     mv88e6xxx_g1_write(chip, MV88E6XXX_G1_CTL1, mask);
1767    
1768     free_irq(chip->irq, chip);
1769     @@ -395,7 +395,7 @@ static int mv88e6xxx_g1_irq_setup(struct mv88e6xxx_chip *chip)
1770     return 0;
1771    
1772     out_disable:
1773     - mask |= GENMASK(chip->g1_irq.nirqs, 0);
1774     + mask &= ~GENMASK(chip->g1_irq.nirqs, 0);
1775     mv88e6xxx_g1_write(chip, MV88E6XXX_G1_CTL1, mask);
1776    
1777     out_mapping:
1778     @@ -2153,6 +2153,19 @@ static const struct of_device_id mv88e6xxx_mdio_external_match[] = {
1779     { },
1780     };
1781    
1782     +static void mv88e6xxx_mdios_unregister(struct mv88e6xxx_chip *chip)
1783     +
1784     +{
1785     + struct mv88e6xxx_mdio_bus *mdio_bus;
1786     + struct mii_bus *bus;
1787     +
1788     + list_for_each_entry(mdio_bus, &chip->mdios, list) {
1789     + bus = mdio_bus->bus;
1790     +
1791     + mdiobus_unregister(bus);
1792     + }
1793     +}
1794     +
1795     static int mv88e6xxx_mdios_register(struct mv88e6xxx_chip *chip,
1796     struct device_node *np)
1797     {
1798     @@ -2177,27 +2190,16 @@ static int mv88e6xxx_mdios_register(struct mv88e6xxx_chip *chip,
1799     match = of_match_node(mv88e6xxx_mdio_external_match, child);
1800     if (match) {
1801     err = mv88e6xxx_mdio_register(chip, child, true);
1802     - if (err)
1803     + if (err) {
1804     + mv88e6xxx_mdios_unregister(chip);
1805     return err;
1806     + }
1807     }
1808     }
1809    
1810     return 0;
1811     }
1812    
1813     -static void mv88e6xxx_mdios_unregister(struct mv88e6xxx_chip *chip)
1814     -
1815     -{
1816     - struct mv88e6xxx_mdio_bus *mdio_bus;
1817     - struct mii_bus *bus;
1818     -
1819     - list_for_each_entry(mdio_bus, &chip->mdios, list) {
1820     - bus = mdio_bus->bus;
1821     -
1822     - mdiobus_unregister(bus);
1823     - }
1824     -}
1825     -
1826     static int mv88e6xxx_get_eeprom_len(struct dsa_switch *ds)
1827     {
1828     struct mv88e6xxx_chip *chip = ds->priv;
1829     diff --git a/drivers/net/ethernet/arc/emac_rockchip.c b/drivers/net/ethernet/arc/emac_rockchip.c
1830     index e278e3d96ee0..c6163874e4e7 100644
1831     --- a/drivers/net/ethernet/arc/emac_rockchip.c
1832     +++ b/drivers/net/ethernet/arc/emac_rockchip.c
1833     @@ -220,9 +220,11 @@ static int emac_rockchip_probe(struct platform_device *pdev)
1834    
1835     /* RMII TX/RX needs always a rate of 25MHz */
1836     err = clk_set_rate(priv->macclk, 25000000);
1837     - if (err)
1838     + if (err) {
1839     dev_err(dev,
1840     "failed to change mac clock rate (%d)\n", err);
1841     + goto out_clk_disable_macclk;
1842     + }
1843     }
1844    
1845     err = arc_emac_probe(ndev, interface);
1846     @@ -232,7 +234,8 @@ static int emac_rockchip_probe(struct platform_device *pdev)
1847     }
1848    
1849     return 0;
1850     -
1851     +out_clk_disable_macclk:
1852     + clk_disable_unprepare(priv->macclk);
1853     out_regulator_disable:
1854     if (priv->regulator)
1855     regulator_disable(priv->regulator);
1856     diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1857     index aa764c5e3c6b..b66689a6eac0 100644
1858     --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1859     +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1860     @@ -8218,8 +8218,9 @@ static void bnxt_shutdown(struct pci_dev *pdev)
1861     if (netif_running(dev))
1862     dev_close(dev);
1863    
1864     + bnxt_ulp_shutdown(bp);
1865     +
1866     if (system_state == SYSTEM_POWER_OFF) {
1867     - bnxt_ulp_shutdown(bp);
1868     bnxt_clear_int_mode(bp);
1869     pci_wake_from_d3(pdev, bp->wol);
1870     pci_set_power_state(pdev, PCI_D3hot);
1871     diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
1872     index 5be52d89b182..7f837006bb6a 100644
1873     --- a/drivers/net/ethernet/freescale/gianfar.c
1874     +++ b/drivers/net/ethernet/freescale/gianfar.c
1875     @@ -1378,9 +1378,11 @@ static int gfar_probe(struct platform_device *ofdev)
1876    
1877     gfar_init_addr_hash_table(priv);
1878    
1879     - /* Insert receive time stamps into padding alignment bytes */
1880     + /* Insert receive time stamps into padding alignment bytes, and
1881     + * plus 2 bytes padding to ensure the cpu alignment.
1882     + */
1883     if (priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)
1884     - priv->padding = 8;
1885     + priv->padding = 8 + DEFAULT_PADDING;
1886    
1887     if (dev->features & NETIF_F_IP_CSUM ||
1888     priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)
1889     @@ -1790,6 +1792,7 @@ static int init_phy(struct net_device *dev)
1890     GFAR_SUPPORTED_GBIT : 0;
1891     phy_interface_t interface;
1892     struct phy_device *phydev;
1893     + struct ethtool_eee edata;
1894    
1895     priv->oldlink = 0;
1896     priv->oldspeed = 0;
1897     @@ -1814,6 +1817,10 @@ static int init_phy(struct net_device *dev)
1898     /* Add support for flow control, but don't advertise it by default */
1899     phydev->supported |= (SUPPORTED_Pause | SUPPORTED_Asym_Pause);
1900    
1901     + /* disable EEE autoneg, EEE not supported by eTSEC */
1902     + memset(&edata, 0, sizeof(struct ethtool_eee));
1903     + phy_ethtool_set_eee(phydev, &edata);
1904     +
1905     return 0;
1906     }
1907    
1908     diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
1909     index 06f3fe429d82..529be74f609d 100644
1910     --- a/drivers/net/ethernet/marvell/mvpp2.c
1911     +++ b/drivers/net/ethernet/marvell/mvpp2.c
1912     @@ -5399,7 +5399,7 @@ static int mvpp2_aggr_txq_init(struct platform_device *pdev,
1913     u32 txq_dma;
1914    
1915     /* Allocate memory for TX descriptors */
1916     - aggr_txq->descs = dma_alloc_coherent(&pdev->dev,
1917     + aggr_txq->descs = dma_zalloc_coherent(&pdev->dev,
1918     MVPP2_AGGR_TXQ_SIZE * MVPP2_DESC_ALIGNED_SIZE,
1919     &aggr_txq->descs_dma, GFP_KERNEL);
1920     if (!aggr_txq->descs)
1921     diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
1922     index 1c43aca8162d..9a7655560629 100644
1923     --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
1924     +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
1925     @@ -84,16 +84,13 @@ nfp_repr_phy_port_get_stats64(struct nfp_port *port,
1926     {
1927     u8 __iomem *mem = port->eth_stats;
1928    
1929     - /* TX and RX stats are flipped as we are returning the stats as seen
1930     - * at the switch port corresponding to the phys port.
1931     - */
1932     - stats->tx_packets = readq(mem + NFP_MAC_STATS_RX_FRAMES_RECEIVED_OK);
1933     - stats->tx_bytes = readq(mem + NFP_MAC_STATS_RX_IN_OCTETS);
1934     - stats->tx_dropped = readq(mem + NFP_MAC_STATS_RX_IN_ERRORS);
1935     + stats->tx_packets = readq(mem + NFP_MAC_STATS_TX_FRAMES_TRANSMITTED_OK);
1936     + stats->tx_bytes = readq(mem + NFP_MAC_STATS_TX_OUT_OCTETS);
1937     + stats->tx_dropped = readq(mem + NFP_MAC_STATS_TX_OUT_ERRORS);
1938    
1939     - stats->rx_packets = readq(mem + NFP_MAC_STATS_TX_FRAMES_TRANSMITTED_OK);
1940     - stats->rx_bytes = readq(mem + NFP_MAC_STATS_TX_OUT_OCTETS);
1941     - stats->rx_dropped = readq(mem + NFP_MAC_STATS_TX_OUT_ERRORS);
1942     + stats->rx_packets = readq(mem + NFP_MAC_STATS_RX_FRAMES_RECEIVED_OK);
1943     + stats->rx_bytes = readq(mem + NFP_MAC_STATS_RX_IN_OCTETS);
1944     + stats->rx_dropped = readq(mem + NFP_MAC_STATS_RX_IN_ERRORS);
1945     }
1946    
1947     static void
1948     diff --git a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
1949     index 540c7622dcb1..929fb8d96ec0 100644
1950     --- a/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
1951     +++ b/drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c
1952     @@ -166,12 +166,12 @@ static int rmnet_map_egress_handler(struct sk_buff *skb,
1953    
1954     if (skb_headroom(skb) < required_headroom) {
1955     if (pskb_expand_head(skb, required_headroom, 0, GFP_KERNEL))
1956     - return RMNET_MAP_CONSUMED;
1957     + goto fail;
1958     }
1959    
1960     map_header = rmnet_map_add_map_header(skb, additional_header_len, 0);
1961     if (!map_header)
1962     - return RMNET_MAP_CONSUMED;
1963     + goto fail;
1964    
1965     if (port->egress_data_format & RMNET_EGRESS_FORMAT_MUXING) {
1966     if (ep->mux_id == 0xff)
1967     @@ -183,6 +183,10 @@ static int rmnet_map_egress_handler(struct sk_buff *skb,
1968     skb->protocol = htons(ETH_P_MAP);
1969    
1970     return RMNET_MAP_SUCCESS;
1971     +
1972     +fail:
1973     + kfree_skb(skb);
1974     + return RMNET_MAP_CONSUMED;
1975     }
1976    
1977     /* Ingress / Egress Entry Points */
1978     diff --git a/drivers/net/hippi/rrunner.c b/drivers/net/hippi/rrunner.c
1979     index 71ddadbf2368..d7ba2b813eff 100644
1980     --- a/drivers/net/hippi/rrunner.c
1981     +++ b/drivers/net/hippi/rrunner.c
1982     @@ -1381,8 +1381,8 @@ static int rr_close(struct net_device *dev)
1983     rrpriv->info_dma);
1984     rrpriv->info = NULL;
1985    
1986     - free_irq(pdev->irq, dev);
1987     spin_unlock_irqrestore(&rrpriv->lock, flags);
1988     + free_irq(pdev->irq, dev);
1989    
1990     return 0;
1991     }
1992     diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
1993     index 8feb84fd4ca7..c23dea48ad0f 100644
1994     --- a/drivers/net/ipvlan/ipvlan_core.c
1995     +++ b/drivers/net/ipvlan/ipvlan_core.c
1996     @@ -375,6 +375,7 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb)
1997     .flowi4_oif = dev->ifindex,
1998     .flowi4_tos = RT_TOS(ip4h->tos),
1999     .flowi4_flags = FLOWI_FLAG_ANYSRC,
2000     + .flowi4_mark = skb->mark,
2001     .daddr = ip4h->daddr,
2002     .saddr = ip4h->saddr,
2003     };
2004     diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
2005     index cb85307f125b..1b2fe74a44ea 100644
2006     --- a/drivers/net/phy/phylink.c
2007     +++ b/drivers/net/phy/phylink.c
2008     @@ -772,6 +772,7 @@ void phylink_stop(struct phylink *pl)
2009     sfp_upstream_stop(pl->sfp_bus);
2010    
2011     set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
2012     + queue_work(system_power_efficient_wq, &pl->resolve);
2013     flush_work(&pl->resolve);
2014     }
2015     EXPORT_SYMBOL_GPL(phylink_stop);
2016     diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c
2017     index baee371bf767..8bf10aba7452 100644
2018     --- a/drivers/net/phy/sfp.c
2019     +++ b/drivers/net/phy/sfp.c
2020     @@ -358,7 +358,7 @@ static void sfp_sm_link_check_los(struct sfp *sfp)
2021     * SFP_OPTIONS_LOS_NORMAL are set? For now, we assume
2022     * the same as SFP_OPTIONS_LOS_NORMAL set.
2023     */
2024     - if (sfp->id.ext.options & SFP_OPTIONS_LOS_INVERTED)
2025     + if (sfp->id.ext.options & cpu_to_be16(SFP_OPTIONS_LOS_INVERTED))
2026     los ^= SFP_F_LOS;
2027    
2028     if (los)
2029     @@ -583,7 +583,8 @@ static void sfp_sm_event(struct sfp *sfp, unsigned int event)
2030     if (event == SFP_E_TX_FAULT)
2031     sfp_sm_fault(sfp, true);
2032     else if (event ==
2033     - (sfp->id.ext.options & SFP_OPTIONS_LOS_INVERTED ?
2034     + (sfp->id.ext.options &
2035     + cpu_to_be16(SFP_OPTIONS_LOS_INVERTED) ?
2036     SFP_E_LOS_HIGH : SFP_E_LOS_LOW))
2037     sfp_sm_link_up(sfp);
2038     break;
2039     @@ -593,7 +594,8 @@ static void sfp_sm_event(struct sfp *sfp, unsigned int event)
2040     sfp_sm_link_down(sfp);
2041     sfp_sm_fault(sfp, true);
2042     } else if (event ==
2043     - (sfp->id.ext.options & SFP_OPTIONS_LOS_INVERTED ?
2044     + (sfp->id.ext.options &
2045     + cpu_to_be16(SFP_OPTIONS_LOS_INVERTED) ?
2046     SFP_E_LOS_LOW : SFP_E_LOS_HIGH)) {
2047     sfp_sm_link_down(sfp);
2048     sfp_sm_next(sfp, SFP_S_WAIT_LOS, 0);
2049     diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
2050     index 511f8339fa96..7927e28f5336 100644
2051     --- a/drivers/net/virtio_net.c
2052     +++ b/drivers/net/virtio_net.c
2053     @@ -714,7 +714,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
2054     int num_skb_frags;
2055    
2056     buf = virtqueue_get_buf_ctx(rq->vq, &len, &ctx);
2057     - if (unlikely(!ctx)) {
2058     + if (unlikely(!buf)) {
2059     pr_debug("%s: rx error: %d buffers out of %d missing\n",
2060     dev->name, num_buf,
2061     virtio16_to_cpu(vi->vdev,
2062     diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
2063     index b3fa8ae80465..eccd25febfe6 100644
2064     --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
2065     +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
2066     @@ -2064,7 +2064,7 @@ static int brcmf_sdio_txpkt_hdalign(struct brcmf_sdio *bus, struct sk_buff *pkt)
2067     return head_pad;
2068     }
2069    
2070     -/**
2071     +/*
2072     * struct brcmf_skbuff_cb reserves first two bytes in sk_buff::cb for
2073     * bus layer usage.
2074     */
2075     diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
2076     index a59b54328c07..052e67bce6b3 100644
2077     --- a/drivers/net/wireless/mac80211_hwsim.c
2078     +++ b/drivers/net/wireless/mac80211_hwsim.c
2079     @@ -3119,6 +3119,11 @@ static int hwsim_new_radio_nl(struct sk_buff *msg, struct genl_info *info)
2080     if (info->attrs[HWSIM_ATTR_CHANNELS])
2081     param.channels = nla_get_u32(info->attrs[HWSIM_ATTR_CHANNELS]);
2082    
2083     + if (param.channels > CFG80211_MAX_NUM_DIFFERENT_CHANNELS) {
2084     + GENL_SET_ERR_MSG(info, "too many channels specified");
2085     + return -EINVAL;
2086     + }
2087     +
2088     if (info->attrs[HWSIM_ATTR_NO_VIF])
2089     param.no_vif = true;
2090    
2091     diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
2092     index 4e0b25d09b0c..f09ff4789bb5 100644
2093     --- a/drivers/pci/host/pcie-rcar.c
2094     +++ b/drivers/pci/host/pcie-rcar.c
2095     @@ -1146,12 +1146,12 @@ static int rcar_pcie_probe(struct platform_device *pdev)
2096     err = rcar_pcie_get_resources(pcie);
2097     if (err < 0) {
2098     dev_err(dev, "failed to request resources: %d\n", err);
2099     - goto err_free_bridge;
2100     + goto err_free_resource_list;
2101     }
2102    
2103     err = rcar_pcie_parse_map_dma_ranges(pcie, dev->of_node);
2104     if (err)
2105     - goto err_free_bridge;
2106     + goto err_free_resource_list;
2107    
2108     pm_runtime_enable(dev);
2109     err = pm_runtime_get_sync(dev);
2110     @@ -1194,9 +1194,9 @@ static int rcar_pcie_probe(struct platform_device *pdev)
2111     err_pm_disable:
2112     pm_runtime_disable(dev);
2113    
2114     -err_free_bridge:
2115     - pci_free_host_bridge(bridge);
2116     +err_free_resource_list:
2117     pci_free_resource_list(&pcie->resources);
2118     + pci_free_host_bridge(bridge);
2119    
2120     return err;
2121     }
2122     diff --git a/drivers/pinctrl/intel/pinctrl-denverton.c b/drivers/pinctrl/intel/pinctrl-denverton.c
2123     index 4500880240f2..6572550cfe78 100644
2124     --- a/drivers/pinctrl/intel/pinctrl-denverton.c
2125     +++ b/drivers/pinctrl/intel/pinctrl-denverton.c
2126     @@ -207,7 +207,7 @@ static const unsigned int dnv_uart0_pins[] = { 60, 61, 64, 65 };
2127     static const unsigned int dnv_uart0_modes[] = { 2, 3, 1, 1 };
2128     static const unsigned int dnv_uart1_pins[] = { 94, 95, 96, 97 };
2129     static const unsigned int dnv_uart2_pins[] = { 60, 61, 62, 63 };
2130     -static const unsigned int dnv_uart2_modes[] = { 1, 1, 2, 2 };
2131     +static const unsigned int dnv_uart2_modes[] = { 1, 2, 2, 2 };
2132     static const unsigned int dnv_emmc_pins[] = {
2133     142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
2134     };
2135     diff --git a/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c b/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
2136     index 4f2a726bbaeb..f5f77432ce6f 100644
2137     --- a/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
2138     +++ b/drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c
2139     @@ -428,7 +428,7 @@ static const struct sunxi_desc_pin a64_pins[] = {
2140     SUNXI_FUNCTION(0x0, "gpio_in"),
2141     SUNXI_FUNCTION(0x1, "gpio_out"),
2142     SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
2143     - SUNXI_FUNCTION(0x4, "uart0")), /* RX */
2144     + SUNXI_FUNCTION(0x3, "uart0")), /* RX */
2145     SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
2146     SUNXI_FUNCTION(0x0, "gpio_in"),
2147     SUNXI_FUNCTION(0x1, "gpio_out"),
2148     diff --git a/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c b/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
2149     index bc14e954d7a2..b7ca9a40cc66 100644
2150     --- a/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
2151     +++ b/drivers/pinctrl/sunxi/pinctrl-sun9i-a80.c
2152     @@ -145,19 +145,19 @@ static const struct sunxi_desc_pin sun9i_a80_pins[] = {
2153     SUNXI_FUNCTION(0x0, "gpio_in"),
2154     SUNXI_FUNCTION(0x1, "gpio_out"),
2155     SUNXI_FUNCTION(0x3, "mcsi"), /* MCLK */
2156     - SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 14)), /* PB_EINT14 */
2157     + SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)), /* PB_EINT14 */
2158     SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 15),
2159     SUNXI_FUNCTION(0x0, "gpio_in"),
2160     SUNXI_FUNCTION(0x1, "gpio_out"),
2161     SUNXI_FUNCTION(0x3, "mcsi"), /* SCK */
2162     SUNXI_FUNCTION(0x4, "i2c4"), /* SCK */
2163     - SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 15)), /* PB_EINT15 */
2164     + SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)), /* PB_EINT15 */
2165     SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 16),
2166     SUNXI_FUNCTION(0x0, "gpio_in"),
2167     SUNXI_FUNCTION(0x1, "gpio_out"),
2168     SUNXI_FUNCTION(0x3, "mcsi"), /* SDA */
2169     SUNXI_FUNCTION(0x4, "i2c4"), /* SDA */
2170     - SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 16)), /* PB_EINT16 */
2171     + SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)), /* PB_EINT16 */
2172    
2173     /* Hole */
2174     SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
2175     diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
2176     index f42159fd2031..7424e53157b0 100644
2177     --- a/drivers/platform/x86/dell-laptop.c
2178     +++ b/drivers/platform/x86/dell-laptop.c
2179     @@ -49,6 +49,7 @@
2180    
2181     struct quirk_entry {
2182     u8 touchpad_led;
2183     + u8 kbd_led_levels_off_1;
2184    
2185     int needs_kbd_timeouts;
2186     /*
2187     @@ -79,6 +80,10 @@ static struct quirk_entry quirk_dell_xps13_9333 = {
2188     .kbd_timeouts = { 0, 5, 15, 60, 5 * 60, 15 * 60, -1 },
2189     };
2190    
2191     +static struct quirk_entry quirk_dell_latitude_e6410 = {
2192     + .kbd_led_levels_off_1 = 1,
2193     +};
2194     +
2195     static struct platform_driver platform_driver = {
2196     .driver = {
2197     .name = "dell-laptop",
2198     @@ -280,6 +285,15 @@ static const struct dmi_system_id dell_quirks[] __initconst = {
2199     },
2200     .driver_data = &quirk_dell_xps13_9333,
2201     },
2202     + {
2203     + .callback = dmi_matched,
2204     + .ident = "Dell Latitude E6410",
2205     + .matches = {
2206     + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
2207     + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6410"),
2208     + },
2209     + .driver_data = &quirk_dell_latitude_e6410,
2210     + },
2211     { }
2212     };
2213    
2214     @@ -1200,6 +1214,9 @@ static int kbd_get_info(struct kbd_info *info)
2215     units = (buffer->output[2] >> 8) & 0xFF;
2216     info->levels = (buffer->output[2] >> 16) & 0xFF;
2217    
2218     + if (quirks && quirks->kbd_led_levels_off_1 && info->levels)
2219     + info->levels--;
2220     +
2221     if (units & BIT(0))
2222     info->seconds = (buffer->output[3] >> 0) & 0xFF;
2223     if (units & BIT(1))
2224     diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
2225     index 8eafcd5fa004..5ede251c52ca 100644
2226     --- a/drivers/s390/block/dasd_eckd.c
2227     +++ b/drivers/s390/block/dasd_eckd.c
2228     @@ -530,10 +530,12 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata,
2229     pfxdata->validity.define_extent = 1;
2230    
2231     /* private uid is kept up to date, conf_data may be outdated */
2232     - if (startpriv->uid.type != UA_BASE_DEVICE) {
2233     + if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
2234     pfxdata->validity.verify_base = 1;
2235     - if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
2236     - pfxdata->validity.hyper_pav = 1;
2237     +
2238     + if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
2239     + pfxdata->validity.verify_base = 1;
2240     + pfxdata->validity.hyper_pav = 1;
2241     }
2242    
2243     rc = define_extent(NULL, dedata, trk, totrk, cmd, basedev, blksize);
2244     @@ -3414,10 +3416,12 @@ static int prepare_itcw(struct itcw *itcw,
2245     pfxdata.validity.define_extent = 1;
2246    
2247     /* private uid is kept up to date, conf_data may be outdated */
2248     - if (startpriv->uid.type != UA_BASE_DEVICE) {
2249     + if (startpriv->uid.type == UA_BASE_PAV_ALIAS)
2250     + pfxdata.validity.verify_base = 1;
2251     +
2252     + if (startpriv->uid.type == UA_HYPER_PAV_ALIAS) {
2253     pfxdata.validity.verify_base = 1;
2254     - if (startpriv->uid.type == UA_HYPER_PAV_ALIAS)
2255     - pfxdata.validity.hyper_pav = 1;
2256     + pfxdata.validity.hyper_pav = 1;
2257     }
2258    
2259     switch (cmd) {
2260     diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
2261     index b2e8c0dfc79c..1aa46d0763a0 100644
2262     --- a/drivers/scsi/bfa/bfad_bsg.c
2263     +++ b/drivers/scsi/bfa/bfad_bsg.c
2264     @@ -3135,7 +3135,8 @@ bfad_im_bsg_vendor_request(struct bsg_job *job)
2265     struct fc_bsg_request *bsg_request = job->request;
2266     struct fc_bsg_reply *bsg_reply = job->reply;
2267     uint32_t vendor_cmd = bsg_request->rqst_data.h_vendor.vendor_cmd[0];
2268     - struct bfad_im_port_s *im_port = shost_priv(fc_bsg_to_shost(job));
2269     + struct Scsi_Host *shost = fc_bsg_to_shost(job);
2270     + struct bfad_im_port_s *im_port = bfad_get_im_port(shost);
2271     struct bfad_s *bfad = im_port->bfad;
2272     struct request_queue *request_q = job->req->q;
2273     void *payload_kbuf;
2274     @@ -3357,7 +3358,8 @@ int
2275     bfad_im_bsg_els_ct_request(struct bsg_job *job)
2276     {
2277     struct bfa_bsg_data *bsg_data;
2278     - struct bfad_im_port_s *im_port = shost_priv(fc_bsg_to_shost(job));
2279     + struct Scsi_Host *shost = fc_bsg_to_shost(job);
2280     + struct bfad_im_port_s *im_port = bfad_get_im_port(shost);
2281     struct bfad_s *bfad = im_port->bfad;
2282     bfa_bsg_fcpt_t *bsg_fcpt;
2283     struct bfad_fcxp *drv_fcxp;
2284     diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c
2285     index 24e657a4ec80..c05d6e91e4bd 100644
2286     --- a/drivers/scsi/bfa/bfad_im.c
2287     +++ b/drivers/scsi/bfa/bfad_im.c
2288     @@ -546,6 +546,7 @@ int
2289     bfad_im_scsi_host_alloc(struct bfad_s *bfad, struct bfad_im_port_s *im_port,
2290     struct device *dev)
2291     {
2292     + struct bfad_im_port_pointer *im_portp;
2293     int error = 1;
2294    
2295     mutex_lock(&bfad_mutex);
2296     @@ -564,7 +565,8 @@ bfad_im_scsi_host_alloc(struct bfad_s *bfad, struct bfad_im_port_s *im_port,
2297     goto out_free_idr;
2298     }
2299    
2300     - im_port->shost->hostdata[0] = (unsigned long)im_port;
2301     + im_portp = shost_priv(im_port->shost);
2302     + im_portp->p = im_port;
2303     im_port->shost->unique_id = im_port->idr_id;
2304     im_port->shost->this_id = -1;
2305     im_port->shost->max_id = MAX_FCP_TARGET;
2306     @@ -748,7 +750,7 @@ bfad_scsi_host_alloc(struct bfad_im_port_s *im_port, struct bfad_s *bfad)
2307    
2308     sht->sg_tablesize = bfad->cfg_data.io_max_sge;
2309    
2310     - return scsi_host_alloc(sht, sizeof(unsigned long));
2311     + return scsi_host_alloc(sht, sizeof(struct bfad_im_port_pointer));
2312     }
2313    
2314     void
2315     diff --git a/drivers/scsi/bfa/bfad_im.h b/drivers/scsi/bfa/bfad_im.h
2316     index c81ec2a77ef5..06ce4ba2b7bc 100644
2317     --- a/drivers/scsi/bfa/bfad_im.h
2318     +++ b/drivers/scsi/bfa/bfad_im.h
2319     @@ -69,6 +69,16 @@ struct bfad_im_port_s {
2320     struct fc_vport *fc_vport;
2321     };
2322    
2323     +struct bfad_im_port_pointer {
2324     + struct bfad_im_port_s *p;
2325     +};
2326     +
2327     +static inline struct bfad_im_port_s *bfad_get_im_port(struct Scsi_Host *host)
2328     +{
2329     + struct bfad_im_port_pointer *im_portp = shost_priv(host);
2330     + return im_portp->p;
2331     +}
2332     +
2333     enum bfad_itnim_state {
2334     ITNIM_STATE_NONE,
2335     ITNIM_STATE_ONLINE,
2336     diff --git a/drivers/scsi/lpfc/lpfc_mem.c b/drivers/scsi/lpfc/lpfc_mem.c
2337     index 56faeb049b4a..87c08ff37ddd 100644
2338     --- a/drivers/scsi/lpfc/lpfc_mem.c
2339     +++ b/drivers/scsi/lpfc/lpfc_mem.c
2340     @@ -753,12 +753,12 @@ lpfc_rq_buf_free(struct lpfc_hba *phba, struct lpfc_dmabuf *mp)
2341     drqe.address_hi = putPaddrHigh(rqb_entry->dbuf.phys);
2342     rc = lpfc_sli4_rq_put(rqb_entry->hrq, rqb_entry->drq, &hrqe, &drqe);
2343     if (rc < 0) {
2344     - (rqbp->rqb_free_buffer)(phba, rqb_entry);
2345     lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2346     "6409 Cannot post to RQ %d: %x %x\n",
2347     rqb_entry->hrq->queue_id,
2348     rqb_entry->hrq->host_index,
2349     rqb_entry->hrq->hba_index);
2350     + (rqbp->rqb_free_buffer)(phba, rqb_entry);
2351     } else {
2352     list_add_tail(&rqb_entry->hbuf.list, &rqbp->rqb_buffer_list);
2353     rqbp->buffer_count++;
2354     diff --git a/drivers/soc/amlogic/meson-gx-socinfo.c b/drivers/soc/amlogic/meson-gx-socinfo.c
2355     index 89f4cf507be6..f2d8c3c53ea4 100644
2356     --- a/drivers/soc/amlogic/meson-gx-socinfo.c
2357     +++ b/drivers/soc/amlogic/meson-gx-socinfo.c
2358     @@ -20,8 +20,8 @@
2359     #define AO_SEC_SOCINFO_OFFSET AO_SEC_SD_CFG8
2360    
2361     #define SOCINFO_MAJOR GENMASK(31, 24)
2362     -#define SOCINFO_MINOR GENMASK(23, 16)
2363     -#define SOCINFO_PACK GENMASK(15, 8)
2364     +#define SOCINFO_PACK GENMASK(23, 16)
2365     +#define SOCINFO_MINOR GENMASK(15, 8)
2366     #define SOCINFO_MISC GENMASK(7, 0)
2367    
2368     static const struct meson_gx_soc_id {
2369     diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c
2370     index c5cd635c28f3..41410031f8e9 100644
2371     --- a/drivers/spi/spi-sun4i.c
2372     +++ b/drivers/spi/spi-sun4i.c
2373     @@ -525,7 +525,7 @@ static int sun4i_spi_probe(struct platform_device *pdev)
2374    
2375     static int sun4i_spi_remove(struct platform_device *pdev)
2376     {
2377     - pm_runtime_disable(&pdev->dev);
2378     + pm_runtime_force_suspend(&pdev->dev);
2379    
2380     return 0;
2381     }
2382     diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
2383     index 372ce9913e6d..e7541dc90473 100644
2384     --- a/drivers/staging/android/ashmem.c
2385     +++ b/drivers/staging/android/ashmem.c
2386     @@ -710,30 +710,32 @@ static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
2387     size_t pgstart, pgend;
2388     int ret = -EINVAL;
2389    
2390     + mutex_lock(&ashmem_mutex);
2391     +
2392     if (unlikely(!asma->file))
2393     - return -EINVAL;
2394     + goto out_unlock;
2395    
2396     - if (unlikely(copy_from_user(&pin, p, sizeof(pin))))
2397     - return -EFAULT;
2398     + if (unlikely(copy_from_user(&pin, p, sizeof(pin)))) {
2399     + ret = -EFAULT;
2400     + goto out_unlock;
2401     + }
2402    
2403     /* per custom, you can pass zero for len to mean "everything onward" */
2404     if (!pin.len)
2405     pin.len = PAGE_ALIGN(asma->size) - pin.offset;
2406    
2407     if (unlikely((pin.offset | pin.len) & ~PAGE_MASK))
2408     - return -EINVAL;
2409     + goto out_unlock;
2410    
2411     if (unlikely(((__u32)-1) - pin.offset < pin.len))
2412     - return -EINVAL;
2413     + goto out_unlock;
2414    
2415     if (unlikely(PAGE_ALIGN(asma->size) < pin.offset + pin.len))
2416     - return -EINVAL;
2417     + goto out_unlock;
2418    
2419     pgstart = pin.offset / PAGE_SIZE;
2420     pgend = pgstart + (pin.len / PAGE_SIZE) - 1;
2421    
2422     - mutex_lock(&ashmem_mutex);
2423     -
2424     switch (cmd) {
2425     case ASHMEM_PIN:
2426     ret = ashmem_pin(asma, pgstart, pgend);
2427     @@ -746,6 +748,7 @@ static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
2428     break;
2429     }
2430    
2431     +out_unlock:
2432     mutex_unlock(&ashmem_mutex);
2433    
2434     return ret;
2435     diff --git a/drivers/staging/android/ion/ion-ioctl.c b/drivers/staging/android/ion/ion-ioctl.c
2436     index d9f8b1424da1..021a956db1a8 100644
2437     --- a/drivers/staging/android/ion/ion-ioctl.c
2438     +++ b/drivers/staging/android/ion/ion-ioctl.c
2439     @@ -71,8 +71,10 @@ long ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
2440     return -EFAULT;
2441    
2442     ret = validate_ioctl_arg(cmd, &data);
2443     - if (WARN_ON_ONCE(ret))
2444     + if (ret) {
2445     + pr_warn_once("%s: ioctl validate failed\n", __func__);
2446     return ret;
2447     + }
2448    
2449     if (!(dir & _IOC_WRITE))
2450     memset(&data, 0, sizeof(data));
2451     diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
2452     index 4dc5d7a589c2..b6ece18e6a88 100644
2453     --- a/drivers/staging/android/ion/ion_system_heap.c
2454     +++ b/drivers/staging/android/ion/ion_system_heap.c
2455     @@ -371,7 +371,7 @@ static int ion_system_contig_heap_allocate(struct ion_heap *heap,
2456     unsigned long i;
2457     int ret;
2458    
2459     - page = alloc_pages(low_order_gfp_flags, order);
2460     + page = alloc_pages(low_order_gfp_flags | __GFP_NOWARN, order);
2461     if (!page)
2462     return -ENOMEM;
2463    
2464     diff --git a/drivers/staging/ccree/ssi_hash.c b/drivers/staging/ccree/ssi_hash.c
2465     index f72ca485c86f..e266a70a1b32 100644
2466     --- a/drivers/staging/ccree/ssi_hash.c
2467     +++ b/drivers/staging/ccree/ssi_hash.c
2468     @@ -1781,7 +1781,7 @@ static int ssi_ahash_import(struct ahash_request *req, const void *in)
2469     struct device *dev = &ctx->drvdata->plat_dev->dev;
2470     struct ahash_req_ctx *state = ahash_request_ctx(req);
2471     u32 tmp;
2472     - int rc;
2473     + int rc = 0;
2474    
2475     memcpy(&tmp, in, sizeof(u32));
2476     if (tmp != CC_EXPORT_MAGIC) {
2477     diff --git a/drivers/staging/fsl-mc/bus/Kconfig b/drivers/staging/fsl-mc/bus/Kconfig
2478     index 504c987447f2..eee1c1b277fa 100644
2479     --- a/drivers/staging/fsl-mc/bus/Kconfig
2480     +++ b/drivers/staging/fsl-mc/bus/Kconfig
2481     @@ -8,7 +8,7 @@
2482    
2483     config FSL_MC_BUS
2484     bool "QorIQ DPAA2 fsl-mc bus driver"
2485     - depends on OF && (ARCH_LAYERSCAPE || (COMPILE_TEST && (ARM || ARM64 || X86 || PPC)))
2486     + depends on OF && (ARCH_LAYERSCAPE || (COMPILE_TEST && (ARM || ARM64 || X86_LOCAL_APIC || PPC)))
2487     select GENERIC_MSI_IRQ_DOMAIN
2488     help
2489     Driver to enable the bus infrastructure for the QorIQ DPAA2
2490     diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c
2491     index 6150d2780e22..31a195d1bf05 100644
2492     --- a/drivers/staging/iio/adc/ad7192.c
2493     +++ b/drivers/staging/iio/adc/ad7192.c
2494     @@ -141,6 +141,8 @@
2495     #define AD7192_GPOCON_P1DAT BIT(1) /* P1 state */
2496     #define AD7192_GPOCON_P0DAT BIT(0) /* P0 state */
2497    
2498     +#define AD7192_EXT_FREQ_MHZ_MIN 2457600
2499     +#define AD7192_EXT_FREQ_MHZ_MAX 5120000
2500     #define AD7192_INT_FREQ_MHZ 4915200
2501    
2502     /* NOTE:
2503     @@ -217,6 +219,12 @@ static int ad7192_calibrate_all(struct ad7192_state *st)
2504     ARRAY_SIZE(ad7192_calib_arr));
2505     }
2506    
2507     +static inline bool ad7192_valid_external_frequency(u32 freq)
2508     +{
2509     + return (freq >= AD7192_EXT_FREQ_MHZ_MIN &&
2510     + freq <= AD7192_EXT_FREQ_MHZ_MAX);
2511     +}
2512     +
2513     static int ad7192_setup(struct ad7192_state *st,
2514     const struct ad7192_platform_data *pdata)
2515     {
2516     @@ -242,17 +250,20 @@ static int ad7192_setup(struct ad7192_state *st,
2517     id);
2518    
2519     switch (pdata->clock_source_sel) {
2520     - case AD7192_CLK_EXT_MCLK1_2:
2521     - case AD7192_CLK_EXT_MCLK2:
2522     - st->mclk = AD7192_INT_FREQ_MHZ;
2523     - break;
2524     case AD7192_CLK_INT:
2525     case AD7192_CLK_INT_CO:
2526     - if (pdata->ext_clk_hz)
2527     - st->mclk = pdata->ext_clk_hz;
2528     - else
2529     - st->mclk = AD7192_INT_FREQ_MHZ;
2530     + st->mclk = AD7192_INT_FREQ_MHZ;
2531     break;
2532     + case AD7192_CLK_EXT_MCLK1_2:
2533     + case AD7192_CLK_EXT_MCLK2:
2534     + if (ad7192_valid_external_frequency(pdata->ext_clk_hz)) {
2535     + st->mclk = pdata->ext_clk_hz;
2536     + break;
2537     + }
2538     + dev_err(&st->sd.spi->dev, "Invalid frequency setting %u\n",
2539     + pdata->ext_clk_hz);
2540     + ret = -EINVAL;
2541     + goto out;
2542     default:
2543     ret = -EINVAL;
2544     goto out;
2545     diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
2546     index 3d539eeb0e26..6d31001d1825 100644
2547     --- a/drivers/staging/iio/impedance-analyzer/ad5933.c
2548     +++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
2549     @@ -649,8 +649,6 @@ static int ad5933_register_ring_funcs_and_init(struct iio_dev *indio_dev)
2550     /* Ring buffer functions - here trigger setup related */
2551     indio_dev->setup_ops = &ad5933_ring_setup_ops;
2552    
2553     - indio_dev->modes |= INDIO_BUFFER_HARDWARE;
2554     -
2555     return 0;
2556     }
2557    
2558     @@ -763,7 +761,7 @@ static int ad5933_probe(struct i2c_client *client,
2559     indio_dev->dev.parent = &client->dev;
2560     indio_dev->info = &ad5933_info;
2561     indio_dev->name = id->name;
2562     - indio_dev->modes = INDIO_DIRECT_MODE;
2563     + indio_dev->modes = (INDIO_BUFFER_SOFTWARE | INDIO_DIRECT_MODE);
2564     indio_dev->channels = ad5933_channels;
2565     indio_dev->num_channels = ARRAY_SIZE(ad5933_channels);
2566    
2567     diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c
2568     index 47903d510955..8b800e34407b 100644
2569     --- a/drivers/usb/core/urb.c
2570     +++ b/drivers/usb/core/urb.c
2571     @@ -187,6 +187,31 @@ EXPORT_SYMBOL_GPL(usb_unanchor_urb);
2572    
2573     /*-------------------------------------------------------------------*/
2574    
2575     +static const int pipetypes[4] = {
2576     + PIPE_CONTROL, PIPE_ISOCHRONOUS, PIPE_BULK, PIPE_INTERRUPT
2577     +};
2578     +
2579     +/**
2580     + * usb_urb_ep_type_check - sanity check of endpoint in the given urb
2581     + * @urb: urb to be checked
2582     + *
2583     + * This performs a light-weight sanity check for the endpoint in the
2584     + * given urb. It returns 0 if the urb contains a valid endpoint, otherwise
2585     + * a negative error code.
2586     + */
2587     +int usb_urb_ep_type_check(const struct urb *urb)
2588     +{
2589     + const struct usb_host_endpoint *ep;
2590     +
2591     + ep = usb_pipe_endpoint(urb->dev, urb->pipe);
2592     + if (!ep)
2593     + return -EINVAL;
2594     + if (usb_pipetype(urb->pipe) != pipetypes[usb_endpoint_type(&ep->desc)])
2595     + return -EINVAL;
2596     + return 0;
2597     +}
2598     +EXPORT_SYMBOL_GPL(usb_urb_ep_type_check);
2599     +
2600     /**
2601     * usb_submit_urb - issue an asynchronous transfer request for an endpoint
2602     * @urb: pointer to the urb describing the request
2603     @@ -326,9 +351,6 @@ EXPORT_SYMBOL_GPL(usb_unanchor_urb);
2604     */
2605     int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
2606     {
2607     - static int pipetypes[4] = {
2608     - PIPE_CONTROL, PIPE_ISOCHRONOUS, PIPE_BULK, PIPE_INTERRUPT
2609     - };
2610     int xfertype, max;
2611     struct usb_device *dev;
2612     struct usb_host_endpoint *ep;
2613     @@ -444,7 +466,7 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
2614     */
2615    
2616     /* Check that the pipe's type matches the endpoint's type */
2617     - if (usb_pipetype(urb->pipe) != pipetypes[xfertype])
2618     + if (usb_urb_ep_type_check(urb))
2619     dev_WARN(&dev->dev, "BOGUS urb xfer, pipe %x != type %x\n",
2620     usb_pipetype(urb->pipe), pipetypes[xfertype]);
2621    
2622     diff --git a/drivers/usb/dwc3/dwc3-of-simple.c b/drivers/usb/dwc3/dwc3-of-simple.c
2623     index a26d1fde0f5e..fbfc09ebd2ec 100644
2624     --- a/drivers/usb/dwc3/dwc3-of-simple.c
2625     +++ b/drivers/usb/dwc3/dwc3-of-simple.c
2626     @@ -57,8 +57,10 @@ static int dwc3_of_simple_clk_init(struct dwc3_of_simple *simple, int count)
2627    
2628     clk = of_clk_get(np, i);
2629     if (IS_ERR(clk)) {
2630     - while (--i >= 0)
2631     + while (--i >= 0) {
2632     + clk_disable_unprepare(simple->clks[i]);
2633     clk_put(simple->clks[i]);
2634     + }
2635     return PTR_ERR(clk);
2636     }
2637    
2638     diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
2639     index f064f1549333..97e52c0d1a72 100644
2640     --- a/drivers/usb/dwc3/gadget.c
2641     +++ b/drivers/usb/dwc3/gadget.c
2642     @@ -267,7 +267,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd,
2643     {
2644     const struct usb_endpoint_descriptor *desc = dep->endpoint.desc;
2645     struct dwc3 *dwc = dep->dwc;
2646     - u32 timeout = 500;
2647     + u32 timeout = 1000;
2648     u32 reg;
2649    
2650     int cmd_status = 0;
2651     diff --git a/drivers/usb/usbip/stub_dev.c b/drivers/usb/usbip/stub_dev.c
2652     index 720408d39f11..b8915513fc84 100644
2653     --- a/drivers/usb/usbip/stub_dev.c
2654     +++ b/drivers/usb/usbip/stub_dev.c
2655     @@ -87,6 +87,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
2656     goto err;
2657    
2658     sdev->ud.tcp_socket = socket;
2659     + sdev->ud.sockfd = sockfd;
2660    
2661     spin_unlock_irq(&sdev->ud.lock);
2662    
2663     @@ -186,6 +187,7 @@ static void stub_shutdown_connection(struct usbip_device *ud)
2664     if (ud->tcp_socket) {
2665     sockfd_put(ud->tcp_socket);
2666     ud->tcp_socket = NULL;
2667     + ud->sockfd = -1;
2668     }
2669    
2670     /* 3. free used data */
2671     @@ -280,6 +282,7 @@ static struct stub_device *stub_device_alloc(struct usb_device *udev)
2672     sdev->ud.status = SDEV_ST_AVAILABLE;
2673     spin_lock_init(&sdev->ud.lock);
2674     sdev->ud.tcp_socket = NULL;
2675     + sdev->ud.sockfd = -1;
2676    
2677     INIT_LIST_HEAD(&sdev->priv_init);
2678     INIT_LIST_HEAD(&sdev->priv_tx);
2679     diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
2680     index 692cfdef667e..89858aeed647 100644
2681     --- a/drivers/usb/usbip/vhci_hcd.c
2682     +++ b/drivers/usb/usbip/vhci_hcd.c
2683     @@ -998,6 +998,7 @@ static void vhci_shutdown_connection(struct usbip_device *ud)
2684     if (vdev->ud.tcp_socket) {
2685     sockfd_put(vdev->ud.tcp_socket);
2686     vdev->ud.tcp_socket = NULL;
2687     + vdev->ud.sockfd = -1;
2688     }
2689     pr_info("release socket\n");
2690    
2691     @@ -1044,6 +1045,7 @@ static void vhci_device_reset(struct usbip_device *ud)
2692     if (ud->tcp_socket) {
2693     sockfd_put(ud->tcp_socket);
2694     ud->tcp_socket = NULL;
2695     + ud->sockfd = -1;
2696     }
2697     ud->status = VDEV_ST_NULL;
2698    
2699     diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
2700     index d6dbb28245e6..a827c1a684a9 100644
2701     --- a/drivers/vhost/vhost.c
2702     +++ b/drivers/vhost/vhost.c
2703     @@ -904,7 +904,7 @@ static void vhost_dev_lock_vqs(struct vhost_dev *d)
2704     {
2705     int i = 0;
2706     for (i = 0; i < d->nvqs; ++i)
2707     - mutex_lock(&d->vqs[i]->mutex);
2708     + mutex_lock_nested(&d->vqs[i]->mutex, i);
2709     }
2710    
2711     static void vhost_dev_unlock_vqs(struct vhost_dev *d)
2712     diff --git a/drivers/video/fbdev/mmp/core.c b/drivers/video/fbdev/mmp/core.c
2713     index a0f496049db7..3a6bb6561ba0 100644
2714     --- a/drivers/video/fbdev/mmp/core.c
2715     +++ b/drivers/video/fbdev/mmp/core.c
2716     @@ -23,6 +23,7 @@
2717     #include <linux/slab.h>
2718     #include <linux/dma-mapping.h>
2719     #include <linux/export.h>
2720     +#include <linux/module.h>
2721     #include <video/mmp_disp.h>
2722    
2723     static struct mmp_overlay *path_get_overlay(struct mmp_path *path,
2724     @@ -249,3 +250,7 @@ void mmp_unregister_path(struct mmp_path *path)
2725     mutex_unlock(&disp_lock);
2726     }
2727     EXPORT_SYMBOL_GPL(mmp_unregister_path);
2728     +
2729     +MODULE_AUTHOR("Zhou Zhu <zzhu3@marvell.com>");
2730     +MODULE_DESCRIPTION("Marvell MMP display framework");
2731     +MODULE_LICENSE("GPL");
2732     diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
2733     index 4545561954ee..30187b86729b 100644
2734     --- a/drivers/xen/Kconfig
2735     +++ b/drivers/xen/Kconfig
2736     @@ -258,7 +258,7 @@ config XEN_ACPI_HOTPLUG_CPU
2737    
2738     config XEN_ACPI_PROCESSOR
2739     tristate "Xen ACPI processor"
2740     - depends on XEN && X86 && ACPI_PROCESSOR && CPU_FREQ
2741     + depends on XEN && XEN_DOM0 && X86 && ACPI_PROCESSOR && CPU_FREQ
2742     default m
2743     help
2744     This ACPI processor uploads Power Management information to the Xen
2745     diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
2746     index dfdab849037b..167ce43cabe8 100644
2747     --- a/fs/btrfs/disk-io.c
2748     +++ b/fs/btrfs/disk-io.c
2749     @@ -3391,6 +3391,7 @@ static int write_dev_supers(struct btrfs_device *device,
2750     int errors = 0;
2751     u32 crc;
2752     u64 bytenr;
2753     + int op_flags;
2754    
2755     if (max_mirrors == 0)
2756     max_mirrors = BTRFS_SUPER_MIRROR_MAX;
2757     @@ -3433,13 +3434,10 @@ static int write_dev_supers(struct btrfs_device *device,
2758     * we fua the first super. The others we allow
2759     * to go down lazy.
2760     */
2761     - if (i == 0) {
2762     - ret = btrfsic_submit_bh(REQ_OP_WRITE,
2763     - REQ_SYNC | REQ_FUA | REQ_META | REQ_PRIO, bh);
2764     - } else {
2765     - ret = btrfsic_submit_bh(REQ_OP_WRITE,
2766     - REQ_SYNC | REQ_META | REQ_PRIO, bh);
2767     - }
2768     + op_flags = REQ_SYNC | REQ_META | REQ_PRIO;
2769     + if (i == 0 && !btrfs_test_opt(device->fs_info, NOBARRIER))
2770     + op_flags |= REQ_FUA;
2771     + ret = btrfsic_submit_bh(REQ_OP_WRITE, op_flags, bh);
2772     if (ret)
2773     errors++;
2774     }
2775     diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
2776     index 1ae61f82e54b..59a01a0844c9 100644
2777     --- a/fs/btrfs/inode.c
2778     +++ b/fs/btrfs/inode.c
2779     @@ -3016,6 +3016,8 @@ static int btrfs_finish_ordered_io(struct btrfs_ordered_extent *ordered_extent)
2780     compress_type = ordered_extent->compress_type;
2781     if (test_bit(BTRFS_ORDERED_PREALLOC, &ordered_extent->flags)) {
2782     BUG_ON(compress_type);
2783     + btrfs_qgroup_free_data(inode, NULL, ordered_extent->file_offset,
2784     + ordered_extent->len);
2785     ret = btrfs_mark_extent_written(trans, BTRFS_I(inode),
2786     ordered_extent->file_offset,
2787     ordered_extent->file_offset +
2788     diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
2789     index 1f1338d52303..2763f3184ac5 100644
2790     --- a/fs/btrfs/ioctl.c
2791     +++ b/fs/btrfs/ioctl.c
2792     @@ -2221,7 +2221,7 @@ static noinline int btrfs_search_path_in_tree(struct btrfs_fs_info *info,
2793     if (!path)
2794     return -ENOMEM;
2795    
2796     - ptr = &name[BTRFS_INO_LOOKUP_PATH_MAX];
2797     + ptr = &name[BTRFS_INO_LOOKUP_PATH_MAX - 1];
2798    
2799     key.objectid = tree_id;
2800     key.type = BTRFS_ROOT_ITEM_KEY;
2801     diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c
2802     index cba328315929..63a1ca4b9dee 100644
2803     --- a/fs/notify/dnotify/dnotify.c
2804     +++ b/fs/notify/dnotify/dnotify.c
2805     @@ -319,7 +319,11 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
2806     dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark);
2807     spin_lock(&fsn_mark->lock);
2808     } else {
2809     - fsnotify_add_mark_locked(new_fsn_mark, inode, NULL, 0);
2810     + error = fsnotify_add_mark_locked(new_fsn_mark, inode, NULL, 0);
2811     + if (error) {
2812     + mutex_unlock(&dnotify_group->mark_mutex);
2813     + goto out_err;
2814     + }
2815     spin_lock(&new_fsn_mark->lock);
2816     fsn_mark = new_fsn_mark;
2817     dn_mark = new_dn_mark;
2818     @@ -345,6 +349,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg)
2819     */
2820     if (dn_mark == new_dn_mark)
2821     destroy = 1;
2822     + error = 0;
2823     goto out;
2824     }
2825    
2826     diff --git a/include/linux/ptr_ring.h b/include/linux/ptr_ring.h
2827     index 6866df4f31b5..35d125569e68 100644
2828     --- a/include/linux/ptr_ring.h
2829     +++ b/include/linux/ptr_ring.h
2830     @@ -445,9 +445,14 @@ static inline int ptr_ring_consume_batched_bh(struct ptr_ring *r,
2831     __PTR_RING_PEEK_CALL_v; \
2832     })
2833    
2834     +/* Not all gfp_t flags (besides GFP_KERNEL) are allowed. See
2835     + * documentation for vmalloc for which of them are legal.
2836     + */
2837     static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
2838     {
2839     - return kcalloc(size, sizeof(void *), gfp);
2840     + if (size * sizeof(void *) > KMALLOC_MAX_SIZE)
2841     + return NULL;
2842     + return kvmalloc_array(size, sizeof(void *), gfp | __GFP_ZERO);
2843     }
2844    
2845     static inline void __ptr_ring_set_size(struct ptr_ring *r, int size)
2846     @@ -580,7 +585,7 @@ static inline int ptr_ring_resize(struct ptr_ring *r, int size, gfp_t gfp,
2847     spin_unlock(&(r)->producer_lock);
2848     spin_unlock_irqrestore(&(r)->consumer_lock, flags);
2849    
2850     - kfree(old);
2851     + kvfree(old);
2852    
2853     return 0;
2854     }
2855     @@ -620,7 +625,7 @@ static inline int ptr_ring_resize_multiple(struct ptr_ring **rings,
2856     }
2857    
2858     for (i = 0; i < nrings; ++i)
2859     - kfree(queues[i]);
2860     + kvfree(queues[i]);
2861    
2862     kfree(queues);
2863    
2864     @@ -628,7 +633,7 @@ static inline int ptr_ring_resize_multiple(struct ptr_ring **rings,
2865    
2866     nomem:
2867     while (--i >= 0)
2868     - kfree(queues[i]);
2869     + kvfree(queues[i]);
2870    
2871     kfree(queues);
2872    
2873     @@ -643,7 +648,7 @@ static inline void ptr_ring_cleanup(struct ptr_ring *r, void (*destroy)(void *))
2874     if (destroy)
2875     while ((ptr = ptr_ring_consume(r)))
2876     destroy(ptr);
2877     - kfree(r->queue);
2878     + kvfree(r->queue);
2879     }
2880    
2881     #endif /* _LINUX_PTR_RING_H */
2882     diff --git a/include/linux/serdev.h b/include/linux/serdev.h
2883     index e69402d4a8ae..d609e6dc5bad 100644
2884     --- a/include/linux/serdev.h
2885     +++ b/include/linux/serdev.h
2886     @@ -184,7 +184,7 @@ static inline int serdev_controller_receive_buf(struct serdev_controller *ctrl,
2887     struct serdev_device *serdev = ctrl->serdev;
2888    
2889     if (!serdev || !serdev->ops->receive_buf)
2890     - return -EINVAL;
2891     + return 0;
2892    
2893     return serdev->ops->receive_buf(serdev, data, count);
2894     }
2895     diff --git a/include/linux/usb.h b/include/linux/usb.h
2896     index 9c63792a8134..4192a1755ccb 100644
2897     --- a/include/linux/usb.h
2898     +++ b/include/linux/usb.h
2899     @@ -1729,6 +1729,8 @@ static inline int usb_urb_dir_out(struct urb *urb)
2900     return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_OUT;
2901     }
2902    
2903     +int usb_urb_ep_type_check(const struct urb *urb);
2904     +
2905     void *usb_alloc_coherent(struct usb_device *dev, size_t size,
2906     gfp_t mem_flags, dma_addr_t *dma);
2907     void usb_free_coherent(struct usb_device *dev, size_t size,
2908     diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
2909     index f12fa5245a45..ea0ed58db97e 100644
2910     --- a/include/net/cfg80211.h
2911     +++ b/include/net/cfg80211.h
2912     @@ -815,6 +815,8 @@ struct cfg80211_csa_settings {
2913     u8 count;
2914     };
2915    
2916     +#define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10
2917     +
2918     /**
2919     * struct iface_combination_params - input parameters for interface combinations
2920     *
2921     diff --git a/include/net/red.h b/include/net/red.h
2922     index 9a9347710701..9665582c4687 100644
2923     --- a/include/net/red.h
2924     +++ b/include/net/red.h
2925     @@ -168,6 +168,17 @@ static inline void red_set_vars(struct red_vars *v)
2926     v->qcount = -1;
2927     }
2928    
2929     +static inline bool red_check_params(u32 qth_min, u32 qth_max, u8 Wlog)
2930     +{
2931     + if (fls(qth_min) + Wlog > 32)
2932     + return false;
2933     + if (fls(qth_max) + Wlog > 32)
2934     + return false;
2935     + if (qth_max < qth_min)
2936     + return false;
2937     + return true;
2938     +}
2939     +
2940     static inline void red_set_parms(struct red_parms *p,
2941     u32 qth_min, u32 qth_max, u8 Wlog, u8 Plog,
2942     u8 Scell_log, u8 *stab, u32 max_P)
2943     @@ -179,7 +190,7 @@ static inline void red_set_parms(struct red_parms *p,
2944     p->qth_max = qth_max << Wlog;
2945     p->Wlog = Wlog;
2946     p->Plog = Plog;
2947     - if (delta < 0)
2948     + if (delta <= 0)
2949     delta = 1;
2950     p->qth_delta = delta;
2951     if (!max_P) {
2952     diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
2953     index d7d8cba01469..749a42882437 100644
2954     --- a/include/net/sctp/sctp.h
2955     +++ b/include/net/sctp/sctp.h
2956     @@ -444,7 +444,8 @@ static inline int sctp_frag_point(const struct sctp_association *asoc, int pmtu)
2957     if (asoc->user_frag)
2958     frag = min_t(int, frag, asoc->user_frag);
2959    
2960     - frag = SCTP_TRUNC4(min_t(int, frag, SCTP_MAX_CHUNK_LEN));
2961     + frag = SCTP_TRUNC4(min_t(int, frag, SCTP_MAX_CHUNK_LEN -
2962     + sizeof(struct sctp_data_chunk)));
2963    
2964     return frag;
2965     }
2966     diff --git a/include/trace/events/clk.h b/include/trace/events/clk.h
2967     index 758607226bfd..2cd449328aee 100644
2968     --- a/include/trace/events/clk.h
2969     +++ b/include/trace/events/clk.h
2970     @@ -134,12 +134,12 @@ DECLARE_EVENT_CLASS(clk_parent,
2971    
2972     TP_STRUCT__entry(
2973     __string( name, core->name )
2974     - __string( pname, parent->name )
2975     + __string( pname, parent ? parent->name : "none" )
2976     ),
2977    
2978     TP_fast_assign(
2979     __assign_str(name, core->name);
2980     - __assign_str(pname, parent->name);
2981     + __assign_str(pname, parent ? parent->name : "none");
2982     ),
2983    
2984     TP_printk("%s %s", __get_str(name), __get_str(pname))
2985     diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h
2986     index 810e94160c12..f7c73ae62b7a 100644
2987     --- a/include/trace/events/xdp.h
2988     +++ b/include/trace/events/xdp.h
2989     @@ -8,6 +8,7 @@
2990     #include <linux/netdevice.h>
2991     #include <linux/filter.h>
2992     #include <linux/tracepoint.h>
2993     +#include <linux/bpf.h>
2994    
2995     #define __XDP_ACT_MAP(FN) \
2996     FN(ABORTED) \
2997     diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
2998     index f9339c3219bc..b5ae6488b890 100644
2999     --- a/kernel/bpf/verifier.c
3000     +++ b/kernel/bpf/verifier.c
3001     @@ -1865,15 +1865,13 @@ static int adjust_ptr_min_max_vals(struct bpf_verifier_env *env,
3002    
3003     dst_reg = &regs[dst];
3004    
3005     - if (WARN_ON_ONCE(known && (smin_val != smax_val))) {
3006     - print_verifier_state(&env->cur_state);
3007     - verbose("verifier internal error: known but bad sbounds\n");
3008     - return -EINVAL;
3009     - }
3010     - if (WARN_ON_ONCE(known && (umin_val != umax_val))) {
3011     - print_verifier_state(&env->cur_state);
3012     - verbose("verifier internal error: known but bad ubounds\n");
3013     - return -EINVAL;
3014     + if ((known && (smin_val != smax_val || umin_val != umax_val)) ||
3015     + smin_val > smax_val || umin_val > umax_val) {
3016     + /* Taint dst register if offset had invalid bounds derived from
3017     + * e.g. dead branches.
3018     + */
3019     + __mark_reg_unknown(dst_reg);
3020     + return 0;
3021     }
3022    
3023     if (BPF_CLASS(insn->code) != BPF_ALU64) {
3024     @@ -2075,6 +2073,15 @@ static int adjust_scalar_min_max_vals(struct bpf_verifier_env *env,
3025     src_known = tnum_is_const(src_reg.var_off);
3026     dst_known = tnum_is_const(dst_reg->var_off);
3027    
3028     + if ((src_known && (smin_val != smax_val || umin_val != umax_val)) ||
3029     + smin_val > smax_val || umin_val > umax_val) {
3030     + /* Taint dst register if offset had invalid bounds derived from
3031     + * e.g. dead branches.
3032     + */
3033     + __mark_reg_unknown(dst_reg);
3034     + return 0;
3035     + }
3036     +
3037     if (!src_known &&
3038     opcode != BPF_ADD && opcode != BPF_SUB && opcode != BPF_AND) {
3039     __mark_reg_unknown(dst_reg);
3040     diff --git a/kernel/events/core.c b/kernel/events/core.c
3041     index 8c20af8738ac..f42f7c7a8f84 100644
3042     --- a/kernel/events/core.c
3043     +++ b/kernel/events/core.c
3044     @@ -6719,6 +6719,7 @@ static void perf_event_namespaces_output(struct perf_event *event,
3045     struct perf_namespaces_event *namespaces_event = data;
3046     struct perf_output_handle handle;
3047     struct perf_sample_data sample;
3048     + u16 header_size = namespaces_event->event_id.header.size;
3049     int ret;
3050    
3051     if (!perf_event_namespaces_match(event))
3052     @@ -6729,7 +6730,7 @@ static void perf_event_namespaces_output(struct perf_event *event,
3053     ret = perf_output_begin(&handle, event,
3054     namespaces_event->event_id.header.size);
3055     if (ret)
3056     - return;
3057     + goto out;
3058    
3059     namespaces_event->event_id.pid = perf_event_pid(event,
3060     namespaces_event->task);
3061     @@ -6741,6 +6742,8 @@ static void perf_event_namespaces_output(struct perf_event *event,
3062     perf_event__output_id_sample(event, &handle, &sample);
3063    
3064     perf_output_end(&handle);
3065     +out:
3066     + namespaces_event->event_id.header.size = header_size;
3067     }
3068    
3069     static void perf_fill_ns_link_info(struct perf_ns_link_info *ns_link_info,
3070     diff --git a/kernel/kcov.c b/kernel/kcov.c
3071     index fc6af9e1308b..b11ef6e51f7e 100644
3072     --- a/kernel/kcov.c
3073     +++ b/kernel/kcov.c
3074     @@ -225,9 +225,9 @@ static int kcov_ioctl_locked(struct kcov *kcov, unsigned int cmd,
3075     if (unused != 0 || kcov->mode == KCOV_MODE_DISABLED ||
3076     kcov->area == NULL)
3077     return -EINVAL;
3078     - if (kcov->t != NULL)
3079     - return -EBUSY;
3080     t = current;
3081     + if (kcov->t != NULL || t->kcov != NULL)
3082     + return -EBUSY;
3083     /* Cache in task struct for performance. */
3084     t->kcov_size = kcov->size;
3085     t->kcov_area = kcov->area;
3086     diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
3087     index 4d362d3e4571..2f0f5720b123 100644
3088     --- a/kernel/locking/lockdep.c
3089     +++ b/kernel/locking/lockdep.c
3090     @@ -4777,7 +4777,8 @@ void lockdep_invariant_state(bool force)
3091     * Verify the former, enforce the latter.
3092     */
3093     WARN_ON_ONCE(!force && current->lockdep_depth);
3094     - invalidate_xhlock(&xhlock(current->xhlock_idx));
3095     + if (current->xhlocks)
3096     + invalidate_xhlock(&xhlock(current->xhlock_idx));
3097     }
3098    
3099     static int cross_lock(struct lockdep_map *lock)
3100     diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
3101     index 45a3928544ce..e73dcab8e9f0 100644
3102     --- a/kernel/trace/blktrace.c
3103     +++ b/kernel/trace/blktrace.c
3104     @@ -66,7 +66,8 @@ static struct tracer_flags blk_tracer_flags = {
3105     };
3106    
3107     /* Global reference count of probes */
3108     -static atomic_t blk_probes_ref = ATOMIC_INIT(0);
3109     +static DEFINE_MUTEX(blk_probe_mutex);
3110     +static int blk_probes_ref;
3111    
3112     static void blk_register_tracepoints(void);
3113     static void blk_unregister_tracepoints(void);
3114     @@ -329,11 +330,26 @@ static void blk_trace_free(struct blk_trace *bt)
3115     kfree(bt);
3116     }
3117    
3118     +static void get_probe_ref(void)
3119     +{
3120     + mutex_lock(&blk_probe_mutex);
3121     + if (++blk_probes_ref == 1)
3122     + blk_register_tracepoints();
3123     + mutex_unlock(&blk_probe_mutex);
3124     +}
3125     +
3126     +static void put_probe_ref(void)
3127     +{
3128     + mutex_lock(&blk_probe_mutex);
3129     + if (!--blk_probes_ref)
3130     + blk_unregister_tracepoints();
3131     + mutex_unlock(&blk_probe_mutex);
3132     +}
3133     +
3134     static void blk_trace_cleanup(struct blk_trace *bt)
3135     {
3136     blk_trace_free(bt);
3137     - if (atomic_dec_and_test(&blk_probes_ref))
3138     - blk_unregister_tracepoints();
3139     + put_probe_ref();
3140     }
3141    
3142     int blk_trace_remove(struct request_queue *q)
3143     @@ -538,8 +554,7 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
3144     if (cmpxchg(&q->blk_trace, NULL, bt))
3145     goto err;
3146    
3147     - if (atomic_inc_return(&blk_probes_ref) == 1)
3148     - blk_register_tracepoints();
3149     + get_probe_ref();
3150    
3151     ret = 0;
3152     err:
3153     @@ -1558,9 +1573,7 @@ static int blk_trace_remove_queue(struct request_queue *q)
3154     if (bt == NULL)
3155     return -EINVAL;
3156    
3157     - if (atomic_dec_and_test(&blk_probes_ref))
3158     - blk_unregister_tracepoints();
3159     -
3160     + put_probe_ref();
3161     blk_trace_free(bt);
3162     return 0;
3163     }
3164     @@ -1591,8 +1604,7 @@ static int blk_trace_setup_queue(struct request_queue *q,
3165     if (cmpxchg(&q->blk_trace, NULL, bt))
3166     goto free_bt;
3167    
3168     - if (atomic_inc_return(&blk_probes_ref) == 1)
3169     - blk_register_tracepoints();
3170     + get_probe_ref();
3171     return 0;
3172    
3173     free_bt:
3174     diff --git a/lib/oid_registry.c b/lib/oid_registry.c
3175     index 41b9e50711a7..b5f7d9986be1 100644
3176     --- a/lib/oid_registry.c
3177     +++ b/lib/oid_registry.c
3178     @@ -116,7 +116,7 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
3179     int count;
3180    
3181     if (v >= end)
3182     - return -EBADMSG;
3183     + goto bad;
3184    
3185     n = *v++;
3186     ret = count = snprintf(buffer, bufsize, "%u.%u", n / 40, n % 40);
3187     @@ -134,7 +134,7 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
3188     num = n & 0x7f;
3189     do {
3190     if (v >= end)
3191     - return -EBADMSG;
3192     + goto bad;
3193     n = *v++;
3194     num <<= 7;
3195     num |= n & 0x7f;
3196     @@ -148,6 +148,10 @@ int sprint_oid(const void *data, size_t datasize, char *buffer, size_t bufsize)
3197     }
3198    
3199     return ret;
3200     +
3201     +bad:
3202     + snprintf(buffer, bufsize, "(bad)");
3203     + return -EBADMSG;
3204     }
3205     EXPORT_SYMBOL_GPL(sprint_oid);
3206    
3207     diff --git a/mm/early_ioremap.c b/mm/early_ioremap.c
3208     index d04ac1ec0559..1826f191e72c 100644
3209     --- a/mm/early_ioremap.c
3210     +++ b/mm/early_ioremap.c
3211     @@ -111,7 +111,7 @@ __early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
3212     enum fixed_addresses idx;
3213     int i, slot;
3214    
3215     - WARN_ON(system_state != SYSTEM_BOOTING);
3216     + WARN_ON(system_state >= SYSTEM_RUNNING);
3217    
3218     slot = -1;
3219     for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
3220     diff --git a/mm/vmalloc.c b/mm/vmalloc.c
3221     index 673942094328..ebff729cc956 100644
3222     --- a/mm/vmalloc.c
3223     +++ b/mm/vmalloc.c
3224     @@ -1943,11 +1943,15 @@ void *vmalloc_exec(unsigned long size)
3225     }
3226    
3227     #if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32)
3228     -#define GFP_VMALLOC32 GFP_DMA32 | GFP_KERNEL
3229     +#define GFP_VMALLOC32 (GFP_DMA32 | GFP_KERNEL)
3230     #elif defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA)
3231     -#define GFP_VMALLOC32 GFP_DMA | GFP_KERNEL
3232     +#define GFP_VMALLOC32 (GFP_DMA | GFP_KERNEL)
3233     #else
3234     -#define GFP_VMALLOC32 GFP_KERNEL
3235     +/*
3236     + * 64b systems should always have either DMA or DMA32 zones. For others
3237     + * GFP_DMA32 should do the right thing and use the normal zone.
3238     + */
3239     +#define GFP_VMALLOC32 GFP_DMA32 | GFP_KERNEL
3240     #endif
3241    
3242     /**
3243     diff --git a/mm/vmscan.c b/mm/vmscan.c
3244     index eb2f0315b8c0..441f346fb5e2 100644
3245     --- a/mm/vmscan.c
3246     +++ b/mm/vmscan.c
3247     @@ -297,10 +297,13 @@ EXPORT_SYMBOL(register_shrinker);
3248     */
3249     void unregister_shrinker(struct shrinker *shrinker)
3250     {
3251     + if (!shrinker->nr_deferred)
3252     + return;
3253     down_write(&shrinker_rwsem);
3254     list_del(&shrinker->list);
3255     up_write(&shrinker_rwsem);
3256     kfree(shrinker->nr_deferred);
3257     + shrinker->nr_deferred = NULL;
3258     }
3259     EXPORT_SYMBOL(unregister_shrinker);
3260    
3261     diff --git a/net/core/dev.c b/net/core/dev.c
3262     index ffee085f0357..d33bbed640b1 100644
3263     --- a/net/core/dev.c
3264     +++ b/net/core/dev.c
3265     @@ -2792,7 +2792,7 @@ struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
3266    
3267     segs = skb_mac_gso_segment(skb, features);
3268    
3269     - if (unlikely(skb_needs_check(skb, tx_path)))
3270     + if (unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs)))
3271     skb_warn_bad_offload(skb);
3272    
3273     return segs;
3274     diff --git a/net/core/gen_estimator.c b/net/core/gen_estimator.c
3275     index 7c1ffd6f9501..00ecec4891f3 100644
3276     --- a/net/core/gen_estimator.c
3277     +++ b/net/core/gen_estimator.c
3278     @@ -159,7 +159,11 @@ int gen_new_estimator(struct gnet_stats_basic_packed *bstats,
3279     est->intvl_log = intvl_log;
3280     est->cpu_bstats = cpu_bstats;
3281    
3282     + if (stats_lock)
3283     + local_bh_disable();
3284     est_fetch_counters(est, &b);
3285     + if (stats_lock)
3286     + local_bh_enable();
3287     est->last_bytes = b.bytes;
3288     est->last_packets = b.packets;
3289     old = rcu_dereference_protected(*rate_est, 1);
3290     diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
3291     index 73a0399dc7a2..8dbfcd388633 100644
3292     --- a/net/decnet/af_decnet.c
3293     +++ b/net/decnet/af_decnet.c
3294     @@ -1339,6 +1339,12 @@ static int dn_setsockopt(struct socket *sock, int level, int optname, char __use
3295     lock_sock(sk);
3296     err = __dn_setsockopt(sock, level, optname, optval, optlen, 0);
3297     release_sock(sk);
3298     +#ifdef CONFIG_NETFILTER
3299     + /* we need to exclude all possible ENOPROTOOPTs except default case */
3300     + if (err == -ENOPROTOOPT && optname != DSO_LINKINFO &&
3301     + optname != DSO_STREAM && optname != DSO_SEQPACKET)
3302     + err = nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
3303     +#endif
3304    
3305     return err;
3306     }
3307     @@ -1446,15 +1452,6 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
3308     dn_nsp_send_disc(sk, 0x38, 0, sk->sk_allocation);
3309     break;
3310    
3311     - default:
3312     -#ifdef CONFIG_NETFILTER
3313     - return nf_setsockopt(sk, PF_DECnet, optname, optval, optlen);
3314     -#endif
3315     - case DSO_LINKINFO:
3316     - case DSO_STREAM:
3317     - case DSO_SEQPACKET:
3318     - return -ENOPROTOOPT;
3319     -
3320     case DSO_MAXWINDOW:
3321     if (optlen != sizeof(unsigned long))
3322     return -EINVAL;
3323     @@ -1502,6 +1499,12 @@ static int __dn_setsockopt(struct socket *sock, int level,int optname, char __us
3324     return -EINVAL;
3325     scp->info_loc = u.info;
3326     break;
3327     +
3328     + case DSO_LINKINFO:
3329     + case DSO_STREAM:
3330     + case DSO_SEQPACKET:
3331     + default:
3332     + return -ENOPROTOOPT;
3333     }
3334    
3335     return 0;
3336     @@ -1515,6 +1518,20 @@ static int dn_getsockopt(struct socket *sock, int level, int optname, char __use
3337     lock_sock(sk);
3338     err = __dn_getsockopt(sock, level, optname, optval, optlen, 0);
3339     release_sock(sk);
3340     +#ifdef CONFIG_NETFILTER
3341     + if (err == -ENOPROTOOPT && optname != DSO_STREAM &&
3342     + optname != DSO_SEQPACKET && optname != DSO_CONACCEPT &&
3343     + optname != DSO_CONREJECT) {
3344     + int len;
3345     +
3346     + if (get_user(len, optlen))
3347     + return -EFAULT;
3348     +
3349     + err = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
3350     + if (err >= 0)
3351     + err = put_user(len, optlen);
3352     + }
3353     +#endif
3354    
3355     return err;
3356     }
3357     @@ -1580,26 +1597,6 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
3358     r_data = &link;
3359     break;
3360    
3361     - default:
3362     -#ifdef CONFIG_NETFILTER
3363     - {
3364     - int ret, len;
3365     -
3366     - if (get_user(len, optlen))
3367     - return -EFAULT;
3368     -
3369     - ret = nf_getsockopt(sk, PF_DECnet, optname, optval, &len);
3370     - if (ret >= 0)
3371     - ret = put_user(len, optlen);
3372     - return ret;
3373     - }
3374     -#endif
3375     - case DSO_STREAM:
3376     - case DSO_SEQPACKET:
3377     - case DSO_CONACCEPT:
3378     - case DSO_CONREJECT:
3379     - return -ENOPROTOOPT;
3380     -
3381     case DSO_MAXWINDOW:
3382     if (r_len > sizeof(unsigned long))
3383     r_len = sizeof(unsigned long);
3384     @@ -1631,6 +1628,13 @@ static int __dn_getsockopt(struct socket *sock, int level,int optname, char __us
3385     r_len = sizeof(unsigned char);
3386     r_data = &scp->info_rem;
3387     break;
3388     +
3389     + case DSO_STREAM:
3390     + case DSO_SEQPACKET:
3391     + case DSO_CONACCEPT:
3392     + case DSO_CONREJECT:
3393     + default:
3394     + return -ENOPROTOOPT;
3395     }
3396    
3397     if (r_data) {
3398     diff --git a/net/ipv4/esp4_offload.c b/net/ipv4/esp4_offload.c
3399     index 56c49623bb9d..29b333a62ab0 100644
3400     --- a/net/ipv4/esp4_offload.c
3401     +++ b/net/ipv4/esp4_offload.c
3402     @@ -38,7 +38,8 @@ static struct sk_buff **esp4_gro_receive(struct sk_buff **head,
3403     __be32 spi;
3404     int err;
3405    
3406     - skb_pull(skb, offset);
3407     + if (!pskb_pull(skb, offset))
3408     + return NULL;
3409    
3410     if ((err = xfrm_parse_spi(skb, IPPROTO_ESP, &spi, &seq)) != 0)
3411     goto out;
3412     diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
3413     index 60fb1eb7d7d8..c7df4969f80a 100644
3414     --- a/net/ipv4/ip_sockglue.c
3415     +++ b/net/ipv4/ip_sockglue.c
3416     @@ -1251,11 +1251,8 @@ int ip_setsockopt(struct sock *sk, int level,
3417     if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
3418     optname != IP_IPSEC_POLICY &&
3419     optname != IP_XFRM_POLICY &&
3420     - !ip_mroute_opt(optname)) {
3421     - lock_sock(sk);
3422     + !ip_mroute_opt(optname))
3423     err = nf_setsockopt(sk, PF_INET, optname, optval, optlen);
3424     - release_sock(sk);
3425     - }
3426     #endif
3427     return err;
3428     }
3429     @@ -1280,12 +1277,9 @@ int compat_ip_setsockopt(struct sock *sk, int level, int optname,
3430     if (err == -ENOPROTOOPT && optname != IP_HDRINCL &&
3431     optname != IP_IPSEC_POLICY &&
3432     optname != IP_XFRM_POLICY &&
3433     - !ip_mroute_opt(optname)) {
3434     - lock_sock(sk);
3435     - err = compat_nf_setsockopt(sk, PF_INET, optname,
3436     - optval, optlen);
3437     - release_sock(sk);
3438     - }
3439     + !ip_mroute_opt(optname))
3440     + err = compat_nf_setsockopt(sk, PF_INET, optname, optval,
3441     + optlen);
3442     #endif
3443     return err;
3444     }
3445     diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
3446     index 17b4ca562944..24a8c2e63e3d 100644
3447     --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
3448     +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
3449     @@ -431,7 +431,7 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
3450     struct ipt_clusterip_tgt_info *cipinfo = par->targinfo;
3451     const struct ipt_entry *e = par->entryinfo;
3452     struct clusterip_config *config;
3453     - int ret;
3454     + int ret, i;
3455    
3456     if (par->nft_compat) {
3457     pr_err("cannot use CLUSTERIP target from nftables compat\n");
3458     @@ -450,8 +450,18 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par)
3459     pr_info("Please specify destination IP\n");
3460     return -EINVAL;
3461     }
3462     -
3463     - /* FIXME: further sanity checks */
3464     + if (cipinfo->num_local_nodes > ARRAY_SIZE(cipinfo->local_nodes)) {
3465     + pr_info("bad num_local_nodes %u\n", cipinfo->num_local_nodes);
3466     + return -EINVAL;
3467     + }
3468     + for (i = 0; i < cipinfo->num_local_nodes; i++) {
3469     + if (cipinfo->local_nodes[i] - 1 >=
3470     + sizeof(config->local_nodes) * 8) {
3471     + pr_info("bad local_nodes[%d] %u\n",
3472     + i, cipinfo->local_nodes[i]);
3473     + return -EINVAL;
3474     + }
3475     + }
3476    
3477     config = clusterip_config_find_get(par->net, e->ip.dst.s_addr, 1);
3478     if (!config) {
3479     diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
3480     index fe374da4bc13..997a96896f1a 100644
3481     --- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
3482     +++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
3483     @@ -218,15 +218,19 @@ getorigdst(struct sock *sk, int optval, void __user *user, int *len)
3484     struct nf_conntrack_tuple tuple;
3485    
3486     memset(&tuple, 0, sizeof(tuple));
3487     +
3488     + lock_sock(sk);
3489     tuple.src.u3.ip = inet->inet_rcv_saddr;
3490     tuple.src.u.tcp.port = inet->inet_sport;
3491     tuple.dst.u3.ip = inet->inet_daddr;
3492     tuple.dst.u.tcp.port = inet->inet_dport;
3493     tuple.src.l3num = PF_INET;
3494     tuple.dst.protonum = sk->sk_protocol;
3495     + release_sock(sk);
3496    
3497     /* We only do TCP and SCTP at the moment: is there a better way? */
3498     - if (sk->sk_protocol != IPPROTO_TCP && sk->sk_protocol != IPPROTO_SCTP) {
3499     + if (tuple.dst.protonum != IPPROTO_TCP &&
3500     + tuple.dst.protonum != IPPROTO_SCTP) {
3501     pr_debug("SO_ORIGINAL_DST: Not a TCP/SCTP socket\n");
3502     return -ENOPROTOOPT;
3503     }
3504     diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c
3505     index 1ea9d794447e..f52c314d4c97 100644
3506     --- a/net/ipv6/esp6_offload.c
3507     +++ b/net/ipv6/esp6_offload.c
3508     @@ -60,7 +60,8 @@ static struct sk_buff **esp6_gro_receive(struct sk_buff **head,
3509     int nhoff;
3510     int err;
3511    
3512     - skb_pull(skb, offset);
3513     + if (!pskb_pull(skb, offset))
3514     + return NULL;
3515    
3516     if ((err = xfrm_parse_spi(skb, IPPROTO_ESP, &spi, &seq)) != 0)
3517     goto out;
3518     diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
3519     index 3b251760cb8c..24b69384bdbf 100644
3520     --- a/net/ipv6/ipv6_sockglue.c
3521     +++ b/net/ipv6/ipv6_sockglue.c
3522     @@ -915,12 +915,8 @@ int ipv6_setsockopt(struct sock *sk, int level, int optname,
3523     #ifdef CONFIG_NETFILTER
3524     /* we need to exclude all possible ENOPROTOOPTs except default case */
3525     if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
3526     - optname != IPV6_XFRM_POLICY) {
3527     - lock_sock(sk);
3528     - err = nf_setsockopt(sk, PF_INET6, optname, optval,
3529     - optlen);
3530     - release_sock(sk);
3531     - }
3532     + optname != IPV6_XFRM_POLICY)
3533     + err = nf_setsockopt(sk, PF_INET6, optname, optval, optlen);
3534     #endif
3535     return err;
3536     }
3537     @@ -950,12 +946,9 @@ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
3538     #ifdef CONFIG_NETFILTER
3539     /* we need to exclude all possible ENOPROTOOPTs except default case */
3540     if (err == -ENOPROTOOPT && optname != IPV6_IPSEC_POLICY &&
3541     - optname != IPV6_XFRM_POLICY) {
3542     - lock_sock(sk);
3543     - err = compat_nf_setsockopt(sk, PF_INET6, optname,
3544     - optval, optlen);
3545     - release_sock(sk);
3546     - }
3547     + optname != IPV6_XFRM_POLICY)
3548     + err = compat_nf_setsockopt(sk, PF_INET6, optname, optval,
3549     + optlen);
3550     #endif
3551     return err;
3552     }
3553     diff --git a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
3554     index fe01dc953c56..b807478c4f7f 100644
3555     --- a/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
3556     +++ b/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
3557     @@ -226,20 +226,27 @@ static const struct nf_hook_ops ipv6_conntrack_ops[] = {
3558     static int
3559     ipv6_getorigdst(struct sock *sk, int optval, void __user *user, int *len)
3560     {
3561     - const struct inet_sock *inet = inet_sk(sk);
3562     + struct nf_conntrack_tuple tuple = { .src.l3num = NFPROTO_IPV6 };
3563     const struct ipv6_pinfo *inet6 = inet6_sk(sk);
3564     + const struct inet_sock *inet = inet_sk(sk);
3565     const struct nf_conntrack_tuple_hash *h;
3566     struct sockaddr_in6 sin6;
3567     - struct nf_conntrack_tuple tuple = { .src.l3num = NFPROTO_IPV6 };
3568     struct nf_conn *ct;
3569     + __be32 flow_label;
3570     + int bound_dev_if;
3571    
3572     + lock_sock(sk);
3573     tuple.src.u3.in6 = sk->sk_v6_rcv_saddr;
3574     tuple.src.u.tcp.port = inet->inet_sport;
3575     tuple.dst.u3.in6 = sk->sk_v6_daddr;
3576     tuple.dst.u.tcp.port = inet->inet_dport;
3577     tuple.dst.protonum = sk->sk_protocol;
3578     + bound_dev_if = sk->sk_bound_dev_if;
3579     + flow_label = inet6->flow_label;
3580     + release_sock(sk);
3581    
3582     - if (sk->sk_protocol != IPPROTO_TCP && sk->sk_protocol != IPPROTO_SCTP)
3583     + if (tuple.dst.protonum != IPPROTO_TCP &&
3584     + tuple.dst.protonum != IPPROTO_SCTP)
3585     return -ENOPROTOOPT;
3586    
3587     if (*len < 0 || (unsigned int) *len < sizeof(sin6))
3588     @@ -257,14 +264,13 @@ ipv6_getorigdst(struct sock *sk, int optval, void __user *user, int *len)
3589    
3590     sin6.sin6_family = AF_INET6;
3591     sin6.sin6_port = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.tcp.port;
3592     - sin6.sin6_flowinfo = inet6->flow_label & IPV6_FLOWINFO_MASK;
3593     + sin6.sin6_flowinfo = flow_label & IPV6_FLOWINFO_MASK;
3594     memcpy(&sin6.sin6_addr,
3595     &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3.in6,
3596     sizeof(sin6.sin6_addr));
3597    
3598     nf_ct_put(ct);
3599     - sin6.sin6_scope_id = ipv6_iface_scope_id(&sin6.sin6_addr,
3600     - sk->sk_bound_dev_if);
3601     + sin6.sin6_scope_id = ipv6_iface_scope_id(&sin6.sin6_addr, bound_dev_if);
3602     return copy_to_user(user, &sin6, sizeof(sin6)) ? -EFAULT : 0;
3603     }
3604    
3605     diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c
3606     index c5fa634e63ca..58d53b907d53 100644
3607     --- a/net/kcm/kcmsock.c
3608     +++ b/net/kcm/kcmsock.c
3609     @@ -1387,8 +1387,13 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
3610     if (!csk)
3611     return -EINVAL;
3612    
3613     - /* We must prevent loops or risk deadlock ! */
3614     - if (csk->sk_family == PF_KCM)
3615     + /* Only allow TCP sockets to be attached for now */
3616     + if ((csk->sk_family != AF_INET && csk->sk_family != AF_INET6) ||
3617     + csk->sk_protocol != IPPROTO_TCP)
3618     + return -EOPNOTSUPP;
3619     +
3620     + /* Don't allow listeners or closed sockets */
3621     + if (csk->sk_state == TCP_LISTEN || csk->sk_state == TCP_CLOSE)
3622     return -EOPNOTSUPP;
3623    
3624     psock = kmem_cache_zalloc(kcm_psockp, GFP_KERNEL);
3625     @@ -1405,9 +1410,18 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
3626     return err;
3627     }
3628    
3629     - sock_hold(csk);
3630     -
3631     write_lock_bh(&csk->sk_callback_lock);
3632     +
3633     + /* Check if sk_user_data is aready by KCM or someone else.
3634     + * Must be done under lock to prevent race conditions.
3635     + */
3636     + if (csk->sk_user_data) {
3637     + write_unlock_bh(&csk->sk_callback_lock);
3638     + strp_done(&psock->strp);
3639     + kmem_cache_free(kcm_psockp, psock);
3640     + return -EALREADY;
3641     + }
3642     +
3643     psock->save_data_ready = csk->sk_data_ready;
3644     psock->save_write_space = csk->sk_write_space;
3645     psock->save_state_change = csk->sk_state_change;
3646     @@ -1415,8 +1429,11 @@ static int kcm_attach(struct socket *sock, struct socket *csock,
3647     csk->sk_data_ready = psock_data_ready;
3648     csk->sk_write_space = psock_write_space;
3649     csk->sk_state_change = psock_state_change;
3650     +
3651     write_unlock_bh(&csk->sk_callback_lock);
3652    
3653     + sock_hold(csk);
3654     +
3655     /* Finished initialization, now add the psock to the MUX. */
3656     spin_lock_bh(&mux->lock);
3657     head = &mux->psocks;
3658     diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
3659     index d8571f414208..60c92158a2cd 100644
3660     --- a/net/netfilter/x_tables.c
3661     +++ b/net/netfilter/x_tables.c
3662     @@ -39,7 +39,6 @@ MODULE_LICENSE("GPL");
3663     MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
3664     MODULE_DESCRIPTION("{ip,ip6,arp,eb}_tables backend module");
3665    
3666     -#define SMP_ALIGN(x) (((x) + SMP_CACHE_BYTES-1) & ~(SMP_CACHE_BYTES-1))
3667     #define XT_PCPU_BLOCK_SIZE 4096
3668    
3669     struct compat_delta {
3670     @@ -210,6 +209,9 @@ xt_request_find_match(uint8_t nfproto, const char *name, uint8_t revision)
3671     {
3672     struct xt_match *match;
3673    
3674     + if (strnlen(name, XT_EXTENSION_MAXNAMELEN) == XT_EXTENSION_MAXNAMELEN)
3675     + return ERR_PTR(-EINVAL);
3676     +
3677     match = xt_find_match(nfproto, name, revision);
3678     if (IS_ERR(match)) {
3679     request_module("%st_%s", xt_prefix[nfproto], name);
3680     @@ -252,6 +254,9 @@ struct xt_target *xt_request_find_target(u8 af, const char *name, u8 revision)
3681     {
3682     struct xt_target *target;
3683    
3684     + if (strnlen(name, XT_EXTENSION_MAXNAMELEN) == XT_EXTENSION_MAXNAMELEN)
3685     + return ERR_PTR(-EINVAL);
3686     +
3687     target = xt_find_target(af, name, revision);
3688     if (IS_ERR(target)) {
3689     request_module("%st_%s", xt_prefix[af], name);
3690     @@ -1000,7 +1005,7 @@ struct xt_table_info *xt_alloc_table_info(unsigned int size)
3691     return NULL;
3692    
3693     /* Pedantry: prevent them from hitting BUG() in vmalloc.c --RR */
3694     - if ((SMP_ALIGN(size) >> PAGE_SHIFT) + 2 > totalram_pages)
3695     + if ((size >> PAGE_SHIFT) + 2 > totalram_pages)
3696     return NULL;
3697    
3698     info = kvmalloc(sz, GFP_KERNEL);
3699     diff --git a/net/netfilter/xt_RATEEST.c b/net/netfilter/xt_RATEEST.c
3700     index 498b54fd04d7..141c295191f6 100644
3701     --- a/net/netfilter/xt_RATEEST.c
3702     +++ b/net/netfilter/xt_RATEEST.c
3703     @@ -39,23 +39,31 @@ static void xt_rateest_hash_insert(struct xt_rateest *est)
3704     hlist_add_head(&est->list, &rateest_hash[h]);
3705     }
3706    
3707     -struct xt_rateest *xt_rateest_lookup(const char *name)
3708     +static struct xt_rateest *__xt_rateest_lookup(const char *name)
3709     {
3710     struct xt_rateest *est;
3711     unsigned int h;
3712    
3713     h = xt_rateest_hash(name);
3714     - mutex_lock(&xt_rateest_mutex);
3715     hlist_for_each_entry(est, &rateest_hash[h], list) {
3716     if (strcmp(est->name, name) == 0) {
3717     est->refcnt++;
3718     - mutex_unlock(&xt_rateest_mutex);
3719     return est;
3720     }
3721     }
3722     - mutex_unlock(&xt_rateest_mutex);
3723     +
3724     return NULL;
3725     }
3726     +
3727     +struct xt_rateest *xt_rateest_lookup(const char *name)
3728     +{
3729     + struct xt_rateest *est;
3730     +
3731     + mutex_lock(&xt_rateest_mutex);
3732     + est = __xt_rateest_lookup(name);
3733     + mutex_unlock(&xt_rateest_mutex);
3734     + return est;
3735     +}
3736     EXPORT_SYMBOL_GPL(xt_rateest_lookup);
3737    
3738     void xt_rateest_put(struct xt_rateest *est)
3739     @@ -100,8 +108,10 @@ static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par)
3740    
3741     net_get_random_once(&jhash_rnd, sizeof(jhash_rnd));
3742    
3743     - est = xt_rateest_lookup(info->name);
3744     + mutex_lock(&xt_rateest_mutex);
3745     + est = __xt_rateest_lookup(info->name);
3746     if (est) {
3747     + mutex_unlock(&xt_rateest_mutex);
3748     /*
3749     * If estimator parameters are specified, they must match the
3750     * existing estimator.
3751     @@ -139,11 +149,13 @@ static int xt_rateest_tg_checkentry(const struct xt_tgchk_param *par)
3752    
3753     info->est = est;
3754     xt_rateest_hash_insert(est);
3755     + mutex_unlock(&xt_rateest_mutex);
3756     return 0;
3757    
3758     err2:
3759     kfree(est);
3760     err1:
3761     + mutex_unlock(&xt_rateest_mutex);
3762     return ret;
3763     }
3764    
3765     diff --git a/net/netfilter/xt_bpf.c b/net/netfilter/xt_bpf.c
3766     index 29123934887b..5185ff0f8f58 100644
3767     --- a/net/netfilter/xt_bpf.c
3768     +++ b/net/netfilter/xt_bpf.c
3769     @@ -27,6 +27,9 @@ static int __bpf_mt_check_bytecode(struct sock_filter *insns, __u16 len,
3770     {
3771     struct sock_fprog_kern program;
3772    
3773     + if (len > XT_BPF_MAX_NUM_INSTR)
3774     + return -EINVAL;
3775     +
3776     program.len = len;
3777     program.filter = insns;
3778    
3779     @@ -55,6 +58,9 @@ static int __bpf_mt_check_path(const char *path, struct bpf_prog **ret)
3780     mm_segment_t oldfs = get_fs();
3781     int retval, fd;
3782    
3783     + if (strnlen(path, XT_BPF_PATH_MAX) == XT_BPF_PATH_MAX)
3784     + return -EINVAL;
3785     +
3786     set_fs(KERNEL_DS);
3787     fd = bpf_obj_get_user(path);
3788     set_fs(oldfs);
3789     diff --git a/net/netfilter/xt_cgroup.c b/net/netfilter/xt_cgroup.c
3790     index 1db1ce59079f..891f4e7e8ea7 100644
3791     --- a/net/netfilter/xt_cgroup.c
3792     +++ b/net/netfilter/xt_cgroup.c
3793     @@ -52,6 +52,7 @@ static int cgroup_mt_check_v1(const struct xt_mtchk_param *par)
3794     return -EINVAL;
3795     }
3796    
3797     + info->priv = NULL;
3798     if (info->has_path) {
3799     cgrp = cgroup_get_from_path(info->path);
3800     if (IS_ERR(cgrp)) {
3801     diff --git a/net/rds/connection.c b/net/rds/connection.c
3802     index 7ee2d5d68b78..9efc82c665b5 100644
3803     --- a/net/rds/connection.c
3804     +++ b/net/rds/connection.c
3805     @@ -366,6 +366,8 @@ void rds_conn_shutdown(struct rds_conn_path *cp)
3806     * to the conn hash, so we never trigger a reconnect on this
3807     * conn - the reconnect is always triggered by the active peer. */
3808     cancel_delayed_work_sync(&cp->cp_conn_w);
3809     + if (conn->c_destroy_in_prog)
3810     + return;
3811     rcu_read_lock();
3812     if (!hlist_unhashed(&conn->c_hash_node)) {
3813     rcu_read_unlock();
3814     @@ -445,7 +447,6 @@ void rds_conn_destroy(struct rds_connection *conn)
3815     */
3816     rds_cong_remove_conn(conn);
3817    
3818     - put_net(conn->c_net);
3819     kfree(conn->c_path);
3820     kmem_cache_free(rds_conn_slab, conn);
3821    
3822     diff --git a/net/rds/rds.h b/net/rds/rds.h
3823     index c349c71babff..d09f6c1facb4 100644
3824     --- a/net/rds/rds.h
3825     +++ b/net/rds/rds.h
3826     @@ -150,7 +150,7 @@ struct rds_connection {
3827    
3828     /* Protocol version */
3829     unsigned int c_version;
3830     - struct net *c_net;
3831     + possible_net_t c_net;
3832    
3833     struct list_head c_map_item;
3834     unsigned long c_map_queued;
3835     @@ -165,13 +165,13 @@ struct rds_connection {
3836     static inline
3837     struct net *rds_conn_net(struct rds_connection *conn)
3838     {
3839     - return conn->c_net;
3840     + return read_pnet(&conn->c_net);
3841     }
3842    
3843     static inline
3844     void rds_conn_net_set(struct rds_connection *conn, struct net *net)
3845     {
3846     - conn->c_net = get_net(net);
3847     + write_pnet(&conn->c_net, net);
3848     }
3849    
3850     #define RDS_FLAG_CONG_BITMAP 0x01
3851     diff --git a/net/rds/tcp.c b/net/rds/tcp.c
3852     index 6b7ee71f40c6..2a08bf75d008 100644
3853     --- a/net/rds/tcp.c
3854     +++ b/net/rds/tcp.c
3855     @@ -306,7 +306,8 @@ static void rds_tcp_conn_free(void *arg)
3856     rdsdebug("freeing tc %p\n", tc);
3857    
3858     spin_lock_irqsave(&rds_tcp_conn_lock, flags);
3859     - list_del(&tc->t_tcp_node);
3860     + if (!tc->t_tcp_node_detached)
3861     + list_del(&tc->t_tcp_node);
3862     spin_unlock_irqrestore(&rds_tcp_conn_lock, flags);
3863    
3864     kmem_cache_free(rds_tcp_conn_slab, tc);
3865     @@ -527,12 +528,16 @@ static void rds_tcp_kill_sock(struct net *net)
3866     rds_tcp_listen_stop(lsock, &rtn->rds_tcp_accept_w);
3867     spin_lock_irq(&rds_tcp_conn_lock);
3868     list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) {
3869     - struct net *c_net = tc->t_cpath->cp_conn->c_net;
3870     + struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net);
3871    
3872     if (net != c_net || !tc->t_sock)
3873     continue;
3874     - if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn))
3875     + if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn)) {
3876     list_move_tail(&tc->t_tcp_node, &tmp_list);
3877     + } else {
3878     + list_del(&tc->t_tcp_node);
3879     + tc->t_tcp_node_detached = true;
3880     + }
3881     }
3882     spin_unlock_irq(&rds_tcp_conn_lock);
3883     list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node) {
3884     @@ -586,7 +591,7 @@ static void rds_tcp_sysctl_reset(struct net *net)
3885    
3886     spin_lock_irq(&rds_tcp_conn_lock);
3887     list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) {
3888     - struct net *c_net = tc->t_cpath->cp_conn->c_net;
3889     + struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net);
3890    
3891     if (net != c_net || !tc->t_sock)
3892     continue;
3893     diff --git a/net/rds/tcp.h b/net/rds/tcp.h
3894     index 1aafbf7c3011..e7858ee8ed8b 100644
3895     --- a/net/rds/tcp.h
3896     +++ b/net/rds/tcp.h
3897     @@ -12,6 +12,7 @@ struct rds_tcp_incoming {
3898     struct rds_tcp_connection {
3899    
3900     struct list_head t_tcp_node;
3901     + bool t_tcp_node_detached;
3902     struct rds_conn_path *t_cpath;
3903     /* t_conn_path_lock synchronizes the connection establishment between
3904     * rds_tcp_accept_one and rds_tcp_conn_path_connect
3905     diff --git a/net/sched/sch_choke.c b/net/sched/sch_choke.c
3906     index b30a2c70bd48..531250fceb9e 100644
3907     --- a/net/sched/sch_choke.c
3908     +++ b/net/sched/sch_choke.c
3909     @@ -369,6 +369,9 @@ static int choke_change(struct Qdisc *sch, struct nlattr *opt)
3910    
3911     ctl = nla_data(tb[TCA_CHOKE_PARMS]);
3912    
3913     + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
3914     + return -EINVAL;
3915     +
3916     if (ctl->limit > CHOKE_MAX_QUEUE)
3917     return -EINVAL;
3918    
3919     diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c
3920     index 17c7130454bd..bc30f9186ac6 100644
3921     --- a/net/sched/sch_gred.c
3922     +++ b/net/sched/sch_gred.c
3923     @@ -356,6 +356,9 @@ static inline int gred_change_vq(struct Qdisc *sch, int dp,
3924     struct gred_sched *table = qdisc_priv(sch);
3925     struct gred_sched_data *q = table->tab[dp];
3926    
3927     + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
3928     + return -EINVAL;
3929     +
3930     if (!q) {
3931     table->tab[dp] = q = *prealloc;
3932     *prealloc = NULL;
3933     diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c
3934     index 93b9d70a9b28..d87c41e82917 100644
3935     --- a/net/sched/sch_red.c
3936     +++ b/net/sched/sch_red.c
3937     @@ -184,6 +184,8 @@ static int red_change(struct Qdisc *sch, struct nlattr *opt)
3938     max_P = tb[TCA_RED_MAX_P] ? nla_get_u32(tb[TCA_RED_MAX_P]) : 0;
3939    
3940     ctl = nla_data(tb[TCA_RED_PARMS]);
3941     + if (!red_check_params(ctl->qth_min, ctl->qth_max, ctl->Wlog))
3942     + return -EINVAL;
3943    
3944     if (ctl->limit > 0) {
3945     child = fifo_create_dflt(sch, &bfifo_qdisc_ops, ctl->limit);
3946     diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c
3947     index 74ea863b8240..3fbf20126045 100644
3948     --- a/net/sched/sch_sfq.c
3949     +++ b/net/sched/sch_sfq.c
3950     @@ -637,6 +637,9 @@ static int sfq_change(struct Qdisc *sch, struct nlattr *opt)
3951     if (ctl->divisor &&
3952     (!is_power_of_2(ctl->divisor) || ctl->divisor > 65536))
3953     return -EINVAL;
3954     + if (ctl_v1 && !red_check_params(ctl_v1->qth_min, ctl_v1->qth_max,
3955     + ctl_v1->Wlog))
3956     + return -EINVAL;
3957     if (ctl_v1 && ctl_v1->qth_min) {
3958     p = kmalloc(sizeof(*p), GFP_KERNEL);
3959     if (!p)
3960     diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
3961     index 2966ff400755..39ac91060bc2 100644
3962     --- a/net/sctp/outqueue.c
3963     +++ b/net/sctp/outqueue.c
3964     @@ -368,7 +368,8 @@ static int sctp_prsctp_prune_sent(struct sctp_association *asoc,
3965     asoc->abandoned_sent[SCTP_PR_INDEX(PRIO)]++;
3966     streamout->abandoned_sent[SCTP_PR_INDEX(PRIO)]++;
3967    
3968     - if (!chk->tsn_gap_acked) {
3969     + if (queue != &asoc->outqueue.retransmit &&
3970     + !chk->tsn_gap_acked) {
3971     if (chk->transport)
3972     chk->transport->flight_size -=
3973     sctp_data_size(chk);
3974     @@ -1429,7 +1430,8 @@ static void sctp_check_transmitted(struct sctp_outq *q,
3975     /* If this chunk has not been acked, stop
3976     * considering it as 'outstanding'.
3977     */
3978     - if (!tchunk->tsn_gap_acked) {
3979     + if (transmitted_queue != &q->retransmit &&
3980     + !tchunk->tsn_gap_acked) {
3981     if (tchunk->transport)
3982     tchunk->transport->flight_size -=
3983     sctp_data_size(tchunk);
3984     diff --git a/net/sctp/socket.c b/net/sctp/socket.c
3985     index 1c08d86efe94..3c8b92667866 100644
3986     --- a/net/sctp/socket.c
3987     +++ b/net/sctp/socket.c
3988     @@ -3136,9 +3136,9 @@ static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsign
3989     */
3990     static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen)
3991     {
3992     + struct sctp_sock *sp = sctp_sk(sk);
3993     struct sctp_assoc_value params;
3994     struct sctp_association *asoc;
3995     - struct sctp_sock *sp = sctp_sk(sk);
3996     int val;
3997    
3998     if (optlen == sizeof(int)) {
3999     @@ -3154,26 +3154,35 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned
4000     if (copy_from_user(&params, optval, optlen))
4001     return -EFAULT;
4002     val = params.assoc_value;
4003     - } else
4004     + } else {
4005     return -EINVAL;
4006     + }
4007    
4008     - if ((val != 0) && ((val < 8) || (val > SCTP_MAX_CHUNK_LEN)))
4009     - return -EINVAL;
4010     + if (val) {
4011     + int min_len, max_len;
4012    
4013     - asoc = sctp_id2assoc(sk, params.assoc_id);
4014     - if (!asoc && params.assoc_id && sctp_style(sk, UDP))
4015     - return -EINVAL;
4016     + min_len = SCTP_DEFAULT_MINSEGMENT - sp->pf->af->net_header_len;
4017     + min_len -= sizeof(struct sctphdr) +
4018     + sizeof(struct sctp_data_chunk);
4019     +
4020     + max_len = SCTP_MAX_CHUNK_LEN - sizeof(struct sctp_data_chunk);
4021    
4022     + if (val < min_len || val > max_len)
4023     + return -EINVAL;
4024     + }
4025     +
4026     + asoc = sctp_id2assoc(sk, params.assoc_id);
4027     if (asoc) {
4028     if (val == 0) {
4029     - val = asoc->pathmtu;
4030     - val -= sp->pf->af->net_header_len;
4031     + val = asoc->pathmtu - sp->pf->af->net_header_len;
4032     val -= sizeof(struct sctphdr) +
4033     - sizeof(struct sctp_data_chunk);
4034     + sizeof(struct sctp_data_chunk);
4035     }
4036     asoc->user_frag = val;
4037     asoc->frag_point = sctp_frag_point(asoc, asoc->pathmtu);
4038     } else {
4039     + if (params.assoc_id && sctp_style(sk, UDP))
4040     + return -EINVAL;
4041     sp->user_frag = val;
4042     }
4043    
4044     diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c
4045     index e21991fe883a..2c63f7b169b5 100644
4046     --- a/net/vmw_vsock/hyperv_transport.c
4047     +++ b/net/vmw_vsock/hyperv_transport.c
4048     @@ -488,7 +488,7 @@ static void hvs_release(struct vsock_sock *vsk)
4049    
4050     lock_sock(sk);
4051    
4052     - sk->sk_state = SS_DISCONNECTING;
4053     + sk->sk_state = TCP_CLOSING;
4054     vsock_remove_sock(vsk);
4055    
4056     release_sock(sk);
4057     diff --git a/net/wireless/core.c b/net/wireless/core.c
4058     index 7b33e8c366bc..33ce0484b2a0 100644
4059     --- a/net/wireless/core.c
4060     +++ b/net/wireless/core.c
4061     @@ -439,6 +439,8 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv,
4062     if (rv)
4063     goto use_default_name;
4064     } else {
4065     + int rv;
4066     +
4067     use_default_name:
4068     /* NOTE: This is *probably* safe w/out holding rtnl because of
4069     * the restrictions on phy names. Probably this call could
4070     @@ -446,7 +448,11 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv,
4071     * phyX. But, might should add some locking and check return
4072     * value, and use a different name if this one exists?
4073     */
4074     - dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
4075     + rv = dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
4076     + if (rv < 0) {
4077     + kfree(rdev);
4078     + return NULL;
4079     + }
4080     }
4081    
4082     INIT_LIST_HEAD(&rdev->wiphy.wdev_list);
4083     diff --git a/net/wireless/core.h b/net/wireless/core.h
4084     index 705835047f98..90f90c7d8bf9 100644
4085     --- a/net/wireless/core.h
4086     +++ b/net/wireless/core.h
4087     @@ -502,8 +502,6 @@ void cfg80211_stop_p2p_device(struct cfg80211_registered_device *rdev,
4088     void cfg80211_stop_nan(struct cfg80211_registered_device *rdev,
4089     struct wireless_dev *wdev);
4090    
4091     -#define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10
4092     -
4093     #ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS
4094     #define CFG80211_DEV_WARN_ON(cond) WARN_ON(cond)
4095     #else
4096     diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
4097     index 347ab31574d5..da6447389ffb 100644
4098     --- a/net/xfrm/xfrm_input.c
4099     +++ b/net/xfrm/xfrm_input.c
4100     @@ -207,7 +207,7 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
4101     xfrm_address_t *daddr;
4102     struct xfrm_mode *inner_mode;
4103     u32 mark = skb->mark;
4104     - unsigned int family;
4105     + unsigned int family = AF_UNSPEC;
4106     int decaps = 0;
4107     int async = 0;
4108     bool xfrm_gro = false;
4109     @@ -216,6 +216,16 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type)
4110    
4111     if (encap_type < 0) {
4112     x = xfrm_input_state(skb);
4113     +
4114     + if (unlikely(x->km.state != XFRM_STATE_VALID)) {
4115     + if (x->km.state == XFRM_STATE_ACQ)
4116     + XFRM_INC_STATS(net, LINUX_MIB_XFRMACQUIREERROR);
4117     + else
4118     + XFRM_INC_STATS(net,
4119     + LINUX_MIB_XFRMINSTATEINVALID);
4120     + goto drop;
4121     + }
4122     +
4123     family = x->outer_mode->afinfo->family;
4124    
4125     /* An encap_type of -1 indicates async resumption. */
4126     diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
4127     index 688ed34f0671..22f5da66357b 100644
4128     --- a/net/xfrm/xfrm_policy.c
4129     +++ b/net/xfrm/xfrm_policy.c
4130     @@ -610,7 +610,8 @@ static void xfrm_hash_rebuild(struct work_struct *work)
4131    
4132     /* re-insert all policies by order of creation */
4133     list_for_each_entry_reverse(policy, &net->xfrm.policy_all, walk.all) {
4134     - if (xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
4135     + if (policy->walk.dead ||
4136     + xfrm_policy_id2dir(policy->index) >= XFRM_POLICY_MAX) {
4137     /* skip socket policies */
4138     continue;
4139     }
4140     @@ -975,8 +976,6 @@ int xfrm_policy_flush(struct net *net, u8 type, bool task_valid)
4141     }
4142     if (!cnt)
4143     err = -ESRCH;
4144     - else
4145     - xfrm_policy_cache_flush();
4146     out:
4147     spin_unlock_bh(&net->xfrm.xfrm_policy_lock);
4148     return err;
4149     @@ -1169,9 +1168,15 @@ static struct xfrm_policy *xfrm_sk_policy_lookup(const struct sock *sk, int dir,
4150     again:
4151     pol = rcu_dereference(sk->sk_policy[dir]);
4152     if (pol != NULL) {
4153     - bool match = xfrm_selector_match(&pol->selector, fl, family);
4154     + bool match;
4155     int err = 0;
4156    
4157     + if (pol->family != family) {
4158     + pol = NULL;
4159     + goto out;
4160     + }
4161     +
4162     + match = xfrm_selector_match(&pol->selector, fl, family);
4163     if (match) {
4164     if ((sk->sk_mark & pol->mark.m) != pol->mark.v) {
4165     pol = NULL;
4166     @@ -1738,6 +1743,8 @@ void xfrm_policy_cache_flush(void)
4167     bool found = 0;
4168     int cpu;
4169    
4170     + might_sleep();
4171     +
4172     local_bh_disable();
4173     rcu_read_lock();
4174     for_each_possible_cpu(cpu) {
4175     diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
4176     index 1f5cee2269af..58be0e7f4c7d 100644
4177     --- a/net/xfrm/xfrm_state.c
4178     +++ b/net/xfrm/xfrm_state.c
4179     @@ -313,13 +313,14 @@ xfrm_get_type_offload(u8 proto, unsigned short family, bool try_load)
4180     if ((type && !try_module_get(type->owner)))
4181     type = NULL;
4182    
4183     + rcu_read_unlock();
4184     +
4185     if (!type && try_load) {
4186     request_module("xfrm-offload-%d-%d", family, proto);
4187     try_load = 0;
4188     goto retry;
4189     }
4190    
4191     - rcu_read_unlock();
4192     return type;
4193     }
4194    
4195     diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
4196     index e44a0fed48dd..0edf38d2afd9 100644
4197     --- a/net/xfrm/xfrm_user.c
4198     +++ b/net/xfrm/xfrm_user.c
4199     @@ -1417,11 +1417,14 @@ static void copy_templates(struct xfrm_policy *xp, struct xfrm_user_tmpl *ut,
4200    
4201     static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
4202     {
4203     + u16 prev_family;
4204     int i;
4205    
4206     if (nr > XFRM_MAX_DEPTH)
4207     return -EINVAL;
4208    
4209     + prev_family = family;
4210     +
4211     for (i = 0; i < nr; i++) {
4212     /* We never validated the ut->family value, so many
4213     * applications simply leave it at zero. The check was
4214     @@ -1433,6 +1436,12 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
4215     if (!ut[i].family)
4216     ut[i].family = family;
4217    
4218     + if ((ut[i].mode == XFRM_MODE_TRANSPORT) &&
4219     + (ut[i].family != prev_family))
4220     + return -EINVAL;
4221     +
4222     + prev_family = ut[i].family;
4223     +
4224     switch (ut[i].family) {
4225     case AF_INET:
4226     break;
4227     @@ -1443,6 +1452,21 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family)
4228     default:
4229     return -EINVAL;
4230     }
4231     +
4232     + switch (ut[i].id.proto) {
4233     + case IPPROTO_AH:
4234     + case IPPROTO_ESP:
4235     + case IPPROTO_COMP:
4236     +#if IS_ENABLED(CONFIG_IPV6)
4237     + case IPPROTO_ROUTING:
4238     + case IPPROTO_DSTOPTS:
4239     +#endif
4240     + case IPSEC_PROTO_ANY:
4241     + break;
4242     + default:
4243     + return -EINVAL;
4244     + }
4245     +
4246     }
4247    
4248     return 0;
4249     diff --git a/scripts/kernel-doc b/scripts/kernel-doc
4250     index 8323ff9dec71..8bcf90407929 100755
4251     --- a/scripts/kernel-doc
4252     +++ b/scripts/kernel-doc
4253     @@ -3216,4 +3216,4 @@ if ($verbose && $warnings) {
4254     print STDERR "$warnings warnings\n";
4255     }
4256    
4257     -exit($errors);
4258     +exit($output_mode eq "none" ? 0 : $errors);
4259     diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
4260     index e4a1c0dc561a..c9c031e3d1ae 100644
4261     --- a/security/selinux/ss/services.c
4262     +++ b/security/selinux/ss/services.c
4263     @@ -867,6 +867,9 @@ int security_bounded_transition(u32 old_sid, u32 new_sid)
4264     int index;
4265     int rc;
4266    
4267     + if (!ss_initialized)
4268     + return 0;
4269     +
4270     read_lock(&policy_rwlock);
4271    
4272     rc = -EINVAL;
4273     @@ -1413,27 +1416,25 @@ static int security_context_to_sid_core(const char *scontext, u32 scontext_len,
4274     if (!scontext_len)
4275     return -EINVAL;
4276    
4277     + /* Copy the string to allow changes and ensure a NUL terminator */
4278     + scontext2 = kmemdup_nul(scontext, scontext_len, gfp_flags);
4279     + if (!scontext2)
4280     + return -ENOMEM;
4281     +
4282     if (!ss_initialized) {
4283     int i;
4284    
4285     for (i = 1; i < SECINITSID_NUM; i++) {
4286     - if (!strcmp(initial_sid_to_string[i], scontext)) {
4287     + if (!strcmp(initial_sid_to_string[i], scontext2)) {
4288     *sid = i;
4289     - return 0;
4290     + goto out;
4291     }
4292     }
4293     *sid = SECINITSID_KERNEL;
4294     - return 0;
4295     + goto out;
4296     }
4297     *sid = SECSID_NULL;
4298    
4299     - /* Copy the string so that we can modify the copy as we parse it. */
4300     - scontext2 = kmalloc(scontext_len + 1, gfp_flags);
4301     - if (!scontext2)
4302     - return -ENOMEM;
4303     - memcpy(scontext2, scontext, scontext_len);
4304     - scontext2[scontext_len] = 0;
4305     -
4306     if (force) {
4307     /* Save another copy for storing in uninterpreted form */
4308     rc = -ENOMEM;
4309     diff --git a/sound/soc/rockchip/rockchip_spdif.c b/sound/soc/rockchip/rockchip_spdif.c
4310     index ee5055d47d13..a89fe9b6463b 100644
4311     --- a/sound/soc/rockchip/rockchip_spdif.c
4312     +++ b/sound/soc/rockchip/rockchip_spdif.c
4313     @@ -322,26 +322,30 @@ static int rk_spdif_probe(struct platform_device *pdev)
4314     spdif->mclk = devm_clk_get(&pdev->dev, "mclk");
4315     if (IS_ERR(spdif->mclk)) {
4316     dev_err(&pdev->dev, "Can't retrieve rk_spdif master clock\n");
4317     - return PTR_ERR(spdif->mclk);
4318     + ret = PTR_ERR(spdif->mclk);
4319     + goto err_disable_hclk;
4320     }
4321    
4322     ret = clk_prepare_enable(spdif->mclk);
4323     if (ret) {
4324     dev_err(spdif->dev, "clock enable failed %d\n", ret);
4325     - return ret;
4326     + goto err_disable_clocks;
4327     }
4328    
4329     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
4330     regs = devm_ioremap_resource(&pdev->dev, res);
4331     - if (IS_ERR(regs))
4332     - return PTR_ERR(regs);
4333     + if (IS_ERR(regs)) {
4334     + ret = PTR_ERR(regs);
4335     + goto err_disable_clocks;
4336     + }
4337    
4338     spdif->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "hclk", regs,
4339     &rk_spdif_regmap_config);
4340     if (IS_ERR(spdif->regmap)) {
4341     dev_err(&pdev->dev,
4342     "Failed to initialise managed register map\n");
4343     - return PTR_ERR(spdif->regmap);
4344     + ret = PTR_ERR(spdif->regmap);
4345     + goto err_disable_clocks;
4346     }
4347    
4348     spdif->playback_dma_data.addr = res->start + SPDIF_SMPDR;
4349     @@ -373,6 +377,10 @@ static int rk_spdif_probe(struct platform_device *pdev)
4350    
4351     err_pm_runtime:
4352     pm_runtime_disable(&pdev->dev);
4353     +err_disable_clocks:
4354     + clk_disable_unprepare(spdif->mclk);
4355     +err_disable_hclk:
4356     + clk_disable_unprepare(spdif->hclk);
4357    
4358     return ret;
4359     }
4360     diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
4361     index 2aef7c00cca1..f0fb85fda42d 100644
4362     --- a/sound/soc/sh/rcar/ssi.c
4363     +++ b/sound/soc/sh/rcar/ssi.c
4364     @@ -449,25 +449,29 @@ static bool rsnd_ssi_pointer_update(struct rsnd_mod *mod,
4365     int byte)
4366     {
4367     struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
4368     + bool ret = false;
4369     + int byte_pos;
4370    
4371     - ssi->byte_pos += byte;
4372     + byte_pos = ssi->byte_pos + byte;
4373    
4374     - if (ssi->byte_pos >= ssi->next_period_byte) {
4375     + if (byte_pos >= ssi->next_period_byte) {
4376     struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
4377    
4378     ssi->period_pos++;
4379     ssi->next_period_byte += ssi->byte_per_period;
4380    
4381     if (ssi->period_pos >= runtime->periods) {
4382     - ssi->byte_pos = 0;
4383     + byte_pos = 0;
4384     ssi->period_pos = 0;
4385     ssi->next_period_byte = ssi->byte_per_period;
4386     }
4387    
4388     - return true;
4389     + ret = true;
4390     }
4391    
4392     - return false;
4393     + WRITE_ONCE(ssi->byte_pos, byte_pos);
4394     +
4395     + return ret;
4396     }
4397    
4398     /*
4399     @@ -838,7 +842,7 @@ static int rsnd_ssi_pointer(struct rsnd_mod *mod,
4400     struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
4401     struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
4402    
4403     - *pointer = bytes_to_frames(runtime, ssi->byte_pos);
4404     + *pointer = bytes_to_frames(runtime, READ_ONCE(ssi->byte_pos));
4405    
4406     return 0;
4407     }
4408     diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
4409     index 070a6880980e..c60a57797640 100644
4410     --- a/sound/soc/ux500/mop500.c
4411     +++ b/sound/soc/ux500/mop500.c
4412     @@ -163,3 +163,7 @@ static struct platform_driver snd_soc_mop500_driver = {
4413     };
4414    
4415     module_platform_driver(snd_soc_mop500_driver);
4416     +
4417     +MODULE_LICENSE("GPL v2");
4418     +MODULE_DESCRIPTION("ASoC MOP500 board driver");
4419     +MODULE_AUTHOR("Ola Lilja");
4420     diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c
4421     index f12c01dddc8d..d35ba7700f46 100644
4422     --- a/sound/soc/ux500/ux500_pcm.c
4423     +++ b/sound/soc/ux500/ux500_pcm.c
4424     @@ -165,3 +165,8 @@ int ux500_pcm_unregister_platform(struct platform_device *pdev)
4425     return 0;
4426     }
4427     EXPORT_SYMBOL_GPL(ux500_pcm_unregister_platform);
4428     +
4429     +MODULE_AUTHOR("Ola Lilja");
4430     +MODULE_AUTHOR("Roger Nilsson");
4431     +MODULE_DESCRIPTION("ASoC UX500 driver");
4432     +MODULE_LICENSE("GPL v2");
4433     diff --git a/sound/usb/bcd2000/bcd2000.c b/sound/usb/bcd2000/bcd2000.c
4434     index 7371e5b06035..a6408209d7f1 100644
4435     --- a/sound/usb/bcd2000/bcd2000.c
4436     +++ b/sound/usb/bcd2000/bcd2000.c
4437     @@ -342,6 +342,13 @@ static int bcd2000_init_midi(struct bcd2000 *bcd2k)
4438     bcd2k->midi_out_buf, BUFSIZE,
4439     bcd2000_output_complete, bcd2k, 1);
4440    
4441     + /* sanity checks of EPs before actually submitting */
4442     + if (usb_urb_ep_type_check(bcd2k->midi_in_urb) ||
4443     + usb_urb_ep_type_check(bcd2k->midi_out_urb)) {
4444     + dev_err(&bcd2k->dev->dev, "invalid MIDI EP\n");
4445     + return -EINVAL;
4446     + }
4447     +
4448     bcd2000_init_device(bcd2k);
4449    
4450     return 0;
4451     diff --git a/sound/usb/caiaq/device.c b/sound/usb/caiaq/device.c
4452     index d8409d9ae55b..d55ca48de3ea 100644
4453     --- a/sound/usb/caiaq/device.c
4454     +++ b/sound/usb/caiaq/device.c
4455     @@ -461,6 +461,13 @@ static int init_card(struct snd_usb_caiaqdev *cdev)
4456     cdev->midi_out_buf, EP1_BUFSIZE,
4457     snd_usb_caiaq_midi_output_done, cdev);
4458    
4459     + /* sanity checks of EPs before actually submitting */
4460     + if (usb_urb_ep_type_check(&cdev->ep1_in_urb) ||
4461     + usb_urb_ep_type_check(&cdev->midi_out_urb)) {
4462     + dev_err(dev, "invalid EPs\n");
4463     + return -EINVAL;
4464     + }
4465     +
4466     init_waitqueue_head(&cdev->ep1_wait_queue);
4467     init_waitqueue_head(&cdev->prepare_wait_queue);
4468    
4469     diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
4470     index c8f723c3a033..167aebf8276e 100644
4471     --- a/sound/usb/line6/driver.c
4472     +++ b/sound/usb/line6/driver.c
4473     @@ -78,6 +78,13 @@ static int line6_start_listen(struct usb_line6 *line6)
4474     line6->buffer_listen, LINE6_BUFSIZE_LISTEN,
4475     line6_data_received, line6);
4476     }
4477     +
4478     + /* sanity checks of EP before actually submitting */
4479     + if (usb_urb_ep_type_check(line6->urb_listen)) {
4480     + dev_err(line6->ifcdev, "invalid control EP\n");
4481     + return -EINVAL;
4482     + }
4483     +
4484     line6->urb_listen->actual_length = 0;
4485     err = usb_submit_urb(line6->urb_listen, GFP_ATOMIC);
4486     return err;
4487     diff --git a/tools/perf/bench/numa.c b/tools/perf/bench/numa.c
4488     index d95fdcc26f4b..944070e98a2c 100644
4489     --- a/tools/perf/bench/numa.c
4490     +++ b/tools/perf/bench/numa.c
4491     @@ -216,6 +216,47 @@ static const char * const numa_usage[] = {
4492     NULL
4493     };
4494    
4495     +/*
4496     + * To get number of numa nodes present.
4497     + */
4498     +static int nr_numa_nodes(void)
4499     +{
4500     + int i, nr_nodes = 0;
4501     +
4502     + for (i = 0; i < g->p.nr_nodes; i++) {
4503     + if (numa_bitmask_isbitset(numa_nodes_ptr, i))
4504     + nr_nodes++;
4505     + }
4506     +
4507     + return nr_nodes;
4508     +}
4509     +
4510     +/*
4511     + * To check if given numa node is present.
4512     + */
4513     +static int is_node_present(int node)
4514     +{
4515     + return numa_bitmask_isbitset(numa_nodes_ptr, node);
4516     +}
4517     +
4518     +/*
4519     + * To check given numa node has cpus.
4520     + */
4521     +static bool node_has_cpus(int node)
4522     +{
4523     + struct bitmask *cpu = numa_allocate_cpumask();
4524     + unsigned int i;
4525     +
4526     + if (cpu && !numa_node_to_cpus(node, cpu)) {
4527     + for (i = 0; i < cpu->size; i++) {
4528     + if (numa_bitmask_isbitset(cpu, i))
4529     + return true;
4530     + }
4531     + }
4532     +
4533     + return false; /* lets fall back to nocpus safely */
4534     +}
4535     +
4536     static cpu_set_t bind_to_cpu(int target_cpu)
4537     {
4538     cpu_set_t orig_mask, mask;
4539     @@ -244,12 +285,12 @@ static cpu_set_t bind_to_cpu(int target_cpu)
4540    
4541     static cpu_set_t bind_to_node(int target_node)
4542     {
4543     - int cpus_per_node = g->p.nr_cpus/g->p.nr_nodes;
4544     + int cpus_per_node = g->p.nr_cpus / nr_numa_nodes();
4545     cpu_set_t orig_mask, mask;
4546     int cpu;
4547     int ret;
4548    
4549     - BUG_ON(cpus_per_node*g->p.nr_nodes != g->p.nr_cpus);
4550     + BUG_ON(cpus_per_node * nr_numa_nodes() != g->p.nr_cpus);
4551     BUG_ON(!cpus_per_node);
4552    
4553     ret = sched_getaffinity(0, sizeof(orig_mask), &orig_mask);
4554     @@ -649,7 +690,7 @@ static int parse_setup_node_list(void)
4555     int i;
4556    
4557     for (i = 0; i < mul; i++) {
4558     - if (t >= g->p.nr_tasks) {
4559     + if (t >= g->p.nr_tasks || !node_has_cpus(bind_node)) {
4560     printf("\n# NOTE: ignoring bind NODEs starting at NODE#%d\n", bind_node);
4561     goto out;
4562     }
4563     @@ -964,6 +1005,8 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
4564     sum = 0;
4565    
4566     for (node = 0; node < g->p.nr_nodes; node++) {
4567     + if (!is_node_present(node))
4568     + continue;
4569     nr = nodes[node];
4570     nr_min = min(nr, nr_min);
4571     nr_max = max(nr, nr_max);
4572     @@ -984,8 +1027,11 @@ static void calc_convergence(double runtime_ns_max, double *convergence)
4573     process_groups = 0;
4574    
4575     for (node = 0; node < g->p.nr_nodes; node++) {
4576     - int processes = count_node_processes(node);
4577     + int processes;
4578    
4579     + if (!is_node_present(node))
4580     + continue;
4581     + processes = count_node_processes(node);
4582     nr = nodes[node];
4583     tprintf(" %2d/%-2d", nr, processes);
4584    
4585     @@ -1291,7 +1337,7 @@ static void print_summary(void)
4586    
4587     printf("\n ###\n");
4588     printf(" # %d %s will execute (on %d nodes, %d CPUs):\n",
4589     - g->p.nr_tasks, g->p.nr_tasks == 1 ? "task" : "tasks", g->p.nr_nodes, g->p.nr_cpus);
4590     + g->p.nr_tasks, g->p.nr_tasks == 1 ? "task" : "tasks", nr_numa_nodes(), g->p.nr_cpus);
4591     printf(" # %5dx %5ldMB global shared mem operations\n",
4592     g->p.nr_loops, g->p.bytes_global/1024/1024);
4593     printf(" # %5dx %5ldMB process shared mem operations\n",
4594     diff --git a/tools/perf/builtin-help.c b/tools/perf/builtin-help.c
4595     index bd1fedef3d1c..a0f7ed2b869b 100644
4596     --- a/tools/perf/builtin-help.c
4597     +++ b/tools/perf/builtin-help.c
4598     @@ -284,7 +284,7 @@ static int perf_help_config(const char *var, const char *value, void *cb)
4599     add_man_viewer(value);
4600     return 0;
4601     }
4602     - if (!strstarts(var, "man."))
4603     + if (strstarts(var, "man."))
4604     return add_man_viewer_info(var, value);
4605    
4606     return 0;
4607     @@ -314,7 +314,7 @@ static const char *cmd_to_page(const char *perf_cmd)
4608    
4609     if (!perf_cmd)
4610     return "perf";
4611     - else if (!strstarts(perf_cmd, "perf"))
4612     + else if (strstarts(perf_cmd, "perf"))
4613     return perf_cmd;
4614    
4615     return asprintf(&s, "perf-%s", perf_cmd) < 0 ? NULL : s;
4616     diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
4617     index ee954bde7e3e..dd57978b2096 100644
4618     --- a/tools/perf/builtin-top.c
4619     +++ b/tools/perf/builtin-top.c
4620     @@ -77,6 +77,7 @@
4621     #include "sane_ctype.h"
4622    
4623     static volatile int done;
4624     +static volatile int resize;
4625    
4626     #define HEADER_LINE_NR 5
4627    
4628     @@ -86,10 +87,13 @@ static void perf_top__update_print_entries(struct perf_top *top)
4629     }
4630    
4631     static void perf_top__sig_winch(int sig __maybe_unused,
4632     - siginfo_t *info __maybe_unused, void *arg)
4633     + siginfo_t *info __maybe_unused, void *arg __maybe_unused)
4634     {
4635     - struct perf_top *top = arg;
4636     + resize = 1;
4637     +}
4638    
4639     +static void perf_top__resize(struct perf_top *top)
4640     +{
4641     get_term_dimensions(&top->winsize);
4642     perf_top__update_print_entries(top);
4643     }
4644     @@ -477,7 +481,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
4645     .sa_sigaction = perf_top__sig_winch,
4646     .sa_flags = SA_SIGINFO,
4647     };
4648     - perf_top__sig_winch(SIGWINCH, NULL, top);
4649     + perf_top__resize(top);
4650     sigaction(SIGWINCH, &act, NULL);
4651     } else {
4652     signal(SIGWINCH, SIG_DFL);
4653     @@ -1022,6 +1026,11 @@ static int __cmd_top(struct perf_top *top)
4654    
4655     if (hits == top->samples)
4656     ret = perf_evlist__poll(top->evlist, 100);
4657     +
4658     + if (resize) {
4659     + perf_top__resize(top);
4660     + resize = 0;
4661     + }
4662     }
4663    
4664     ret = 0;
4665     diff --git a/tools/perf/tests/shell/trace+probe_vfs_getname.sh b/tools/perf/tests/shell/trace+probe_vfs_getname.sh
4666     index 2e68c5f120da..2a9ef080efd0 100755
4667     --- a/tools/perf/tests/shell/trace+probe_vfs_getname.sh
4668     +++ b/tools/perf/tests/shell/trace+probe_vfs_getname.sh
4669     @@ -17,8 +17,10 @@ skip_if_no_perf_probe || exit 2
4670     file=$(mktemp /tmp/temporary_file.XXXXX)
4671    
4672     trace_open_vfs_getname() {
4673     - perf trace -e open touch $file 2>&1 | \
4674     - egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ open\(filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
4675     + test "$(uname -m)" = s390x && { svc="openat"; txt="dfd: +CWD, +"; }
4676     +
4677     + perf trace -e ${svc:-open} touch $file 2>&1 | \
4678     + egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ ${svc:-open}\(${txt}filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
4679     }
4680    
4681    
4682     diff --git a/tools/perf/tests/task-exit.c b/tools/perf/tests/task-exit.c
4683     index bc4a7344e274..89c8e1604ca7 100644
4684     --- a/tools/perf/tests/task-exit.c
4685     +++ b/tools/perf/tests/task-exit.c
4686     @@ -84,7 +84,11 @@ int test__task_exit(struct test *test __maybe_unused, int subtest __maybe_unused
4687    
4688     evsel = perf_evlist__first(evlist);
4689     evsel->attr.task = 1;
4690     +#ifdef __s390x__
4691     + evsel->attr.sample_freq = 1000000;
4692     +#else
4693     evsel->attr.sample_freq = 1;
4694     +#endif
4695     evsel->attr.inherit = 0;
4696     evsel->attr.watermark = 0;
4697     evsel->attr.wakeup_events = 1;
4698     diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
4699     index aa66791b1bfc..41d415707264 100644
4700     --- a/tools/perf/util/annotate.c
4701     +++ b/tools/perf/util/annotate.c
4702     @@ -166,7 +166,7 @@ static void ins__delete(struct ins_operands *ops)
4703     static int ins__raw_scnprintf(struct ins *ins, char *bf, size_t size,
4704     struct ins_operands *ops)
4705     {
4706     - return scnprintf(bf, size, "%-6.6s %s", ins->name, ops->raw);
4707     + return scnprintf(bf, size, "%-6s %s", ins->name, ops->raw);
4708     }
4709    
4710     int ins__scnprintf(struct ins *ins, char *bf, size_t size,
4711     @@ -231,12 +231,12 @@ static int call__scnprintf(struct ins *ins, char *bf, size_t size,
4712     struct ins_operands *ops)
4713     {
4714     if (ops->target.name)
4715     - return scnprintf(bf, size, "%-6.6s %s", ins->name, ops->target.name);
4716     + return scnprintf(bf, size, "%-6s %s", ins->name, ops->target.name);
4717    
4718     if (ops->target.addr == 0)
4719     return ins__raw_scnprintf(ins, bf, size, ops);
4720    
4721     - return scnprintf(bf, size, "%-6.6s *%" PRIx64, ins->name, ops->target.addr);
4722     + return scnprintf(bf, size, "%-6s *%" PRIx64, ins->name, ops->target.addr);
4723     }
4724    
4725     static struct ins_ops call_ops = {
4726     @@ -300,7 +300,7 @@ static int jump__scnprintf(struct ins *ins, char *bf, size_t size,
4727     c++;
4728     }
4729    
4730     - return scnprintf(bf, size, "%-6.6s %.*s%" PRIx64,
4731     + return scnprintf(bf, size, "%-6s %.*s%" PRIx64,
4732     ins->name, c ? c - ops->raw : 0, ops->raw,
4733     ops->target.offset);
4734     }
4735     @@ -373,7 +373,7 @@ static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
4736     if (ops->locked.ins.ops == NULL)
4737     return ins__raw_scnprintf(ins, bf, size, ops);
4738    
4739     - printed = scnprintf(bf, size, "%-6.6s ", ins->name);
4740     + printed = scnprintf(bf, size, "%-6s ", ins->name);
4741     return printed + ins__scnprintf(&ops->locked.ins, bf + printed,
4742     size - printed, ops->locked.ops);
4743     }
4744     @@ -449,7 +449,7 @@ static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *m
4745     static int mov__scnprintf(struct ins *ins, char *bf, size_t size,
4746     struct ins_operands *ops)
4747     {
4748     - return scnprintf(bf, size, "%-6.6s %s,%s", ins->name,
4749     + return scnprintf(bf, size, "%-6s %s,%s", ins->name,
4750     ops->source.name ?: ops->source.raw,
4751     ops->target.name ?: ops->target.raw);
4752     }
4753     @@ -489,7 +489,7 @@ static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops
4754     static int dec__scnprintf(struct ins *ins, char *bf, size_t size,
4755     struct ins_operands *ops)
4756     {
4757     - return scnprintf(bf, size, "%-6.6s %s", ins->name,
4758     + return scnprintf(bf, size, "%-6s %s", ins->name,
4759     ops->target.name ?: ops->target.raw);
4760     }
4761    
4762     @@ -501,7 +501,7 @@ static struct ins_ops dec_ops = {
4763     static int nop__scnprintf(struct ins *ins __maybe_unused, char *bf, size_t size,
4764     struct ins_operands *ops __maybe_unused)
4765     {
4766     - return scnprintf(bf, size, "%-6.6s", "nop");
4767     + return scnprintf(bf, size, "%-6s", "nop");
4768     }
4769    
4770     static struct ins_ops nop_ops = {
4771     @@ -925,7 +925,7 @@ void disasm_line__free(struct disasm_line *dl)
4772     int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw)
4773     {
4774     if (raw || !dl->ins.ops)
4775     - return scnprintf(bf, size, "%-6.6s %s", dl->ins.name, dl->ops.raw);
4776     + return scnprintf(bf, size, "%-6s %s", dl->ins.name, dl->ops.raw);
4777    
4778     return ins__scnprintf(&dl->ins, bf, size, &dl->ops);
4779     }
4780     diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
4781     index 0dccdb89572c..1f6beb3d0c68 100644
4782     --- a/tools/perf/util/evsel.c
4783     +++ b/tools/perf/util/evsel.c
4784     @@ -733,12 +733,16 @@ static void apply_config_terms(struct perf_evsel *evsel,
4785     list_for_each_entry(term, config_terms, list) {
4786     switch (term->type) {
4787     case PERF_EVSEL__CONFIG_TERM_PERIOD:
4788     - attr->sample_period = term->val.period;
4789     - attr->freq = 0;
4790     + if (!(term->weak && opts->user_interval != ULLONG_MAX)) {
4791     + attr->sample_period = term->val.period;
4792     + attr->freq = 0;
4793     + }
4794     break;
4795     case PERF_EVSEL__CONFIG_TERM_FREQ:
4796     - attr->sample_freq = term->val.freq;
4797     - attr->freq = 1;
4798     + if (!(term->weak && opts->user_freq != UINT_MAX)) {
4799     + attr->sample_freq = term->val.freq;
4800     + attr->freq = 1;
4801     + }
4802     break;
4803     case PERF_EVSEL__CONFIG_TERM_TIME:
4804     if (term->val.time)
4805     diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
4806     index b4df79d72329..3ed0e9b42378 100644
4807     --- a/tools/perf/util/evsel.h
4808     +++ b/tools/perf/util/evsel.h
4809     @@ -67,6 +67,7 @@ struct perf_evsel_config_term {
4810     bool overwrite;
4811     char *branch;
4812     } val;
4813     + bool weak;
4814     };
4815    
4816     /** struct perf_evsel - event selector
4817     diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
4818     index 56694e3409ea..b25635e945f3 100644
4819     --- a/tools/perf/util/parse-events.c
4820     +++ b/tools/perf/util/parse-events.c
4821     @@ -1115,6 +1115,7 @@ do { \
4822     INIT_LIST_HEAD(&__t->list); \
4823     __t->type = PERF_EVSEL__CONFIG_TERM_ ## __type; \
4824     __t->val.__name = __val; \
4825     + __t->weak = term->weak; \
4826     list_add_tail(&__t->list, head_terms); \
4827     } while (0)
4828    
4829     @@ -2395,6 +2396,7 @@ static int new_term(struct parse_events_term **_term,
4830    
4831     *term = *temp;
4832     INIT_LIST_HEAD(&term->list);
4833     + term->weak = false;
4834    
4835     switch (term->type_val) {
4836     case PARSE_EVENTS__TERM_TYPE_NUM:
4837     diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
4838     index eed50b54bab3..458b72225a0a 100644
4839     --- a/tools/perf/util/parse-events.h
4840     +++ b/tools/perf/util/parse-events.h
4841     @@ -101,6 +101,9 @@ struct parse_events_term {
4842     /* error string indexes for within parsed string */
4843     int err_term;
4844     int err_val;
4845     +
4846     + /* Coming from implicit alias */
4847     + bool weak;
4848     };
4849    
4850     struct parse_events_error {
4851     diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
4852     index b10b35a63138..9dff41bcc776 100644
4853     --- a/tools/perf/util/pmu.c
4854     +++ b/tools/perf/util/pmu.c
4855     @@ -404,6 +404,11 @@ static int pmu_alias_terms(struct perf_pmu_alias *alias,
4856     parse_events_terms__purge(&list);
4857     return ret;
4858     }
4859     + /*
4860     + * Weak terms don't override command line options,
4861     + * which we don't want for implicit terms in aliases.
4862     + */
4863     + cloned->weak = true;
4864     list_add_tail(&cloned->list, &list);
4865     }
4866     list_splice(&list, terms);
4867     diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c
4868     index 16299939d3ff..c55d265489ca 100644
4869     --- a/tools/testing/selftests/bpf/test_verifier.c
4870     +++ b/tools/testing/selftests/bpf/test_verifier.c
4871     @@ -6534,7 +6534,7 @@ static struct bpf_test tests[] = {
4872     BPF_JMP_IMM(BPF_JA, 0, 0, -7),
4873     },
4874     .fixup_map1 = { 4 },
4875     - .errstr = "unbounded min value",
4876     + .errstr = "R0 invalid mem access 'inv'",
4877     .result = REJECT,
4878     },
4879     {
4880     @@ -7714,6 +7714,127 @@ static struct bpf_test tests[] = {
4881     .result = REJECT,
4882     .prog_type = BPF_PROG_TYPE_XDP,
4883     },
4884     + {
4885     + "check deducing bounds from const, 1",
4886     + .insns = {
4887     + BPF_MOV64_IMM(BPF_REG_0, 1),
4888     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 1, 0),
4889     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
4890     + BPF_EXIT_INSN(),
4891     + },
4892     + .result = REJECT,
4893     + .errstr = "R0 tried to subtract pointer from scalar",
4894     + },
4895     + {
4896     + "check deducing bounds from const, 2",
4897     + .insns = {
4898     + BPF_MOV64_IMM(BPF_REG_0, 1),
4899     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 1, 1),
4900     + BPF_EXIT_INSN(),
4901     + BPF_JMP_IMM(BPF_JSLE, BPF_REG_0, 1, 1),
4902     + BPF_EXIT_INSN(),
4903     + BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0),
4904     + BPF_EXIT_INSN(),
4905     + },
4906     + .result = ACCEPT,
4907     + },
4908     + {
4909     + "check deducing bounds from const, 3",
4910     + .insns = {
4911     + BPF_MOV64_IMM(BPF_REG_0, 0),
4912     + BPF_JMP_IMM(BPF_JSLE, BPF_REG_0, 0, 0),
4913     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
4914     + BPF_EXIT_INSN(),
4915     + },
4916     + .result = REJECT,
4917     + .errstr = "R0 tried to subtract pointer from scalar",
4918     + },
4919     + {
4920     + "check deducing bounds from const, 4",
4921     + .insns = {
4922     + BPF_MOV64_IMM(BPF_REG_0, 0),
4923     + BPF_JMP_IMM(BPF_JSLE, BPF_REG_0, 0, 1),
4924     + BPF_EXIT_INSN(),
4925     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 1),
4926     + BPF_EXIT_INSN(),
4927     + BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0),
4928     + BPF_EXIT_INSN(),
4929     + },
4930     + .result = ACCEPT,
4931     + },
4932     + {
4933     + "check deducing bounds from const, 5",
4934     + .insns = {
4935     + BPF_MOV64_IMM(BPF_REG_0, 0),
4936     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 1),
4937     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
4938     + BPF_EXIT_INSN(),
4939     + },
4940     + .result = REJECT,
4941     + .errstr = "R0 tried to subtract pointer from scalar",
4942     + },
4943     + {
4944     + "check deducing bounds from const, 6",
4945     + .insns = {
4946     + BPF_MOV64_IMM(BPF_REG_0, 0),
4947     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 1),
4948     + BPF_EXIT_INSN(),
4949     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
4950     + BPF_EXIT_INSN(),
4951     + },
4952     + .result = REJECT,
4953     + .errstr = "R0 tried to subtract pointer from scalar",
4954     + },
4955     + {
4956     + "check deducing bounds from const, 7",
4957     + .insns = {
4958     + BPF_MOV64_IMM(BPF_REG_0, ~0),
4959     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 0),
4960     + BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_0),
4961     + BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
4962     + offsetof(struct __sk_buff, mark)),
4963     + BPF_EXIT_INSN(),
4964     + },
4965     + .result = REJECT,
4966     + .errstr = "dereference of modified ctx ptr",
4967     + },
4968     + {
4969     + "check deducing bounds from const, 8",
4970     + .insns = {
4971     + BPF_MOV64_IMM(BPF_REG_0, ~0),
4972     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 1),
4973     + BPF_ALU64_REG(BPF_ADD, BPF_REG_1, BPF_REG_0),
4974     + BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
4975     + offsetof(struct __sk_buff, mark)),
4976     + BPF_EXIT_INSN(),
4977     + },
4978     + .result = REJECT,
4979     + .errstr = "dereference of modified ctx ptr",
4980     + },
4981     + {
4982     + "check deducing bounds from const, 9",
4983     + .insns = {
4984     + BPF_MOV64_IMM(BPF_REG_0, 0),
4985     + BPF_JMP_IMM(BPF_JSGE, BPF_REG_0, 0, 0),
4986     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
4987     + BPF_EXIT_INSN(),
4988     + },
4989     + .result = REJECT,
4990     + .errstr = "R0 tried to subtract pointer from scalar",
4991     + },
4992     + {
4993     + "check deducing bounds from const, 10",
4994     + .insns = {
4995     + BPF_MOV64_IMM(BPF_REG_0, 0),
4996     + BPF_JMP_IMM(BPF_JSLE, BPF_REG_0, 0, 0),
4997     + /* Marks reg as unknown. */
4998     + BPF_ALU64_IMM(BPF_NEG, BPF_REG_0, 0),
4999     + BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
5000     + BPF_EXIT_INSN(),
5001     + },
5002     + .result = REJECT,
5003     + .errstr = "math between ctx pointer and register with unbounded min value is not allowed",
5004     + },
5005     {
5006     "XDP pkt read, pkt_end <= pkt_data', bad access 2",
5007     .insns = {
5008     diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
5009     index 8b6c42dc1aa9..1366462a3ab2 100644
5010     --- a/virt/kvm/arm/arm.c
5011     +++ b/virt/kvm/arm/arm.c
5012     @@ -1453,7 +1453,7 @@ int kvm_arch_init(void *opaque)
5013     bool in_hyp_mode;
5014    
5015     if (!is_hyp_mode_available()) {
5016     - kvm_err("HYP mode not available\n");
5017     + kvm_info("HYP mode not available\n");
5018     return -ENODEV;
5019     }
5020    
5021     diff --git a/virt/kvm/arm/vgic/vgic.c b/virt/kvm/arm/vgic/vgic.c
5022     index fed717e07938..da53c6e7d688 100644
5023     --- a/virt/kvm/arm/vgic/vgic.c
5024     +++ b/virt/kvm/arm/vgic/vgic.c
5025     @@ -454,6 +454,7 @@ int kvm_vgic_unmap_phys_irq(struct kvm_vcpu *vcpu, unsigned int virt_irq)
5026     int kvm_vgic_set_owner(struct kvm_vcpu *vcpu, unsigned int intid, void *owner)
5027     {
5028     struct vgic_irq *irq;
5029     + unsigned long flags;
5030     int ret = 0;
5031    
5032     if (!vgic_initialized(vcpu->kvm))
5033     @@ -464,12 +465,12 @@ int kvm_vgic_set_owner(struct kvm_vcpu *vcpu, unsigned int intid, void *owner)
5034     return -EINVAL;
5035    
5036     irq = vgic_get_irq(vcpu->kvm, vcpu, intid);
5037     - spin_lock(&irq->irq_lock);
5038     + spin_lock_irqsave(&irq->irq_lock, flags);
5039     if (irq->owner && irq->owner != owner)
5040     ret = -EEXIST;
5041     else
5042     irq->owner = owner;
5043     - spin_unlock(&irq->irq_lock);
5044     + spin_unlock_irqrestore(&irq->irq_lock, flags);
5045    
5046     return ret;
5047     }