Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.9/0305-4.9.206-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3580 - (hide annotations) (download)
Thu Aug 13 10:21:21 2020 UTC (3 years, 9 months ago) by niro
File size: 121616 byte(s)
linux-206
1 niro 3580 diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt
2     index c8656dd029a9..958fff945304 100644
3     --- a/Documentation/hid/uhid.txt
4     +++ b/Documentation/hid/uhid.txt
5     @@ -160,7 +160,7 @@ them but you should handle them according to your needs.
6     UHID_OUTPUT:
7     This is sent if the HID device driver wants to send raw data to the I/O
8     device on the interrupt channel. You should read the payload and forward it to
9     - the device. The payload is of type "struct uhid_data_req".
10     + the device. The payload is of type "struct uhid_output_req".
11     This may be received even though you haven't received UHID_OPEN, yet.
12    
13     UHID_GET_REPORT:
14     diff --git a/Makefile b/Makefile
15     index fc1a58ef7e56..55a91bc3d8f9 100644
16     --- a/Makefile
17     +++ b/Makefile
18     @@ -1,6 +1,6 @@
19     VERSION = 4
20     PATCHLEVEL = 9
21     -SUBLEVEL = 205
22     +SUBLEVEL = 206
23     EXTRAVERSION =
24     NAME = Roaring Lionus
25    
26     diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
27     index d83f7c369e51..a5625430bef6 100644
28     --- a/arch/arm/Kconfig.debug
29     +++ b/arch/arm/Kconfig.debug
30     @@ -1340,21 +1340,21 @@ config DEBUG_OMAP2PLUS_UART
31     depends on ARCH_OMAP2PLUS
32    
33     config DEBUG_IMX_UART_PORT
34     - int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \
35     - DEBUG_IMX25_UART || \
36     - DEBUG_IMX21_IMX27_UART || \
37     - DEBUG_IMX31_UART || \
38     - DEBUG_IMX35_UART || \
39     - DEBUG_IMX50_UART || \
40     - DEBUG_IMX51_UART || \
41     - DEBUG_IMX53_UART || \
42     - DEBUG_IMX6Q_UART || \
43     - DEBUG_IMX6SL_UART || \
44     - DEBUG_IMX6SX_UART || \
45     - DEBUG_IMX6UL_UART || \
46     - DEBUG_IMX7D_UART
47     + int "i.MX Debug UART Port Selection"
48     + depends on DEBUG_IMX1_UART || \
49     + DEBUG_IMX25_UART || \
50     + DEBUG_IMX21_IMX27_UART || \
51     + DEBUG_IMX31_UART || \
52     + DEBUG_IMX35_UART || \
53     + DEBUG_IMX50_UART || \
54     + DEBUG_IMX51_UART || \
55     + DEBUG_IMX53_UART || \
56     + DEBUG_IMX6Q_UART || \
57     + DEBUG_IMX6SL_UART || \
58     + DEBUG_IMX6SX_UART || \
59     + DEBUG_IMX6UL_UART || \
60     + DEBUG_IMX7D_UART
61     default 1
62     - depends on ARCH_MXC
63     help
64     Choose UART port on which kernel low-level debug messages
65     should be output.
66     diff --git a/arch/arm/boot/dts/imx53-voipac-dmm-668.dtsi b/arch/arm/boot/dts/imx53-voipac-dmm-668.dtsi
67     index ba689fbd0e41..301cf8d45947 100644
68     --- a/arch/arm/boot/dts/imx53-voipac-dmm-668.dtsi
69     +++ b/arch/arm/boot/dts/imx53-voipac-dmm-668.dtsi
70     @@ -17,12 +17,8 @@
71    
72     memory@70000000 {
73     device_type = "memory";
74     - reg = <0x70000000 0x20000000>;
75     - };
76     -
77     - memory@b0000000 {
78     - device_type = "memory";
79     - reg = <0xb0000000 0x20000000>;
80     + reg = <0x70000000 0x20000000>,
81     + <0xb0000000 0x20000000>;
82     };
83    
84     regulators {
85     diff --git a/arch/arm/mach-ks8695/board-acs5k.c b/arch/arm/mach-ks8695/board-acs5k.c
86     index e4d709c8ed32..76d3083f1f63 100644
87     --- a/arch/arm/mach-ks8695/board-acs5k.c
88     +++ b/arch/arm/mach-ks8695/board-acs5k.c
89     @@ -92,7 +92,7 @@ static struct i2c_board_info acs5k_i2c_devs[] __initdata = {
90     },
91     };
92    
93     -static void acs5k_i2c_init(void)
94     +static void __init acs5k_i2c_init(void)
95     {
96     /* The gpio interface */
97     platform_device_register(&acs5k_i2c_device);
98     diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
99     index db6ff1944c41..3b10b9395960 100644
100     --- a/arch/arm64/kernel/head.S
101     +++ b/arch/arm64/kernel/head.S
102     @@ -686,6 +686,7 @@ secondary_startup:
103     /*
104     * Common entry point for secondary CPUs.
105     */
106     + bl __cpu_secondary_check52bitva
107     bl __cpu_setup // initialise processor
108     bl __enable_mmu
109     ldr x8, =__secondary_switched
110     @@ -759,6 +760,31 @@ ENTRY(__enable_mmu)
111     ret
112     ENDPROC(__enable_mmu)
113    
114     +ENTRY(__cpu_secondary_check52bitva)
115     +#ifdef CONFIG_ARM64_52BIT_VA
116     + ldr_l x0, vabits_user
117     + cmp x0, #52
118     + b.ne 2f
119     +
120     + mrs_s x0, SYS_ID_AA64MMFR2_EL1
121     + and x0, x0, #(0xf << ID_AA64MMFR2_LVA_SHIFT)
122     + cbnz x0, 2f
123     +
124     + adr_l x0, va52mismatch
125     + mov w1, #1
126     + strb w1, [x0]
127     + dmb sy
128     + dc ivac, x0 // Invalidate potentially stale cache line
129     +
130     + update_early_cpu_boot_status CPU_STUCK_IN_KERNEL, x0, x1
131     +1: wfe
132     + wfi
133     + b 1b
134     +
135     +#endif
136     +2: ret
137     +ENDPROC(__cpu_secondary_check52bitva)
138     +
139     __no_granule_support:
140     /* Indicate that this CPU can't boot and is stuck in the kernel */
141     update_early_cpu_boot_status CPU_STUCK_IN_KERNEL, x1, x2
142     diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
143     index cfd33f18f437..b2d6de9f6f4f 100644
144     --- a/arch/arm64/kernel/smp.c
145     +++ b/arch/arm64/kernel/smp.c
146     @@ -136,6 +136,7 @@ static int boot_secondary(unsigned int cpu, struct task_struct *idle)
147     }
148    
149     static DECLARE_COMPLETION(cpu_running);
150     +bool va52mismatch __ro_after_init;
151    
152     int __cpu_up(unsigned int cpu, struct task_struct *idle)
153     {
154     @@ -164,10 +165,15 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
155    
156     if (!cpu_online(cpu)) {
157     pr_crit("CPU%u: failed to come online\n", cpu);
158     +
159     + if (IS_ENABLED(CONFIG_ARM64_52BIT_VA) && va52mismatch)
160     + pr_crit("CPU%u: does not support 52-bit VAs\n", cpu);
161     +
162     ret = -EIO;
163     }
164     } else {
165     pr_err("CPU%u: failed to boot: %d\n", cpu, ret);
166     + return ret;
167     }
168    
169     secondary_data.stack = NULL;
170     diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
171     index 740f2b82a182..491676a6cde5 100644
172     --- a/arch/microblaze/Makefile
173     +++ b/arch/microblaze/Makefile
174     @@ -75,19 +75,21 @@ archclean:
175    
176     linux.bin linux.bin.gz linux.bin.ub: vmlinux
177     $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
178     + @echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
179    
180     simpleImage.%: vmlinux
181     $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
182     + @echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
183    
184     define archhelp
185     echo '* linux.bin - Create raw binary'
186     echo ' linux.bin.gz - Create compressed raw binary'
187     echo ' linux.bin.ub - Create U-Boot wrapped raw binary'
188     - echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in'
189     - echo ' - stripped elf with fdt blob'
190     - echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob'
191     - echo ' *_defconfig - Select default config from arch/microblaze/configs'
192     - echo ''
193     + echo ' simpleImage.<dt> - Create the following images with <dt>.dtb linked in'
194     + echo ' simpleImage.<dt> : raw image'
195     + echo ' simpleImage.<dt>.ub : raw image with U-Boot header'
196     + echo ' simpleImage.<dt>.unstrip: ELF (identical to vmlinux)'
197     + echo ' simpleImage.<dt>.strip : stripped ELF'
198     echo ' Targets with <dt> embed a device tree blob inside the image'
199     echo ' These targets support board with firmware that does not'
200     echo ' support passing a device tree directly. Replace <dt> with the'
201     diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
202     index 0f3fe6a151dc..22bed08ec7f2 100644
203     --- a/arch/microblaze/boot/Makefile
204     +++ b/arch/microblaze/boot/Makefile
205     @@ -8,15 +8,12 @@ OBJCOPYFLAGS := -R .note -R .comment -R .note.gnu.build-id -O binary
206    
207     $(obj)/linux.bin: vmlinux FORCE
208     $(call if_changed,objcopy)
209     - @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
210    
211     $(obj)/linux.bin.ub: $(obj)/linux.bin FORCE
212     $(call if_changed,uimage)
213     - @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
214    
215     $(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
216     $(call if_changed,gzip)
217     - @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
218    
219     quiet_cmd_cp = CP $< $@$2
220     cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
221     @@ -34,6 +31,5 @@ $(obj)/simpleImage.%: vmlinux FORCE
222     $(call if_changed,objcopy)
223     $(call if_changed,uimage)
224     $(call if_changed,strip,.strip)
225     - @echo 'Kernel: $(UIMAGE_OUT) is ready' ' (#'`cat .version`')'
226    
227     clean-files += simpleImage.*.unstrip linux.bin.ub dts/*.dtb
228     diff --git a/arch/openrisc/kernel/entry.S b/arch/openrisc/kernel/entry.S
229     index fec8bf97d806..c17e8451d997 100644
230     --- a/arch/openrisc/kernel/entry.S
231     +++ b/arch/openrisc/kernel/entry.S
232     @@ -179,7 +179,7 @@ handler: ;\
233     * occured. in fact they never do. if you need them use
234     * values saved on stack (for SPR_EPC, SPR_ESR) or content
235     * of r4 (for SPR_EEAR). for details look at EXCEPTION_HANDLE()
236     - * in 'arch/or32/kernel/head.S'
237     + * in 'arch/openrisc/kernel/head.S'
238     */
239    
240     /* =====================================================[ exceptions] === */
241     diff --git a/arch/openrisc/kernel/head.S b/arch/openrisc/kernel/head.S
242     index f14793306b03..98dd6860bc0b 100644
243     --- a/arch/openrisc/kernel/head.S
244     +++ b/arch/openrisc/kernel/head.S
245     @@ -1596,7 +1596,7 @@ _string_esr_irq_bug:
246    
247     /*
248     * .data section should be page aligned
249     - * (look into arch/or32/kernel/vmlinux.lds)
250     + * (look into arch/openrisc/kernel/vmlinux.lds.S)
251     */
252     .section .data,"aw"
253     .align 8192
254     diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts
255     index aa68911f6560..084b82ba7493 100644
256     --- a/arch/powerpc/boot/dts/bamboo.dts
257     +++ b/arch/powerpc/boot/dts/bamboo.dts
258     @@ -268,8 +268,10 @@
259     /* Outbound ranges, one memory and one IO,
260     * later cannot be changed. Chip supports a second
261     * IO range but we don't use it for now
262     + * The chip also supports a larger memory range but
263     + * it's not naturally aligned, so our code will break
264     */
265     - ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x40000000
266     + ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x20000000
267     0x02000000 0x00000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00100000
268     0x01000000 0x00000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
269    
270     diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
271     index 4e54282c29b4..cf51aea47510 100644
272     --- a/arch/powerpc/include/asm/cputable.h
273     +++ b/arch/powerpc/include/asm/cputable.h
274     @@ -44,6 +44,7 @@ extern int machine_check_e500(struct pt_regs *regs);
275     extern int machine_check_e200(struct pt_regs *regs);
276     extern int machine_check_47x(struct pt_regs *regs);
277     int machine_check_8xx(struct pt_regs *regs);
278     +int machine_check_83xx(struct pt_regs *regs);
279    
280     extern void cpu_down_flush_e500v2(void);
281     extern void cpu_down_flush_e500mc(void);
282     diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
283     index ceb168cd3b81..26aeeaad3267 100644
284     --- a/arch/powerpc/include/asm/reg.h
285     +++ b/arch/powerpc/include/asm/reg.h
286     @@ -663,6 +663,8 @@
287     #define SRR1_PROGTRAP 0x00020000 /* Trap */
288     #define SRR1_PROGADDR 0x00010000 /* SRR0 contains subsequent addr */
289    
290     +#define SRR1_MCE_MCP 0x00080000 /* Machine check signal caused interrupt */
291     +
292     #define SPRN_HSRR0 0x13A /* Save/Restore Register 0 */
293     #define SPRN_HSRR1 0x13B /* Save/Restore Register 1 */
294     #define HSRR1_DENORM 0x00100000 /* Denorm exception */
295     diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
296     index 6a82ef039c50..7471ed48f41f 100644
297     --- a/arch/powerpc/kernel/cputable.c
298     +++ b/arch/powerpc/kernel/cputable.c
299     @@ -1162,6 +1162,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
300     .machine_check = machine_check_generic,
301     .platform = "ppc603",
302     },
303     +#ifdef CONFIG_PPC_83xx
304     { /* e300c1 (a 603e core, plus some) on 83xx */
305     .pvr_mask = 0x7fff0000,
306     .pvr_value = 0x00830000,
307     @@ -1172,7 +1173,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
308     .icache_bsize = 32,
309     .dcache_bsize = 32,
310     .cpu_setup = __setup_cpu_603,
311     - .machine_check = machine_check_generic,
312     + .machine_check = machine_check_83xx,
313     .platform = "ppc603",
314     },
315     { /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
316     @@ -1186,7 +1187,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
317     .icache_bsize = 32,
318     .dcache_bsize = 32,
319     .cpu_setup = __setup_cpu_603,
320     - .machine_check = machine_check_generic,
321     + .machine_check = machine_check_83xx,
322     .platform = "ppc603",
323     },
324     { /* e300c3 (e300c1, plus one IU, half cache size) on 83xx */
325     @@ -1200,7 +1201,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
326     .icache_bsize = 32,
327     .dcache_bsize = 32,
328     .cpu_setup = __setup_cpu_603,
329     - .machine_check = machine_check_generic,
330     + .machine_check = machine_check_83xx,
331     .num_pmcs = 4,
332     .oprofile_cpu_type = "ppc/e300",
333     .oprofile_type = PPC_OPROFILE_FSL_EMB,
334     @@ -1217,12 +1218,13 @@ static struct cpu_spec __initdata cpu_specs[] = {
335     .icache_bsize = 32,
336     .dcache_bsize = 32,
337     .cpu_setup = __setup_cpu_603,
338     - .machine_check = machine_check_generic,
339     + .machine_check = machine_check_83xx,
340     .num_pmcs = 4,
341     .oprofile_cpu_type = "ppc/e300",
342     .oprofile_type = PPC_OPROFILE_FSL_EMB,
343     .platform = "ppc603",
344     },
345     +#endif
346     { /* default match, we assume split I/D cache & TB (non-601)... */
347     .pvr_mask = 0x00000000,
348     .pvr_value = 0x00000000,
349     diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
350     index b0245bed6f54..b868f07c4246 100644
351     --- a/arch/powerpc/kernel/prom.c
352     +++ b/arch/powerpc/kernel/prom.c
353     @@ -128,7 +128,7 @@ static void __init move_device_tree(void)
354     p = __va(memblock_alloc(size, PAGE_SIZE));
355     memcpy(p, initial_boot_params, size);
356     initial_boot_params = p;
357     - DBG("Moved device tree to 0x%p\n", p);
358     + DBG("Moved device tree to 0x%px\n", p);
359     }
360    
361     DBG("<- move_device_tree\n");
362     @@ -651,7 +651,7 @@ void __init early_init_devtree(void *params)
363     {
364     phys_addr_t limit;
365    
366     - DBG(" -> early_init_devtree(%p)\n", params);
367     + DBG(" -> early_init_devtree(%px)\n", params);
368    
369     /* Too early to BUG_ON(), do it by hand */
370     if (!early_init_dt_verify(params))
371     @@ -711,7 +711,7 @@ void __init early_init_devtree(void *params)
372     memblock_allow_resize();
373     memblock_dump_all();
374    
375     - DBG("Phys. mem: %llx\n", memblock_phys_mem_size());
376     + DBG("Phys. mem: %llx\n", (unsigned long long)memblock_phys_mem_size());
377    
378     /* We may need to relocate the flat tree, do it now.
379     * FIXME .. and the initrd too? */
380     diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
381     index 9376e8e53bfa..2791f568bdb2 100644
382     --- a/arch/powerpc/mm/fault.c
383     +++ b/arch/powerpc/mm/fault.c
384     @@ -521,21 +521,22 @@ void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
385     switch (regs->trap) {
386     case 0x300:
387     case 0x380:
388     - printk(KERN_ALERT "Unable to handle kernel paging request for "
389     - "data at address 0x%08lx\n", regs->dar);
390     + pr_alert("BUG: %s at 0x%08lx\n",
391     + regs->dar < PAGE_SIZE ? "Kernel NULL pointer dereference" :
392     + "Unable to handle kernel data access", regs->dar);
393     break;
394     case 0x400:
395     case 0x480:
396     - printk(KERN_ALERT "Unable to handle kernel paging request for "
397     - "instruction fetch\n");
398     + pr_alert("BUG: Unable to handle kernel instruction fetch%s",
399     + regs->nip < PAGE_SIZE ? " (NULL pointer?)\n" : "\n");
400     break;
401     case 0x600:
402     - printk(KERN_ALERT "Unable to handle kernel paging request for "
403     - "unaligned access at address 0x%08lx\n", regs->dar);
404     + pr_alert("BUG: Unable to handle kernel unaligned access at 0x%08lx\n",
405     + regs->dar);
406     break;
407     default:
408     - printk(KERN_ALERT "Unable to handle kernel paging request for "
409     - "unknown fault\n");
410     + pr_alert("BUG: Unable to handle unknown paging fault at 0x%08lx\n",
411     + regs->dar);
412     break;
413     }
414     printk(KERN_ALERT "Faulting instruction address: 0x%08lx\n",
415     diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c
416     index 2a049fb8523d..96c52271e9c2 100644
417     --- a/arch/powerpc/mm/ppc_mmu_32.c
418     +++ b/arch/powerpc/mm/ppc_mmu_32.c
419     @@ -52,7 +52,7 @@ struct batrange { /* stores address ranges mapped by BATs */
420     phys_addr_t v_block_mapped(unsigned long va)
421     {
422     int b;
423     - for (b = 0; b < 4; ++b)
424     + for (b = 0; b < ARRAY_SIZE(bat_addrs); ++b)
425     if (va >= bat_addrs[b].start && va < bat_addrs[b].limit)
426     return bat_addrs[b].phys + (va - bat_addrs[b].start);
427     return 0;
428     @@ -64,7 +64,7 @@ phys_addr_t v_block_mapped(unsigned long va)
429     unsigned long p_block_mapped(phys_addr_t pa)
430     {
431     int b;
432     - for (b = 0; b < 4; ++b)
433     + for (b = 0; b < ARRAY_SIZE(bat_addrs); ++b)
434     if (pa >= bat_addrs[b].phys
435     && pa < (bat_addrs[b].limit-bat_addrs[b].start)
436     +bat_addrs[b].phys)
437     diff --git a/arch/powerpc/platforms/83xx/misc.c b/arch/powerpc/platforms/83xx/misc.c
438     index d75c9816a5c9..2b6589fe812d 100644
439     --- a/arch/powerpc/platforms/83xx/misc.c
440     +++ b/arch/powerpc/platforms/83xx/misc.c
441     @@ -14,6 +14,7 @@
442     #include <linux/of_platform.h>
443     #include <linux/pci.h>
444    
445     +#include <asm/debug.h>
446     #include <asm/io.h>
447     #include <asm/hw_irq.h>
448     #include <asm/ipic.h>
449     @@ -150,3 +151,19 @@ void __init mpc83xx_setup_arch(void)
450    
451     mpc83xx_setup_pci();
452     }
453     +
454     +int machine_check_83xx(struct pt_regs *regs)
455     +{
456     + u32 mask = 1 << (31 - IPIC_MCP_WDT);
457     +
458     + if (!(regs->msr & SRR1_MCE_MCP) || !(ipic_get_mcp_status() & mask))
459     + return machine_check_generic(regs);
460     + ipic_clear_mcp_status(mask);
461     +
462     + if (debugger_fault_handler(regs))
463     + return 1;
464     +
465     + die("Watchdog NMI Reset", regs, 0);
466     +
467     + return 1;
468     +}
469     diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c
470     index 2354ea51e871..6189c4cf56c3 100644
471     --- a/arch/powerpc/platforms/powernv/eeh-powernv.c
472     +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
473     @@ -546,8 +546,8 @@ static void pnv_eeh_get_phb_diag(struct eeh_pe *pe)
474     static int pnv_eeh_get_phb_state(struct eeh_pe *pe)
475     {
476     struct pnv_phb *phb = pe->phb->private_data;
477     - u8 fstate;
478     - __be16 pcierr;
479     + u8 fstate = 0;
480     + __be16 pcierr = 0;
481     s64 rc;
482     int result = 0;
483    
484     @@ -585,8 +585,8 @@ static int pnv_eeh_get_phb_state(struct eeh_pe *pe)
485     static int pnv_eeh_get_pe_state(struct eeh_pe *pe)
486     {
487     struct pnv_phb *phb = pe->phb->private_data;
488     - u8 fstate;
489     - __be16 pcierr;
490     + u8 fstate = 0;
491     + __be16 pcierr = 0;
492     s64 rc;
493     int result;
494    
495     diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
496     index 8015e40bc7ee..3ec673b4ca6c 100644
497     --- a/arch/powerpc/platforms/powernv/pci-ioda.c
498     +++ b/arch/powerpc/platforms/powernv/pci-ioda.c
499     @@ -599,8 +599,8 @@ static int pnv_ioda_unfreeze_pe(struct pnv_phb *phb, int pe_no, int opt)
500     static int pnv_ioda_get_pe_state(struct pnv_phb *phb, int pe_no)
501     {
502     struct pnv_ioda_pe *slave, *pe;
503     - u8 fstate, state;
504     - __be16 pcierr;
505     + u8 fstate = 0, state;
506     + __be16 pcierr = 0;
507     s64 rc;
508    
509     /* Sanity check on PE number */
510     diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
511     index db7b8020f68e..98cc8ba07c23 100644
512     --- a/arch/powerpc/platforms/powernv/pci.c
513     +++ b/arch/powerpc/platforms/powernv/pci.c
514     @@ -482,8 +482,8 @@ static void pnv_pci_handle_eeh_config(struct pnv_phb *phb, u32 pe_no)
515     static void pnv_pci_config_check_eeh(struct pci_dn *pdn)
516     {
517     struct pnv_phb *phb = pdn->phb->private_data;
518     - u8 fstate;
519     - __be16 pcierr;
520     + u8 fstate = 0;
521     + __be16 pcierr = 0;
522     unsigned int pe_no;
523     s64 rc;
524    
525     diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
526     index 999b04819d69..5abb8e2239a5 100644
527     --- a/arch/powerpc/platforms/pseries/dlpar.c
528     +++ b/arch/powerpc/platforms/pseries/dlpar.c
529     @@ -63,6 +63,10 @@ static struct property *dlpar_parse_cc_property(struct cc_workarea *ccwa)
530    
531     name = (char *)ccwa + be32_to_cpu(ccwa->name_offset);
532     prop->name = kstrdup(name, GFP_KERNEL);
533     + if (!prop->name) {
534     + dlpar_free_cc_property(prop);
535     + return NULL;
536     + }
537    
538     prop->length = be32_to_cpu(ccwa->prop_length);
539     value = (char *)ccwa + be32_to_cpu(ccwa->prop_offset);
540     diff --git a/arch/powerpc/platforms/pseries/hotplug-memory.c b/arch/powerpc/platforms/pseries/hotplug-memory.c
541     index 656bbbd731d0..6c12b02f4a61 100644
542     --- a/arch/powerpc/platforms/pseries/hotplug-memory.c
543     +++ b/arch/powerpc/platforms/pseries/hotplug-memory.c
544     @@ -294,6 +294,7 @@ static u32 lookup_lmb_associativity_index(struct of_drconf_cell *lmb)
545    
546     aa_index = find_aa_index(dr_node, ala_prop, lmb_assoc);
547    
548     + of_node_put(dr_node);
549     dlpar_free_cc_nodes(lmb_node);
550     return aa_index;
551     }
552     diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
553     index 687e8b8bf5c6..899288b71145 100644
554     --- a/arch/powerpc/xmon/xmon.c
555     +++ b/arch/powerpc/xmon/xmon.c
556     @@ -3043,7 +3043,7 @@ void dump_segments(void)
557    
558     printf("sr0-15 =");
559     for (i = 0; i < 16; ++i)
560     - printf(" %x", mfsrin(i));
561     + printf(" %x", mfsrin(i << 28));
562     printf("\n");
563     }
564     #endif
565     diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
566     index 37c254677ccd..d8fd2eadcda7 100644
567     --- a/arch/s390/kvm/kvm-s390.c
568     +++ b/arch/s390/kvm/kvm-s390.c
569     @@ -319,19 +319,30 @@ static void kvm_s390_cpu_feat_init(void)
570    
571     int kvm_arch_init(void *opaque)
572     {
573     + int rc;
574     +
575     kvm_s390_dbf = debug_register("kvm-trace", 32, 1, 7 * sizeof(long));
576     if (!kvm_s390_dbf)
577     return -ENOMEM;
578    
579     if (debug_register_view(kvm_s390_dbf, &debug_sprintf_view)) {
580     - debug_unregister(kvm_s390_dbf);
581     - return -ENOMEM;
582     + rc = -ENOMEM;
583     + goto out_debug_unreg;
584     }
585    
586     kvm_s390_cpu_feat_init();
587    
588     /* Register floating interrupt controller interface. */
589     - return kvm_register_device_ops(&kvm_flic_ops, KVM_DEV_TYPE_FLIC);
590     + rc = kvm_register_device_ops(&kvm_flic_ops, KVM_DEV_TYPE_FLIC);
591     + if (rc) {
592     + pr_err("Failed to register FLIC rc=%d\n", rc);
593     + goto out_debug_unreg;
594     + }
595     + return 0;
596     +
597     +out_debug_unreg:
598     + debug_unregister(kvm_s390_dbf);
599     + return rc;
600     }
601    
602     void kvm_arch_exit(void)
603     diff --git a/arch/s390/mm/gup.c b/arch/s390/mm/gup.c
604     index 97fc449a7470..cf045f56581e 100644
605     --- a/arch/s390/mm/gup.c
606     +++ b/arch/s390/mm/gup.c
607     @@ -38,7 +38,8 @@ static inline int gup_pte_range(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
608     VM_BUG_ON(!pfn_valid(pte_pfn(pte)));
609     page = pte_page(pte);
610     head = compound_head(page);
611     - if (!page_cache_get_speculative(head))
612     + if (WARN_ON_ONCE(page_ref_count(head) < 0)
613     + || !page_cache_get_speculative(head))
614     return 0;
615     if (unlikely(pte_val(pte) != pte_val(*ptep))) {
616     put_page(head);
617     @@ -76,7 +77,8 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
618     refs++;
619     } while (addr += PAGE_SIZE, addr != end);
620    
621     - if (!page_cache_add_speculative(head, refs)) {
622     + if (WARN_ON_ONCE(page_ref_count(head) < 0)
623     + || !page_cache_add_speculative(head, refs)) {
624     *nr -= refs;
625     return 0;
626     }
627     @@ -150,7 +152,8 @@ static int gup_huge_pud(pud_t *pudp, pud_t pud, unsigned long addr,
628     refs++;
629     } while (addr += PAGE_SIZE, addr != end);
630    
631     - if (!page_cache_add_speculative(head, refs)) {
632     + if (WARN_ON_ONCE(page_ref_count(head) < 0)
633     + || !page_cache_add_speculative(head, refs)) {
634     *nr -= refs;
635     return 0;
636     }
637     diff --git a/arch/um/Kconfig.debug b/arch/um/Kconfig.debug
638     index 68205fd3b08c..6ae7f0f434a9 100644
639     --- a/arch/um/Kconfig.debug
640     +++ b/arch/um/Kconfig.debug
641     @@ -18,6 +18,7 @@ config GPROF
642     config GCOV
643     bool "Enable gcov support"
644     depends on DEBUG_INFO
645     + depends on !KCOV
646     help
647     This option allows developers to retrieve coverage data from a UML
648     session.
649     diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
650     index d7db45bdfb3b..82f727fbbbd2 100644
651     --- a/arch/x86/mm/gup.c
652     +++ b/arch/x86/mm/gup.c
653     @@ -202,9 +202,12 @@ static int __gup_device_huge_pmd(pmd_t pmd, unsigned long addr,
654     undo_dev_pagemap(nr, nr_start, pages);
655     return 0;
656     }
657     + if (unlikely(!try_get_page(page))) {
658     + put_dev_pagemap(pgmap);
659     + return 0;
660     + }
661     SetPageReferenced(page);
662     pages[*nr] = page;
663     - get_page(page);
664     put_dev_pagemap(pgmap);
665     (*nr)++;
666     pfn++;
667     @@ -230,6 +233,8 @@ static noinline int gup_huge_pmd(pmd_t pmd, unsigned long addr,
668    
669     refs = 0;
670     head = pmd_page(pmd);
671     + if (WARN_ON_ONCE(page_ref_count(head) <= 0))
672     + return 0;
673     page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
674     do {
675     VM_BUG_ON_PAGE(compound_head(page) != head, page);
676     @@ -289,6 +294,8 @@ static noinline int gup_huge_pud(pud_t pud, unsigned long addr,
677    
678     refs = 0;
679     head = pud_page(pud);
680     + if (WARN_ON_ONCE(page_ref_count(head) <= 0))
681     + return 0;
682     page = head + ((addr & ~PUD_MASK) >> PAGE_SHIFT);
683     do {
684     VM_BUG_ON_PAGE(compound_head(page) != head, page);
685     diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
686     index c90a1727cd2c..60cf7d163731 100644
687     --- a/crypto/crypto_user.c
688     +++ b/crypto/crypto_user.c
689     @@ -277,30 +277,33 @@ drop_alg:
690    
691     static int crypto_dump_report(struct sk_buff *skb, struct netlink_callback *cb)
692     {
693     - struct crypto_alg *alg;
694     + const size_t start_pos = cb->args[0];
695     + size_t pos = 0;
696     struct crypto_dump_info info;
697     - int err;
698     -
699     - if (cb->args[0])
700     - goto out;
701     -
702     - cb->args[0] = 1;
703     + struct crypto_alg *alg;
704     + int res;
705    
706     info.in_skb = cb->skb;
707     info.out_skb = skb;
708     info.nlmsg_seq = cb->nlh->nlmsg_seq;
709     info.nlmsg_flags = NLM_F_MULTI;
710    
711     + down_read(&crypto_alg_sem);
712     list_for_each_entry(alg, &crypto_alg_list, cra_list) {
713     - err = crypto_report_alg(alg, &info);
714     - if (err)
715     - goto out_err;
716     + if (pos >= start_pos) {
717     + res = crypto_report_alg(alg, &info);
718     + if (res == -EMSGSIZE)
719     + break;
720     + if (res)
721     + goto out;
722     + }
723     + pos++;
724     }
725     -
726     + cb->args[0] = pos;
727     + res = skb->len;
728     out:
729     - return skb->len;
730     -out_err:
731     - return err;
732     + up_read(&crypto_alg_sem);
733     + return res;
734     }
735    
736     static int crypto_dump_report_done(struct netlink_callback *cb)
737     @@ -483,7 +486,7 @@ static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
738     if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) &&
739     (nlh->nlmsg_flags & NLM_F_DUMP))) {
740     struct crypto_alg *alg;
741     - u16 dump_alloc = 0;
742     + unsigned long dump_alloc = 0;
743    
744     if (link->dump == NULL)
745     return -EINVAL;
746     @@ -491,16 +494,16 @@ static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
747     down_read(&crypto_alg_sem);
748     list_for_each_entry(alg, &crypto_alg_list, cra_list)
749     dump_alloc += CRYPTO_REPORT_MAXSIZE;
750     + up_read(&crypto_alg_sem);
751    
752     {
753     struct netlink_dump_control c = {
754     .dump = link->dump,
755     .done = link->done,
756     - .min_dump_alloc = dump_alloc,
757     + .min_dump_alloc = min(dump_alloc, 65535UL),
758     };
759     err = netlink_dump_start(crypto_nlsk, skb, nlh, &c);
760     }
761     - up_read(&crypto_alg_sem);
762    
763     return err;
764     }
765     diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
766     index 8e38249311bd..a9158858f54c 100644
767     --- a/drivers/acpi/acpi_lpss.c
768     +++ b/drivers/acpi/acpi_lpss.c
769     @@ -448,12 +448,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
770     * have _PS0 and _PS3 without _PSC (and no power resources), so
771     * acpi_bus_init_power() will assume that the BIOS has put them into D0.
772     */
773     - ret = acpi_device_fix_up_power(adev);
774     - if (ret) {
775     - /* Skip the device, but continue the namespace scan. */
776     - ret = 0;
777     - goto err_out;
778     - }
779     + acpi_device_fix_up_power(adev);
780    
781     adev->driver_data = pdata;
782     pdev = acpi_create_platform_device(adev, dev_desc->properties);
783     diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
784     index 0375c6024062..a6e3c8dc2be4 100644
785     --- a/drivers/acpi/apei/ghes.c
786     +++ b/drivers/acpi/apei/ghes.c
787     @@ -203,40 +203,40 @@ static int ghes_estatus_pool_init(void)
788     return 0;
789     }
790    
791     -static void ghes_estatus_pool_free_chunk_page(struct gen_pool *pool,
792     +static void ghes_estatus_pool_free_chunk(struct gen_pool *pool,
793     struct gen_pool_chunk *chunk,
794     void *data)
795     {
796     - free_page(chunk->start_addr);
797     + vfree((void *)chunk->start_addr);
798     }
799    
800     static void ghes_estatus_pool_exit(void)
801     {
802     gen_pool_for_each_chunk(ghes_estatus_pool,
803     - ghes_estatus_pool_free_chunk_page, NULL);
804     + ghes_estatus_pool_free_chunk, NULL);
805     gen_pool_destroy(ghes_estatus_pool);
806     }
807    
808     static int ghes_estatus_pool_expand(unsigned long len)
809     {
810     - unsigned long i, pages, size, addr;
811     - int ret;
812     + unsigned long size, addr;
813    
814     ghes_estatus_pool_size_request += PAGE_ALIGN(len);
815     size = gen_pool_size(ghes_estatus_pool);
816     if (size >= ghes_estatus_pool_size_request)
817     return 0;
818     - pages = (ghes_estatus_pool_size_request - size) / PAGE_SIZE;
819     - for (i = 0; i < pages; i++) {
820     - addr = __get_free_page(GFP_KERNEL);
821     - if (!addr)
822     - return -ENOMEM;
823     - ret = gen_pool_add(ghes_estatus_pool, addr, PAGE_SIZE, -1);
824     - if (ret)
825     - return ret;
826     - }
827    
828     - return 0;
829     + addr = (unsigned long)vmalloc(PAGE_ALIGN(len));
830     + if (!addr)
831     + return -ENOMEM;
832     +
833     + /*
834     + * New allocation must be visible in all pgd before it can be found by
835     + * an NMI allocating from the pool.
836     + */
837     + vmalloc_sync_all();
838     +
839     + return gen_pool_add(ghes_estatus_pool, addr, PAGE_ALIGN(len), -1);
840     }
841    
842     static struct ghes *ghes_new(struct acpi_hest_generic *generic)
843     diff --git a/drivers/base/platform.c b/drivers/base/platform.c
844     index 14ff40371f01..f90b1b9bbad0 100644
845     --- a/drivers/base/platform.c
846     +++ b/drivers/base/platform.c
847     @@ -27,6 +27,7 @@
848     #include <linux/clk/clk-conf.h>
849     #include <linux/limits.h>
850     #include <linux/property.h>
851     +#include <linux/kmemleak.h>
852    
853     #include "base.h"
854     #include "power/power.h"
855     @@ -516,6 +517,8 @@ struct platform_device *platform_device_register_full(
856     if (!pdev->dev.dma_mask)
857     goto err;
858    
859     + kmemleak_ignore(pdev->dev.dma_mask);
860     +
861     *pdev->dev.dma_mask = pdevinfo->dma_mask;
862     pdev->dev.coherent_dma_mask = pdevinfo->dma_mask;
863     }
864     diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
865     index 83482721bc01..f5c24459fc5c 100644
866     --- a/drivers/block/drbd/drbd_main.c
867     +++ b/drivers/block/drbd/drbd_main.c
868     @@ -793,7 +793,6 @@ int __drbd_send_protocol(struct drbd_connection *connection, enum drbd_packet cm
869    
870     if (nc->tentative && connection->agreed_pro_version < 92) {
871     rcu_read_unlock();
872     - mutex_unlock(&sock->mutex);
873     drbd_err(connection, "--dry-run is not supported by peer");
874     return -EOPNOTSUPP;
875     }
876     diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
877     index abee91940a36..b809f325c2be 100644
878     --- a/drivers/block/drbd/drbd_nl.c
879     +++ b/drivers/block/drbd/drbd_nl.c
880     @@ -1508,6 +1508,30 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis
881     }
882     }
883    
884     +static int disk_opts_check_al_size(struct drbd_device *device, struct disk_conf *dc)
885     +{
886     + int err = -EBUSY;
887     +
888     + if (device->act_log &&
889     + device->act_log->nr_elements == dc->al_extents)
890     + return 0;
891     +
892     + drbd_suspend_io(device);
893     + /* If IO completion is currently blocked, we would likely wait
894     + * "forever" for the activity log to become unused. So we don't. */
895     + if (atomic_read(&device->ap_bio_cnt))
896     + goto out;
897     +
898     + wait_event(device->al_wait, lc_try_lock(device->act_log));
899     + drbd_al_shrink(device);
900     + err = drbd_check_al_size(device, dc);
901     + lc_unlock(device->act_log);
902     + wake_up(&device->al_wait);
903     +out:
904     + drbd_resume_io(device);
905     + return err;
906     +}
907     +
908     int drbd_adm_disk_opts(struct sk_buff *skb, struct genl_info *info)
909     {
910     struct drbd_config_context adm_ctx;
911     @@ -1570,15 +1594,12 @@ int drbd_adm_disk_opts(struct sk_buff *skb, struct genl_info *info)
912     }
913     }
914    
915     - drbd_suspend_io(device);
916     - wait_event(device->al_wait, lc_try_lock(device->act_log));
917     - drbd_al_shrink(device);
918     - err = drbd_check_al_size(device, new_disk_conf);
919     - lc_unlock(device->act_log);
920     - wake_up(&device->al_wait);
921     - drbd_resume_io(device);
922     -
923     + err = disk_opts_check_al_size(device, new_disk_conf);
924     if (err) {
925     + /* Could be just "busy". Ignore?
926     + * Introduce dedicated error code? */
927     + drbd_msg_put_info(adm_ctx.reply_skb,
928     + "Try again without changing current al-extents setting");
929     retcode = ERR_NOMEM;
930     goto fail_unlock;
931     }
932     @@ -1927,9 +1948,9 @@ int drbd_adm_attach(struct sk_buff *skb, struct genl_info *info)
933     }
934     }
935    
936     - if (device->state.conn < C_CONNECTED &&
937     - device->state.role == R_PRIMARY && device->ed_uuid &&
938     - (device->ed_uuid & ~((u64)1)) != (nbc->md.uuid[UI_CURRENT] & ~((u64)1))) {
939     + if (device->state.pdsk != D_UP_TO_DATE && device->ed_uuid &&
940     + (device->state.role == R_PRIMARY || device->state.peer == R_PRIMARY) &&
941     + (device->ed_uuid & ~((u64)1)) != (nbc->md.uuid[UI_CURRENT] & ~((u64)1))) {
942     drbd_err(device, "Can only attach to data with current UUID=%016llX\n",
943     (unsigned long long)device->ed_uuid);
944     retcode = ERR_DATA_NOT_CURRENT;
945     diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
946     index 8e8e4ccb128f..a10ff6e8c20b 100644
947     --- a/drivers/block/drbd/drbd_receiver.c
948     +++ b/drivers/block/drbd/drbd_receiver.c
949     @@ -4037,6 +4037,7 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
950     struct o_qlim *o = (connection->agreed_features & DRBD_FF_WSAME) ? p->qlim : NULL;
951     enum determine_dev_size dd = DS_UNCHANGED;
952     sector_t p_size, p_usize, p_csize, my_usize;
953     + sector_t new_size, cur_size;
954     int ldsc = 0; /* local disk size changed */
955     enum dds_flags ddsf;
956    
957     @@ -4044,6 +4045,7 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
958     if (!peer_device)
959     return config_unknown_volume(connection, pi);
960     device = peer_device->device;
961     + cur_size = drbd_get_capacity(device->this_bdev);
962    
963     p_size = be64_to_cpu(p->d_size);
964     p_usize = be64_to_cpu(p->u_size);
965     @@ -4054,7 +4056,6 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
966     device->p_size = p_size;
967    
968     if (get_ldev(device)) {
969     - sector_t new_size, cur_size;
970     rcu_read_lock();
971     my_usize = rcu_dereference(device->ldev->disk_conf)->disk_size;
972     rcu_read_unlock();
973     @@ -4072,7 +4073,6 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
974     /* Never shrink a device with usable data during connect.
975     But allow online shrinking if we are connected. */
976     new_size = drbd_new_dev_size(device, device->ldev, p_usize, 0);
977     - cur_size = drbd_get_capacity(device->this_bdev);
978     if (new_size < cur_size &&
979     device->state.disk >= D_OUTDATED &&
980     device->state.conn < C_CONNECTED) {
981     @@ -4137,9 +4137,36 @@ static int receive_sizes(struct drbd_connection *connection, struct packet_info
982     *
983     * However, if he sends a zero current size,
984     * take his (user-capped or) backing disk size anyways.
985     + *
986     + * Unless of course he does not have a disk himself.
987     + * In which case we ignore this completely.
988     */
989     + sector_t new_size = p_csize ?: p_usize ?: p_size;
990     drbd_reconsider_queue_parameters(device, NULL, o);
991     - drbd_set_my_capacity(device, p_csize ?: p_usize ?: p_size);
992     + if (new_size == 0) {
993     + /* Ignore, peer does not know nothing. */
994     + } else if (new_size == cur_size) {
995     + /* nothing to do */
996     + } else if (cur_size != 0 && p_size == 0) {
997     + drbd_warn(device, "Ignored diskless peer device size (peer:%llu != me:%llu sectors)!\n",
998     + (unsigned long long)new_size, (unsigned long long)cur_size);
999     + } else if (new_size < cur_size && device->state.role == R_PRIMARY) {
1000     + drbd_err(device, "The peer's device size is too small! (%llu < %llu sectors); demote me first!\n",
1001     + (unsigned long long)new_size, (unsigned long long)cur_size);
1002     + conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD);
1003     + return -EIO;
1004     + } else {
1005     + /* I believe the peer, if
1006     + * - I don't have a current size myself
1007     + * - we agree on the size anyways
1008     + * - I do have a current size, am Secondary,
1009     + * and he has the only disk
1010     + * - I do have a current size, am Primary,
1011     + * and he has the only disk,
1012     + * which is larger than my current size
1013     + */
1014     + drbd_set_my_capacity(device, new_size);
1015     + }
1016     }
1017    
1018     if (get_ldev(device)) {
1019     @@ -4425,6 +4452,25 @@ static int receive_state(struct drbd_connection *connection, struct packet_info
1020     if (peer_state.conn == C_AHEAD)
1021     ns.conn = C_BEHIND;
1022    
1023     + /* TODO:
1024     + * if (primary and diskless and peer uuid != effective uuid)
1025     + * abort attach on peer;
1026     + *
1027     + * If this node does not have good data, was already connected, but
1028     + * the peer did a late attach only now, trying to "negotiate" with me,
1029     + * AND I am currently Primary, possibly frozen, with some specific
1030     + * "effective" uuid, this should never be reached, really, because
1031     + * we first send the uuids, then the current state.
1032     + *
1033     + * In this scenario, we already dropped the connection hard
1034     + * when we received the unsuitable uuids (receive_uuids().
1035     + *
1036     + * Should we want to change this, that is: not drop the connection in
1037     + * receive_uuids() already, then we would need to add a branch here
1038     + * that aborts the attach of "unsuitable uuids" on the peer in case
1039     + * this node is currently Diskless Primary.
1040     + */
1041     +
1042     if (device->p_uuid && peer_state.disk >= D_NEGOTIATING &&
1043     get_ldev_if_state(device, D_NEGOTIATING)) {
1044     int cr; /* consider resync */
1045     diff --git a/drivers/block/drbd/drbd_state.h b/drivers/block/drbd/drbd_state.h
1046     index 6c9d5d4a8a75..110f64d9e91c 100644
1047     --- a/drivers/block/drbd/drbd_state.h
1048     +++ b/drivers/block/drbd/drbd_state.h
1049     @@ -126,7 +126,7 @@ extern enum drbd_state_rv _drbd_set_state(struct drbd_device *, union drbd_state
1050     enum chg_state_flags,
1051     struct completion *done);
1052     extern void print_st_err(struct drbd_device *, union drbd_state,
1053     - union drbd_state, int);
1054     + union drbd_state, enum drbd_state_rv);
1055    
1056     enum drbd_state_rv
1057     _conn_request_state(struct drbd_connection *connection, union drbd_state mask, union drbd_state val,
1058     diff --git a/drivers/char/hw_random/stm32-rng.c b/drivers/char/hw_random/stm32-rng.c
1059     index 83c695938a2d..f53d47e3355d 100644
1060     --- a/drivers/char/hw_random/stm32-rng.c
1061     +++ b/drivers/char/hw_random/stm32-rng.c
1062     @@ -166,6 +166,13 @@ static int stm32_rng_probe(struct platform_device *ofdev)
1063     return devm_hwrng_register(dev, &priv->rng);
1064     }
1065    
1066     +static int stm32_rng_remove(struct platform_device *ofdev)
1067     +{
1068     + pm_runtime_disable(&ofdev->dev);
1069     +
1070     + return 0;
1071     +}
1072     +
1073     #ifdef CONFIG_PM
1074     static int stm32_rng_runtime_suspend(struct device *dev)
1075     {
1076     @@ -202,6 +209,7 @@ static struct platform_driver stm32_rng_driver = {
1077     .of_match_table = stm32_rng_match,
1078     },
1079     .probe = stm32_rng_probe,
1080     + .remove = stm32_rng_remove,
1081     };
1082    
1083     module_platform_driver(stm32_rng_driver);
1084     diff --git a/drivers/clk/at91/clk-main.c b/drivers/clk/at91/clk-main.c
1085     index 2f97a843d6d6..90988e7a5b47 100644
1086     --- a/drivers/clk/at91/clk-main.c
1087     +++ b/drivers/clk/at91/clk-main.c
1088     @@ -162,7 +162,7 @@ at91_clk_register_main_osc(struct regmap *regmap,
1089     if (bypass)
1090     regmap_update_bits(regmap,
1091     AT91_CKGR_MOR, MOR_KEY_MASK |
1092     - AT91_PMC_MOSCEN,
1093     + AT91_PMC_OSCBYPASS,
1094     AT91_PMC_OSCBYPASS | AT91_PMC_KEY);
1095    
1096     hw = &osc->hw;
1097     @@ -354,7 +354,10 @@ static int clk_main_probe_frequency(struct regmap *regmap)
1098     regmap_read(regmap, AT91_CKGR_MCFR, &mcfr);
1099     if (mcfr & AT91_PMC_MAINRDY)
1100     return 0;
1101     - usleep_range(MAINF_LOOP_MIN_WAIT, MAINF_LOOP_MAX_WAIT);
1102     + if (system_state < SYSTEM_RUNNING)
1103     + udelay(MAINF_LOOP_MIN_WAIT);
1104     + else
1105     + usleep_range(MAINF_LOOP_MIN_WAIT, MAINF_LOOP_MAX_WAIT);
1106     } while (time_before(prep_time, timeout));
1107    
1108     return -ETIMEDOUT;
1109     diff --git a/drivers/clk/at91/sckc.c b/drivers/clk/at91/sckc.c
1110     index ab6ecefc49ad..43ba2a8b03fa 100644
1111     --- a/drivers/clk/at91/sckc.c
1112     +++ b/drivers/clk/at91/sckc.c
1113     @@ -74,7 +74,10 @@ static int clk_slow_osc_prepare(struct clk_hw *hw)
1114    
1115     writel(tmp | AT91_SCKC_OSC32EN, sckcr);
1116    
1117     - usleep_range(osc->startup_usec, osc->startup_usec + 1);
1118     + if (system_state < SYSTEM_RUNNING)
1119     + udelay(osc->startup_usec);
1120     + else
1121     + usleep_range(osc->startup_usec, osc->startup_usec + 1);
1122    
1123     return 0;
1124     }
1125     @@ -197,7 +200,10 @@ static int clk_slow_rc_osc_prepare(struct clk_hw *hw)
1126    
1127     writel(readl(sckcr) | AT91_SCKC_RCEN, sckcr);
1128    
1129     - usleep_range(osc->startup_usec, osc->startup_usec + 1);
1130     + if (system_state < SYSTEM_RUNNING)
1131     + udelay(osc->startup_usec);
1132     + else
1133     + usleep_range(osc->startup_usec, osc->startup_usec + 1);
1134    
1135     return 0;
1136     }
1137     @@ -310,7 +316,10 @@ static int clk_sam9x5_slow_set_parent(struct clk_hw *hw, u8 index)
1138    
1139     writel(tmp, sckcr);
1140    
1141     - usleep_range(SLOWCK_SW_TIME_USEC, SLOWCK_SW_TIME_USEC + 1);
1142     + if (system_state < SYSTEM_RUNNING)
1143     + udelay(SLOWCK_SW_TIME_USEC);
1144     + else
1145     + usleep_range(SLOWCK_SW_TIME_USEC, SLOWCK_SW_TIME_USEC + 1);
1146    
1147     return 0;
1148     }
1149     @@ -443,7 +452,10 @@ static int clk_sama5d4_slow_osc_prepare(struct clk_hw *hw)
1150     return 0;
1151     }
1152    
1153     - usleep_range(osc->startup_usec, osc->startup_usec + 1);
1154     + if (system_state < SYSTEM_RUNNING)
1155     + udelay(osc->startup_usec);
1156     + else
1157     + usleep_range(osc->startup_usec, osc->startup_usec + 1);
1158     osc->prepared = true;
1159    
1160     return 0;
1161     diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
1162     index 13c09a740840..2bb88d125113 100644
1163     --- a/drivers/clk/samsung/clk-exynos5420.c
1164     +++ b/drivers/clk/samsung/clk-exynos5420.c
1165     @@ -170,12 +170,18 @@ static const unsigned long exynos5x_clk_regs[] __initconst = {
1166     GATE_BUS_CPU,
1167     GATE_SCLK_CPU,
1168     CLKOUT_CMU_CPU,
1169     + CPLL_CON0,
1170     + DPLL_CON0,
1171     EPLL_CON0,
1172     EPLL_CON1,
1173     EPLL_CON2,
1174     RPLL_CON0,
1175     RPLL_CON1,
1176     RPLL_CON2,
1177     + IPLL_CON0,
1178     + SPLL_CON0,
1179     + VPLL_CON0,
1180     + MPLL_CON0,
1181     SRC_TOP0,
1182     SRC_TOP1,
1183     SRC_TOP2,
1184     diff --git a/drivers/crypto/mxc-scc.c b/drivers/crypto/mxc-scc.c
1185     index ee4be1b0d30b..0a57b3db2d67 100644
1186     --- a/drivers/crypto/mxc-scc.c
1187     +++ b/drivers/crypto/mxc-scc.c
1188     @@ -178,12 +178,12 @@ static int mxc_scc_get_data(struct mxc_scc_ctx *ctx,
1189     else
1190     from = scc->black_memory;
1191    
1192     - dev_dbg(scc->dev, "pcopy: from 0x%p %d bytes\n", from,
1193     + dev_dbg(scc->dev, "pcopy: from 0x%p %zu bytes\n", from,
1194     ctx->dst_nents * 8);
1195     len = sg_pcopy_from_buffer(ablkreq->dst, ctx->dst_nents,
1196     from, ctx->size, ctx->offset);
1197     if (!len) {
1198     - dev_err(scc->dev, "pcopy err from 0x%p (len=%d)\n", from, len);
1199     + dev_err(scc->dev, "pcopy err from 0x%p (len=%zu)\n", from, len);
1200     return -EINVAL;
1201     }
1202    
1203     @@ -274,7 +274,7 @@ static int mxc_scc_put_data(struct mxc_scc_ctx *ctx,
1204     len = sg_pcopy_to_buffer(req->src, ctx->src_nents,
1205     to, len, ctx->offset);
1206     if (!len) {
1207     - dev_err(scc->dev, "pcopy err to 0x%p (len=%d)\n", to, len);
1208     + dev_err(scc->dev, "pcopy err to 0x%p (len=%zu)\n", to, len);
1209     return -EINVAL;
1210     }
1211    
1212     @@ -335,9 +335,9 @@ static void mxc_scc_ablkcipher_next(struct mxc_scc_ctx *ctx,
1213     return;
1214     }
1215    
1216     - dev_dbg(scc->dev, "Start encryption (0x%p/0x%p)\n",
1217     - (void *)readl(scc->base + SCC_SCM_RED_START),
1218     - (void *)readl(scc->base + SCC_SCM_BLACK_START));
1219     + dev_dbg(scc->dev, "Start encryption (0x%x/0x%x)\n",
1220     + readl(scc->base + SCC_SCM_RED_START),
1221     + readl(scc->base + SCC_SCM_BLACK_START));
1222    
1223     /* clear interrupt control registers */
1224     writel(SCC_SCM_INTR_CTRL_CLR_INTR,
1225     diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
1226     index 9aeab4ff2d81..42d1b350afd2 100644
1227     --- a/drivers/hid/hid-core.c
1228     +++ b/drivers/hid/hid-core.c
1229     @@ -196,6 +196,18 @@ static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type)
1230     return 0; /* we know nothing about this usage type */
1231     }
1232    
1233     +/*
1234     + * Concatenate usage which defines 16 bits or less with the
1235     + * currently defined usage page to form a 32 bit usage
1236     + */
1237     +
1238     +static void complete_usage(struct hid_parser *parser, unsigned int index)
1239     +{
1240     + parser->local.usage[index] &= 0xFFFF;
1241     + parser->local.usage[index] |=
1242     + (parser->global.usage_page & 0xFFFF) << 16;
1243     +}
1244     +
1245     /*
1246     * Add a usage to the temporary parser table.
1247     */
1248     @@ -207,6 +219,14 @@ static int hid_add_usage(struct hid_parser *parser, unsigned usage, u8 size)
1249     return -1;
1250     }
1251     parser->local.usage[parser->local.usage_index] = usage;
1252     +
1253     + /*
1254     + * If Usage item only includes usage id, concatenate it with
1255     + * currently defined usage page
1256     + */
1257     + if (size <= 2)
1258     + complete_usage(parser, parser->local.usage_index);
1259     +
1260     parser->local.usage_size[parser->local.usage_index] = size;
1261     parser->local.collection_index[parser->local.usage_index] =
1262     parser->collection_stack_ptr ?
1263     @@ -523,13 +543,32 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
1264     * usage value."
1265     */
1266    
1267     -static void hid_concatenate_usage_page(struct hid_parser *parser)
1268     +static void hid_concatenate_last_usage_page(struct hid_parser *parser)
1269     {
1270     int i;
1271     + unsigned int usage_page;
1272     + unsigned int current_page;
1273    
1274     - for (i = 0; i < parser->local.usage_index; i++)
1275     - if (parser->local.usage_size[i] <= 2)
1276     - parser->local.usage[i] += parser->global.usage_page << 16;
1277     + if (!parser->local.usage_index)
1278     + return;
1279     +
1280     + usage_page = parser->global.usage_page;
1281     +
1282     + /*
1283     + * Concatenate usage page again only if last declared Usage Page
1284     + * has not been already used in previous usages concatenation
1285     + */
1286     + for (i = parser->local.usage_index - 1; i >= 0; i--) {
1287     + if (parser->local.usage_size[i] > 2)
1288     + /* Ignore extended usages */
1289     + continue;
1290     +
1291     + current_page = parser->local.usage[i] >> 16;
1292     + if (current_page == usage_page)
1293     + break;
1294     +
1295     + complete_usage(parser, i);
1296     + }
1297     }
1298    
1299     /*
1300     @@ -541,7 +580,7 @@ static int hid_parser_main(struct hid_parser *parser, struct hid_item *item)
1301     __u32 data;
1302     int ret;
1303    
1304     - hid_concatenate_usage_page(parser);
1305     + hid_concatenate_last_usage_page(parser);
1306    
1307     data = item_udata(item);
1308    
1309     @@ -756,7 +795,7 @@ static int hid_scan_main(struct hid_parser *parser, struct hid_item *item)
1310     __u32 data;
1311     int i;
1312    
1313     - hid_concatenate_usage_page(parser);
1314     + hid_concatenate_last_usage_page(parser);
1315    
1316     data = item_udata(item);
1317    
1318     diff --git a/drivers/hid/intel-ish-hid/ishtp-hid.c b/drivers/hid/intel-ish-hid/ishtp-hid.c
1319     index 277983aa1d90..d0b902285fc3 100644
1320     --- a/drivers/hid/intel-ish-hid/ishtp-hid.c
1321     +++ b/drivers/hid/intel-ish-hid/ishtp-hid.c
1322     @@ -222,7 +222,7 @@ int ishtp_hid_probe(unsigned int cur_hid_dev,
1323     err_hid_device:
1324     kfree(hid_data);
1325     err_hid_data:
1326     - kfree(hid);
1327     + hid_destroy_device(hid);
1328     return rv;
1329     }
1330    
1331     diff --git a/drivers/infiniband/hw/qib/qib_sdma.c b/drivers/infiniband/hw/qib/qib_sdma.c
1332     index 891873b38a1e..5f3f197678b7 100644
1333     --- a/drivers/infiniband/hw/qib/qib_sdma.c
1334     +++ b/drivers/infiniband/hw/qib/qib_sdma.c
1335     @@ -600,8 +600,10 @@ retry:
1336     dw = (len + 3) >> 2;
1337     addr = dma_map_single(&ppd->dd->pcidev->dev, sge->vaddr,
1338     dw << 2, DMA_TO_DEVICE);
1339     - if (dma_mapping_error(&ppd->dd->pcidev->dev, addr))
1340     + if (dma_mapping_error(&ppd->dd->pcidev->dev, addr)) {
1341     + ret = -ENOMEM;
1342     goto unmap;
1343     + }
1344     sdmadesc[0] = 0;
1345     make_sdma_desc(ppd, sdmadesc, (u64) addr, dw, dwoffset);
1346     /* SDmaUseLargeBuf has to be set in every descriptor */
1347     diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
1348     index 74de1ae48d4f..af68be201c29 100644
1349     --- a/drivers/infiniband/ulp/srp/ib_srp.c
1350     +++ b/drivers/infiniband/ulp/srp/ib_srp.c
1351     @@ -2180,6 +2180,7 @@ static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
1352    
1353     if (srp_post_send(ch, iu, len)) {
1354     shost_printk(KERN_ERR, target->scsi_host, PFX "Send failed\n");
1355     + scmnd->result = DID_ERROR << 16;
1356     goto err_unmap;
1357     }
1358    
1359     diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c
1360     index ecba666afadb..cca26e6f38b3 100644
1361     --- a/drivers/input/serio/gscps2.c
1362     +++ b/drivers/input/serio/gscps2.c
1363     @@ -382,9 +382,9 @@ static int gscps2_probe(struct parisc_device *dev)
1364     goto fail;
1365     #endif
1366    
1367     - printk(KERN_INFO "serio: %s port at 0x%p irq %d @ %s\n",
1368     + pr_info("serio: %s port at 0x%08lx irq %d @ %s\n",
1369     ps2port->port->name,
1370     - ps2port->addr,
1371     + hpa,
1372     ps2port->padev->irq,
1373     ps2port->port->phys);
1374    
1375     diff --git a/drivers/input/serio/hp_sdc.c b/drivers/input/serio/hp_sdc.c
1376     index 852858e5d8d0..92f541db98a0 100644
1377     --- a/drivers/input/serio/hp_sdc.c
1378     +++ b/drivers/input/serio/hp_sdc.c
1379     @@ -887,8 +887,8 @@ static int __init hp_sdc_init(void)
1380     "HP SDC NMI", &hp_sdc))
1381     goto err2;
1382    
1383     - printk(KERN_INFO PREFIX "HP SDC at 0x%p, IRQ %d (NMI IRQ %d)\n",
1384     - (void *)hp_sdc.base_io, hp_sdc.irq, hp_sdc.nmi);
1385     + pr_info(PREFIX "HP SDC at 0x%08lx, IRQ %d (NMI IRQ %d)\n",
1386     + hp_sdc.base_io, hp_sdc.irq, hp_sdc.nmi);
1387    
1388     hp_sdc_status_in8();
1389     hp_sdc_data_in8();
1390     diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
1391     index e81acb2b6ee7..c898c70472bb 100644
1392     --- a/drivers/iommu/amd_iommu.c
1393     +++ b/drivers/iommu/amd_iommu.c
1394     @@ -176,10 +176,14 @@ static struct lock_class_key reserved_rbtree_key;
1395     static inline int match_hid_uid(struct device *dev,
1396     struct acpihid_map_entry *entry)
1397     {
1398     + struct acpi_device *adev = ACPI_COMPANION(dev);
1399     const char *hid, *uid;
1400    
1401     - hid = acpi_device_hid(ACPI_COMPANION(dev));
1402     - uid = acpi_device_uid(ACPI_COMPANION(dev));
1403     + if (!adev)
1404     + return -ENODEV;
1405     +
1406     + hid = acpi_device_hid(adev);
1407     + uid = acpi_device_uid(adev);
1408    
1409     if (!hid || !(*hid))
1410     return -ENODEV;
1411     diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
1412     index 3643cba71351..742c1fa870da 100644
1413     --- a/drivers/md/dm-flakey.c
1414     +++ b/drivers/md/dm-flakey.c
1415     @@ -258,20 +258,31 @@ static void flakey_map_bio(struct dm_target *ti, struct bio *bio)
1416    
1417     static void corrupt_bio_data(struct bio *bio, struct flakey_c *fc)
1418     {
1419     - unsigned bio_bytes = bio_cur_bytes(bio);
1420     - char *data = bio_data(bio);
1421     + unsigned int corrupt_bio_byte = fc->corrupt_bio_byte - 1;
1422     +
1423     + struct bvec_iter iter;
1424     + struct bio_vec bvec;
1425     +
1426     + if (!bio_has_data(bio))
1427     + return;
1428    
1429     /*
1430     - * Overwrite the Nth byte of the data returned.
1431     + * Overwrite the Nth byte of the bio's data, on whichever page
1432     + * it falls.
1433     */
1434     - if (data && bio_bytes >= fc->corrupt_bio_byte) {
1435     - data[fc->corrupt_bio_byte - 1] = fc->corrupt_bio_value;
1436     -
1437     - DMDEBUG("Corrupting data bio=%p by writing %u to byte %u "
1438     - "(rw=%c bi_opf=%u bi_sector=%llu cur_bytes=%u)\n",
1439     - bio, fc->corrupt_bio_value, fc->corrupt_bio_byte,
1440     - (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_opf,
1441     - (unsigned long long)bio->bi_iter.bi_sector, bio_bytes);
1442     + bio_for_each_segment(bvec, bio, iter) {
1443     + if (bio_iter_len(bio, iter) > corrupt_bio_byte) {
1444     + char *segment = (page_address(bio_iter_page(bio, iter))
1445     + + bio_iter_offset(bio, iter));
1446     + segment[corrupt_bio_byte] = fc->corrupt_bio_value;
1447     + DMDEBUG("Corrupting data bio=%p by writing %u to byte %u "
1448     + "(rw=%c bi_opf=%u bi_sector=%llu size=%u)\n",
1449     + bio, fc->corrupt_bio_value, fc->corrupt_bio_byte,
1450     + (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_opf,
1451     + (unsigned long long)bio->bi_iter.bi_sector, bio->bi_iter.bi_size);
1452     + break;
1453     + }
1454     + corrupt_bio_byte -= bio_iter_len(bio, iter);
1455     }
1456     }
1457    
1458     diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c
1459     index ccfe13b7d3f8..ecf9fb08f36b 100644
1460     --- a/drivers/media/platform/atmel/atmel-isc.c
1461     +++ b/drivers/media/platform/atmel/atmel-isc.c
1462     @@ -1297,8 +1297,11 @@ static int isc_parse_dt(struct device *dev, struct isc_device *isc)
1463     break;
1464     }
1465    
1466     - subdev_entity->asd = devm_kzalloc(dev,
1467     - sizeof(*subdev_entity->asd), GFP_KERNEL);
1468     + /* asd will be freed by the subsystem once it's added to the
1469     + * notifier list
1470     + */
1471     + subdev_entity->asd = kzalloc(sizeof(*subdev_entity->asd),
1472     + GFP_KERNEL);
1473     if (subdev_entity->asd == NULL) {
1474     of_node_put(rem);
1475     ret = -ENOMEM;
1476     @@ -1432,6 +1435,7 @@ static int atmel_isc_probe(struct platform_device *pdev)
1477     &subdev_entity->notifier);
1478     if (ret) {
1479     dev_err(dev, "fail to register async notifier\n");
1480     + kfree(subdev_entity->asd);
1481     goto cleanup_subdev;
1482     }
1483    
1484     diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
1485     index b3d8b9592f8a..6c0c5de2527b 100644
1486     --- a/drivers/media/v4l2-core/v4l2-ctrls.c
1487     +++ b/drivers/media/v4l2-core/v4l2-ctrls.c
1488     @@ -1007,6 +1007,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
1489     case V4L2_CID_FLASH_STROBE_STOP:
1490     case V4L2_CID_AUTO_FOCUS_START:
1491     case V4L2_CID_AUTO_FOCUS_STOP:
1492     + case V4L2_CID_DO_WHITE_BALANCE:
1493     *type = V4L2_CTRL_TYPE_BUTTON;
1494     *flags |= V4L2_CTRL_FLAG_WRITE_ONLY |
1495     V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
1496     diff --git a/drivers/misc/mei/bus.c b/drivers/misc/mei/bus.c
1497     index 0c98ed44df05..582b24d2c479 100644
1498     --- a/drivers/misc/mei/bus.c
1499     +++ b/drivers/misc/mei/bus.c
1500     @@ -765,15 +765,16 @@ static struct device_type mei_cl_device_type = {
1501    
1502     /**
1503     * mei_cl_bus_set_name - set device name for me client device
1504     + * <controller>-<client device>
1505     + * Example: 0000:00:16.0-55213584-9a29-4916-badf-0fb7ed682aeb
1506     *
1507     * @cldev: me client device
1508     */
1509     static inline void mei_cl_bus_set_name(struct mei_cl_device *cldev)
1510     {
1511     - dev_set_name(&cldev->dev, "mei:%s:%pUl:%02X",
1512     - cldev->name,
1513     - mei_me_cl_uuid(cldev->me_cl),
1514     - mei_me_cl_ver(cldev->me_cl));
1515     + dev_set_name(&cldev->dev, "%s-%pUl",
1516     + dev_name(cldev->bus->dev),
1517     + mei_me_cl_uuid(cldev->me_cl));
1518     }
1519    
1520     /**
1521     diff --git a/drivers/mtd/mtdcore.h b/drivers/mtd/mtdcore.h
1522     index 55fdb8e1fd2a..488b652ba9e6 100644
1523     --- a/drivers/mtd/mtdcore.h
1524     +++ b/drivers/mtd/mtdcore.h
1525     @@ -6,7 +6,7 @@
1526     extern struct mutex mtd_table_mutex;
1527    
1528     struct mtd_info *__mtd_next_device(int i);
1529     -int add_mtd_device(struct mtd_info *mtd);
1530     +int __must_check add_mtd_device(struct mtd_info *mtd);
1531     int del_mtd_device(struct mtd_info *mtd);
1532     int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int);
1533     int del_mtd_partitions(struct mtd_info *);
1534     diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
1535     index fccdd49bb964..5e2d1aa5e81e 100644
1536     --- a/drivers/mtd/mtdpart.c
1537     +++ b/drivers/mtd/mtdpart.c
1538     @@ -648,10 +648,21 @@ int mtd_add_partition(struct mtd_info *master, const char *name,
1539     list_add(&new->list, &mtd_partitions);
1540     mutex_unlock(&mtd_partitions_mutex);
1541    
1542     - add_mtd_device(&new->mtd);
1543     + ret = add_mtd_device(&new->mtd);
1544     + if (ret)
1545     + goto err_remove_part;
1546    
1547     mtd_add_partition_attrs(new);
1548    
1549     + return 0;
1550     +
1551     +err_remove_part:
1552     + mutex_lock(&mtd_partitions_mutex);
1553     + list_del(&new->list);
1554     + mutex_unlock(&mtd_partitions_mutex);
1555     +
1556     + free_partition(new);
1557     +
1558     return ret;
1559     }
1560     EXPORT_SYMBOL_GPL(mtd_add_partition);
1561     @@ -696,28 +707,42 @@ int add_mtd_partitions(struct mtd_info *master,
1562     {
1563     struct mtd_part *slave;
1564     uint64_t cur_offset = 0;
1565     - int i;
1566     + int i, ret;
1567    
1568     printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
1569    
1570     for (i = 0; i < nbparts; i++) {
1571     slave = allocate_partition(master, parts + i, i, cur_offset);
1572     if (IS_ERR(slave)) {
1573     - del_mtd_partitions(master);
1574     - return PTR_ERR(slave);
1575     + ret = PTR_ERR(slave);
1576     + goto err_del_partitions;
1577     }
1578    
1579     mutex_lock(&mtd_partitions_mutex);
1580     list_add(&slave->list, &mtd_partitions);
1581     mutex_unlock(&mtd_partitions_mutex);
1582    
1583     - add_mtd_device(&slave->mtd);
1584     + ret = add_mtd_device(&slave->mtd);
1585     + if (ret) {
1586     + mutex_lock(&mtd_partitions_mutex);
1587     + list_del(&slave->list);
1588     + mutex_unlock(&mtd_partitions_mutex);
1589     +
1590     + free_partition(slave);
1591     + goto err_del_partitions;
1592     + }
1593     +
1594     mtd_add_partition_attrs(slave);
1595    
1596     cur_offset = slave->offset + slave->mtd.size;
1597     }
1598    
1599     return 0;
1600     +
1601     +err_del_partitions:
1602     + del_mtd_partitions(master);
1603     +
1604     + return ret;
1605     }
1606    
1607     static DEFINE_SPINLOCK(part_parser_lock);
1608     diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c
1609     index e26c4f880df6..886355bfa761 100644
1610     --- a/drivers/mtd/nand/sunxi_nand.c
1611     +++ b/drivers/mtd/nand/sunxi_nand.c
1612     @@ -1420,7 +1420,7 @@ static int sunxi_nfc_hw_ecc_write_page_dma(struct mtd_info *mtd,
1613     sunxi_nfc_randomizer_enable(mtd);
1614    
1615     writel((NAND_CMD_RNDIN << 8) | NAND_CMD_PAGEPROG,
1616     - nfc->regs + NFC_REG_RCMD_SET);
1617     + nfc->regs + NFC_REG_WCMD_SET);
1618    
1619     dma_async_issue_pending(nfc->dmac);
1620    
1621     diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
1622     index ad2b57c6b13f..211ee13d36ed 100644
1623     --- a/drivers/mtd/ubi/build.c
1624     +++ b/drivers/mtd/ubi/build.c
1625     @@ -1146,10 +1146,10 @@ int ubi_detach_mtd_dev(int ubi_num, int anyway)
1626     ubi_wl_close(ubi);
1627     ubi_free_internal_volumes(ubi);
1628     vfree(ubi->vtbl);
1629     - put_mtd_device(ubi->mtd);
1630     vfree(ubi->peb_buf);
1631     vfree(ubi->fm_buf);
1632     ubi_msg(ubi, "mtd%d is detached", ubi->mtd->index);
1633     + put_mtd_device(ubi->mtd);
1634     put_device(&ubi->dev);
1635     return 0;
1636     }
1637     diff --git a/drivers/mtd/ubi/kapi.c b/drivers/mtd/ubi/kapi.c
1638     index 88b1897aeb40..7826f7c4ec2f 100644
1639     --- a/drivers/mtd/ubi/kapi.c
1640     +++ b/drivers/mtd/ubi/kapi.c
1641     @@ -227,9 +227,9 @@ out_unlock:
1642     out_free:
1643     kfree(desc);
1644     out_put_ubi:
1645     - ubi_put_device(ubi);
1646     ubi_err(ubi, "cannot open device %d, volume %d, error %d",
1647     ubi_num, vol_id, err);
1648     + ubi_put_device(ubi);
1649     return ERR_PTR(err);
1650     }
1651     EXPORT_SYMBOL_GPL(ubi_open_volume);
1652     diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
1653     index 7d35f6737499..4ead5a18b794 100644
1654     --- a/drivers/net/can/c_can/c_can.c
1655     +++ b/drivers/net/can/c_can/c_can.c
1656     @@ -52,6 +52,7 @@
1657     #define CONTROL_EX_PDR BIT(8)
1658    
1659     /* control register */
1660     +#define CONTROL_SWR BIT(15)
1661     #define CONTROL_TEST BIT(7)
1662     #define CONTROL_CCE BIT(6)
1663     #define CONTROL_DISABLE_AR BIT(5)
1664     @@ -572,6 +573,26 @@ static void c_can_configure_msg_objects(struct net_device *dev)
1665     IF_MCONT_RCV_EOB);
1666     }
1667    
1668     +static int c_can_software_reset(struct net_device *dev)
1669     +{
1670     + struct c_can_priv *priv = netdev_priv(dev);
1671     + int retry = 0;
1672     +
1673     + if (priv->type != BOSCH_D_CAN)
1674     + return 0;
1675     +
1676     + priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_SWR | CONTROL_INIT);
1677     + while (priv->read_reg(priv, C_CAN_CTRL_REG) & CONTROL_SWR) {
1678     + msleep(20);
1679     + if (retry++ > 100) {
1680     + netdev_err(dev, "CCTRL: software reset failed\n");
1681     + return -EIO;
1682     + }
1683     + }
1684     +
1685     + return 0;
1686     +}
1687     +
1688     /*
1689     * Configure C_CAN chip:
1690     * - enable/disable auto-retransmission
1691     @@ -581,6 +602,11 @@ static void c_can_configure_msg_objects(struct net_device *dev)
1692     static int c_can_chip_config(struct net_device *dev)
1693     {
1694     struct c_can_priv *priv = netdev_priv(dev);
1695     + int err;
1696     +
1697     + err = c_can_software_reset(dev);
1698     + if (err)
1699     + return err;
1700    
1701     /* enable automatic retransmission */
1702     priv->write_reg(priv, C_CAN_CTRL_REG, CONTROL_ENABLE_AR);
1703     diff --git a/drivers/net/can/usb/peak_usb/pcan_usb.c b/drivers/net/can/usb/peak_usb/pcan_usb.c
1704     index e626c2afbbb1..0e1fc6c4360e 100644
1705     --- a/drivers/net/can/usb/peak_usb/pcan_usb.c
1706     +++ b/drivers/net/can/usb/peak_usb/pcan_usb.c
1707     @@ -441,8 +441,8 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n,
1708     }
1709     if ((n & PCAN_USB_ERROR_BUS_LIGHT) == 0) {
1710     /* no error (back to active state) */
1711     - mc->pdev->dev.can.state = CAN_STATE_ERROR_ACTIVE;
1712     - return 0;
1713     + new_state = CAN_STATE_ERROR_ACTIVE;
1714     + break;
1715     }
1716     break;
1717    
1718     @@ -465,9 +465,9 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n,
1719     }
1720    
1721     if ((n & PCAN_USB_ERROR_BUS_HEAVY) == 0) {
1722     - /* no error (back to active state) */
1723     - mc->pdev->dev.can.state = CAN_STATE_ERROR_ACTIVE;
1724     - return 0;
1725     + /* no error (back to warning state) */
1726     + new_state = CAN_STATE_ERROR_WARNING;
1727     + break;
1728     }
1729     break;
1730    
1731     @@ -506,6 +506,11 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n,
1732     mc->pdev->dev.can.can_stats.error_warning++;
1733     break;
1734    
1735     + case CAN_STATE_ERROR_ACTIVE:
1736     + cf->can_id |= CAN_ERR_CRTL;
1737     + cf->data[1] = CAN_ERR_CRTL_ACTIVE;
1738     + break;
1739     +
1740     default:
1741     /* CAN_STATE_MAX (trick to handle other errors) */
1742     cf->can_id |= CAN_ERR_CRTL;
1743     diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
1744     index c2cd540e9c9e..a3a8d7b62f3f 100644
1745     --- a/drivers/net/dsa/bcm_sf2.c
1746     +++ b/drivers/net/dsa/bcm_sf2.c
1747     @@ -405,11 +405,10 @@ static int bcm_sf2_sw_mdio_write(struct mii_bus *bus, int addr, int regnum,
1748     * send them to our master MDIO bus controller
1749     */
1750     if (addr == BRCM_PSEUDO_PHY_ADDR && priv->indir_phy_mask & BIT(addr))
1751     - bcm_sf2_sw_indir_rw(priv, 0, addr, regnum, val);
1752     + return bcm_sf2_sw_indir_rw(priv, 0, addr, regnum, val);
1753     else
1754     - mdiobus_write_nested(priv->master_mii_bus, addr, regnum, val);
1755     -
1756     - return 0;
1757     + return mdiobus_write_nested(priv->master_mii_bus, addr,
1758     + regnum, val);
1759     }
1760    
1761     static irqreturn_t bcm_sf2_switch_0_isr(int irq, void *dev_id)
1762     diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
1763     index 974713b19ab6..5e1f03590aaf 100644
1764     --- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
1765     +++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
1766     @@ -478,7 +478,9 @@ static void atl1e_mdio_write(struct net_device *netdev, int phy_id,
1767     {
1768     struct atl1e_adapter *adapter = netdev_priv(netdev);
1769    
1770     - atl1e_write_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, val);
1771     + if (atl1e_write_phy_reg(&adapter->hw,
1772     + reg_num & MDIO_REG_ADDR_MASK, val))
1773     + netdev_err(netdev, "write phy register failed\n");
1774     }
1775    
1776     static int atl1e_mii_ioctl(struct net_device *netdev,
1777     diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
1778     index a0d640243df2..30e93041bf83 100644
1779     --- a/drivers/net/ethernet/cadence/macb.c
1780     +++ b/drivers/net/ethernet/cadence/macb.c
1781     @@ -2364,14 +2364,14 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
1782     *pclk = devm_clk_get(&pdev->dev, "pclk");
1783     if (IS_ERR(*pclk)) {
1784     err = PTR_ERR(*pclk);
1785     - dev_err(&pdev->dev, "failed to get macb_clk (%u)\n", err);
1786     + dev_err(&pdev->dev, "failed to get macb_clk (%d)\n", err);
1787     return err;
1788     }
1789    
1790     *hclk = devm_clk_get(&pdev->dev, "hclk");
1791     if (IS_ERR(*hclk)) {
1792     err = PTR_ERR(*hclk);
1793     - dev_err(&pdev->dev, "failed to get hclk (%u)\n", err);
1794     + dev_err(&pdev->dev, "failed to get hclk (%d)\n", err);
1795     return err;
1796     }
1797    
1798     @@ -2385,25 +2385,25 @@ static int macb_clk_init(struct platform_device *pdev, struct clk **pclk,
1799    
1800     err = clk_prepare_enable(*pclk);
1801     if (err) {
1802     - dev_err(&pdev->dev, "failed to enable pclk (%u)\n", err);
1803     + dev_err(&pdev->dev, "failed to enable pclk (%d)\n", err);
1804     return err;
1805     }
1806    
1807     err = clk_prepare_enable(*hclk);
1808     if (err) {
1809     - dev_err(&pdev->dev, "failed to enable hclk (%u)\n", err);
1810     + dev_err(&pdev->dev, "failed to enable hclk (%d)\n", err);
1811     goto err_disable_pclk;
1812     }
1813    
1814     err = clk_prepare_enable(*tx_clk);
1815     if (err) {
1816     - dev_err(&pdev->dev, "failed to enable tx_clk (%u)\n", err);
1817     + dev_err(&pdev->dev, "failed to enable tx_clk (%d)\n", err);
1818     goto err_disable_hclk;
1819     }
1820    
1821     err = clk_prepare_enable(*rx_clk);
1822     if (err) {
1823     - dev_err(&pdev->dev, "failed to enable rx_clk (%u)\n", err);
1824     + dev_err(&pdev->dev, "failed to enable rx_clk (%d)\n", err);
1825     goto err_disable_txclk;
1826     }
1827    
1828     @@ -2823,7 +2823,7 @@ static int at91ether_clk_init(struct platform_device *pdev, struct clk **pclk,
1829    
1830     err = clk_prepare_enable(*pclk);
1831     if (err) {
1832     - dev_err(&pdev->dev, "failed to enable pclk (%u)\n", err);
1833     + dev_err(&pdev->dev, "failed to enable pclk (%d)\n", err);
1834     return err;
1835     }
1836    
1837     diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
1838     index 92ea760c4822..1b07c6216e2a 100644
1839     --- a/drivers/net/ethernet/freescale/fec_main.c
1840     +++ b/drivers/net/ethernet/freescale/fec_main.c
1841     @@ -3530,6 +3530,11 @@ fec_drv_remove(struct platform_device *pdev)
1842     struct net_device *ndev = platform_get_drvdata(pdev);
1843     struct fec_enet_private *fep = netdev_priv(ndev);
1844     struct device_node *np = pdev->dev.of_node;
1845     + int ret;
1846     +
1847     + ret = pm_runtime_get_sync(&pdev->dev);
1848     + if (ret < 0)
1849     + return ret;
1850    
1851     cancel_work_sync(&fep->tx_timeout_work);
1852     fec_ptp_stop(pdev);
1853     @@ -3537,13 +3542,17 @@ fec_drv_remove(struct platform_device *pdev)
1854     fec_enet_mii_remove(fep);
1855     if (fep->reg_phy)
1856     regulator_disable(fep->reg_phy);
1857     - pm_runtime_put(&pdev->dev);
1858     - pm_runtime_disable(&pdev->dev);
1859     +
1860     if (of_phy_is_fixed_link(np))
1861     of_phy_deregister_fixed_link(np);
1862     of_node_put(fep->phy_node);
1863     free_netdev(ndev);
1864    
1865     + clk_disable_unprepare(fep->clk_ahb);
1866     + clk_disable_unprepare(fep->clk_ipg);
1867     + pm_runtime_put_noidle(&pdev->dev);
1868     + pm_runtime_disable(&pdev->dev);
1869     +
1870     return 0;
1871     }
1872    
1873     diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
1874     index d676088512cf..c9fb589690ee 100644
1875     --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
1876     +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
1877     @@ -786,11 +786,9 @@ static int mlx5_pci_init(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
1878    
1879     priv->numa_node = dev_to_node(&dev->pdev->dev);
1880    
1881     - priv->dbg_root = debugfs_create_dir(dev_name(&pdev->dev), mlx5_debugfs_root);
1882     - if (!priv->dbg_root) {
1883     - dev_err(&pdev->dev, "Cannot create debugfs dir, aborting\n");
1884     - return -ENOMEM;
1885     - }
1886     + if (mlx5_debugfs_root)
1887     + priv->dbg_root =
1888     + debugfs_create_dir(pci_name(pdev), mlx5_debugfs_root);
1889    
1890     err = mlx5_pci_enable_device(dev);
1891     if (err) {
1892     diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef10.c
1893     index 3d5d5d54c103..22bc3dc44298 100644
1894     --- a/drivers/net/ethernet/sfc/ef10.c
1895     +++ b/drivers/net/ethernet/sfc/ef10.c
1896     @@ -5093,22 +5093,25 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
1897     { NVRAM_PARTITION_TYPE_LICENSE, 0, 0, "sfc_license" },
1898     { NVRAM_PARTITION_TYPE_PHY_MIN, 0xff, 0, "sfc_phy_fw" },
1899     };
1900     +#define EF10_NVRAM_PARTITION_COUNT ARRAY_SIZE(efx_ef10_nvram_types)
1901    
1902     static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
1903     struct efx_mcdi_mtd_partition *part,
1904     - unsigned int type)
1905     + unsigned int type,
1906     + unsigned long *found)
1907     {
1908     MCDI_DECLARE_BUF(inbuf, MC_CMD_NVRAM_METADATA_IN_LEN);
1909     MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_METADATA_OUT_LENMAX);
1910     const struct efx_ef10_nvram_type_info *info;
1911     size_t size, erase_size, outlen;
1912     + int type_idx = 0;
1913     bool protected;
1914     int rc;
1915    
1916     - for (info = efx_ef10_nvram_types; ; info++) {
1917     - if (info ==
1918     - efx_ef10_nvram_types + ARRAY_SIZE(efx_ef10_nvram_types))
1919     + for (type_idx = 0; ; type_idx++) {
1920     + if (type_idx == EF10_NVRAM_PARTITION_COUNT)
1921     return -ENODEV;
1922     + info = efx_ef10_nvram_types + type_idx;
1923     if ((type & ~info->type_mask) == info->type)
1924     break;
1925     }
1926     @@ -5121,6 +5124,13 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
1927     if (protected)
1928     return -ENODEV; /* hide it */
1929    
1930     + /* If we've already exposed a partition of this type, hide this
1931     + * duplicate. All operations on MTDs are keyed by the type anyway,
1932     + * so we can't act on the duplicate.
1933     + */
1934     + if (__test_and_set_bit(type_idx, found))
1935     + return -EEXIST;
1936     +
1937     part->nvram_type = type;
1938    
1939     MCDI_SET_DWORD(inbuf, NVRAM_METADATA_IN_TYPE, type);
1940     @@ -5149,6 +5159,7 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
1941     static int efx_ef10_mtd_probe(struct efx_nic *efx)
1942     {
1943     MCDI_DECLARE_BUF(outbuf, MC_CMD_NVRAM_PARTITIONS_OUT_LENMAX);
1944     + DECLARE_BITMAP(found, EF10_NVRAM_PARTITION_COUNT) = { 0 };
1945     struct efx_mcdi_mtd_partition *parts;
1946     size_t outlen, n_parts_total, i, n_parts;
1947     unsigned int type;
1948     @@ -5177,11 +5188,13 @@ static int efx_ef10_mtd_probe(struct efx_nic *efx)
1949     for (i = 0; i < n_parts_total; i++) {
1950     type = MCDI_ARRAY_DWORD(outbuf, NVRAM_PARTITIONS_OUT_TYPE_ID,
1951     i);
1952     - rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type);
1953     - if (rc == 0)
1954     - n_parts++;
1955     - else if (rc != -ENODEV)
1956     + rc = efx_ef10_mtd_probe_partition(efx, &parts[n_parts], type,
1957     + found);
1958     + if (rc == -EEXIST || rc == -ENODEV)
1959     + continue;
1960     + if (rc)
1961     goto fail;
1962     + n_parts++;
1963     }
1964    
1965     rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts));
1966     diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
1967     index d07520fb969e..62ccbd47c1db 100644
1968     --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
1969     +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c
1970     @@ -59,7 +59,9 @@ static int sun7i_gmac_init(struct platform_device *pdev, void *priv)
1971     gmac->clk_enabled = 1;
1972     } else {
1973     clk_set_rate(gmac->tx_clk, SUN7I_GMAC_MII_RATE);
1974     - clk_prepare(gmac->tx_clk);
1975     + ret = clk_prepare(gmac->tx_clk);
1976     + if (ret)
1977     + return ret;
1978     }
1979    
1980     return 0;
1981     diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
1982     index 6237236b7c4c..b1dcc7448b4f 100644
1983     --- a/drivers/net/macvlan.c
1984     +++ b/drivers/net/macvlan.c
1985     @@ -334,10 +334,11 @@ static void macvlan_broadcast_enqueue(struct macvlan_port *port,
1986     }
1987     spin_unlock(&port->bc_queue.lock);
1988    
1989     + schedule_work(&port->bc_work);
1990     +
1991     if (err)
1992     goto free_nskb;
1993    
1994     - schedule_work(&port->bc_work);
1995     return;
1996    
1997     free_nskb:
1998     diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c
1999     index b2317b3a542a..7ec96c3e38a6 100644
2000     --- a/drivers/net/slip/slip.c
2001     +++ b/drivers/net/slip/slip.c
2002     @@ -860,6 +860,7 @@ err_free_chan:
2003     sl->tty = NULL;
2004     tty->disc_data = NULL;
2005     clear_bit(SLF_INUSE, &sl->flags);
2006     + sl_free_netdev(sl->dev);
2007     free_netdev(sl->dev);
2008    
2009     err_exit:
2010     diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
2011     index 7a62316c570d..b2c1e872d5ed 100644
2012     --- a/drivers/net/wan/fsl_ucc_hdlc.c
2013     +++ b/drivers/net/wan/fsl_ucc_hdlc.c
2014     @@ -1117,7 +1117,6 @@ static int ucc_hdlc_probe(struct platform_device *pdev)
2015     if (register_hdlc_device(dev)) {
2016     ret = -ENOBUFS;
2017     pr_err("ucc_hdlc: unable to register hdlc device\n");
2018     - free_netdev(dev);
2019     goto free_dev;
2020     }
2021    
2022     diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
2023     index b7fe0af4cb24..650d2f6446a6 100644
2024     --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
2025     +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
2026     @@ -934,7 +934,7 @@ static int ath6kl_set_probed_ssids(struct ath6kl *ar,
2027     else
2028     ssid_list[i].flag = ANY_SSID_FLAG;
2029    
2030     - if (n_match_ssid == 0)
2031     + if (ar->wiphy->max_match_sets != 0 && n_match_ssid == 0)
2032     ssid_list[i].flag |= MATCH_SSID_FLAG;
2033     }
2034    
2035     @@ -1088,7 +1088,7 @@ void ath6kl_cfg80211_scan_complete_event(struct ath6kl_vif *vif, bool aborted)
2036     if (vif->scan_req->n_ssids && vif->scan_req->ssids[0].ssid_len) {
2037     for (i = 0; i < vif->scan_req->n_ssids; i++) {
2038     ath6kl_wmi_probedssid_cmd(ar->wmi, vif->fw_vif_idx,
2039     - i + 1, DISABLE_SSID_FLAG,
2040     + i, DISABLE_SSID_FLAG,
2041     0, NULL);
2042     }
2043     }
2044     diff --git a/drivers/net/wireless/marvell/mwifiex/debugfs.c b/drivers/net/wireless/marvell/mwifiex/debugfs.c
2045     index ae2b69db5994..6eacea28d7ac 100644
2046     --- a/drivers/net/wireless/marvell/mwifiex/debugfs.c
2047     +++ b/drivers/net/wireless/marvell/mwifiex/debugfs.c
2048     @@ -296,15 +296,13 @@ mwifiex_histogram_read(struct file *file, char __user *ubuf,
2049     "total samples = %d\n",
2050     atomic_read(&phist_data->num_samples));
2051    
2052     - p += sprintf(p, "rx rates (in Mbps): 0=1M 1=2M");
2053     - p += sprintf(p, "2=5.5M 3=11M 4=6M 5=9M 6=12M\n");
2054     - p += sprintf(p, "7=18M 8=24M 9=36M 10=48M 11=54M");
2055     - p += sprintf(p, "12-27=MCS0-15(BW20) 28-43=MCS0-15(BW40)\n");
2056     + p += sprintf(p,
2057     + "rx rates (in Mbps): 0=1M 1=2M 2=5.5M 3=11M 4=6M 5=9M 6=12M\n"
2058     + "7=18M 8=24M 9=36M 10=48M 11=54M 12-27=MCS0-15(BW20) 28-43=MCS0-15(BW40)\n");
2059    
2060     if (ISSUPP_11ACENABLED(priv->adapter->fw_cap_info)) {
2061     - p += sprintf(p, "44-53=MCS0-9(VHT:BW20)");
2062     - p += sprintf(p, "54-63=MCS0-9(VHT:BW40)");
2063     - p += sprintf(p, "64-73=MCS0-9(VHT:BW80)\n\n");
2064     + p += sprintf(p,
2065     + "44-53=MCS0-9(VHT:BW20) 54-63=MCS0-9(VHT:BW40) 64-73=MCS0-9(VHT:BW80)\n\n");
2066     } else {
2067     p += sprintf(p, "\n");
2068     }
2069     @@ -333,7 +331,7 @@ mwifiex_histogram_read(struct file *file, char __user *ubuf,
2070     for (i = 0; i < MWIFIEX_MAX_NOISE_FLR; i++) {
2071     value = atomic_read(&phist_data->noise_flr[i]);
2072     if (value)
2073     - p += sprintf(p, "noise_flr[-%02ddBm] = %d\n",
2074     + p += sprintf(p, "noise_flr[%02ddBm] = %d\n",
2075     (int)(i-128), value);
2076     }
2077     for (i = 0; i < MWIFIEX_MAX_SIG_STRENGTH; i++) {
2078     diff --git a/drivers/net/wireless/marvell/mwifiex/scan.c b/drivers/net/wireless/marvell/mwifiex/scan.c
2079     index 7e96b6a37946..828c6f5eb83c 100644
2080     --- a/drivers/net/wireless/marvell/mwifiex/scan.c
2081     +++ b/drivers/net/wireless/marvell/mwifiex/scan.c
2082     @@ -1890,15 +1890,17 @@ mwifiex_parse_single_response_buf(struct mwifiex_private *priv, u8 **bss_info,
2083     ETH_ALEN))
2084     mwifiex_update_curr_bss_params(priv,
2085     bss);
2086     - cfg80211_put_bss(priv->wdev.wiphy, bss);
2087     - }
2088    
2089     - if ((chan->flags & IEEE80211_CHAN_RADAR) ||
2090     - (chan->flags & IEEE80211_CHAN_NO_IR)) {
2091     - mwifiex_dbg(adapter, INFO,
2092     - "radar or passive channel %d\n",
2093     - channel);
2094     - mwifiex_save_hidden_ssid_channels(priv, bss);
2095     + if ((chan->flags & IEEE80211_CHAN_RADAR) ||
2096     + (chan->flags & IEEE80211_CHAN_NO_IR)) {
2097     + mwifiex_dbg(adapter, INFO,
2098     + "radar or passive channel %d\n",
2099     + channel);
2100     + mwifiex_save_hidden_ssid_channels(priv,
2101     + bss);
2102     + }
2103     +
2104     + cfg80211_put_bss(priv->wdev.wiphy, bss);
2105     }
2106     }
2107     } else {
2108     diff --git a/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c b/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
2109     index 6113624ccec3..17e3d5e83062 100644
2110     --- a/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
2111     +++ b/drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
2112     @@ -446,12 +446,13 @@ static int rtl8187_init_urbs(struct ieee80211_hw *dev)
2113     skb_queue_tail(&priv->rx_queue, skb);
2114     usb_anchor_urb(entry, &priv->anchored);
2115     ret = usb_submit_urb(entry, GFP_KERNEL);
2116     - usb_put_urb(entry);
2117     if (ret) {
2118     skb_unlink(skb, &priv->rx_queue);
2119     usb_unanchor_urb(entry);
2120     + usb_put_urb(entry);
2121     goto err;
2122     }
2123     + usb_put_urb(entry);
2124     }
2125     return ret;
2126    
2127     diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c
2128     index dd85ad1807f5..8ea1c6e2a6b2 100644
2129     --- a/drivers/pinctrl/pinctrl-xway.c
2130     +++ b/drivers/pinctrl/pinctrl-xway.c
2131     @@ -1748,14 +1748,6 @@ static int pinmux_xway_probe(struct platform_device *pdev)
2132     }
2133     xway_pctrl_desc.pins = xway_info.pads;
2134    
2135     - /* register the gpio chip */
2136     - xway_chip.parent = &pdev->dev;
2137     - ret = devm_gpiochip_add_data(&pdev->dev, &xway_chip, NULL);
2138     - if (ret) {
2139     - dev_err(&pdev->dev, "Failed to register gpio chip\n");
2140     - return ret;
2141     - }
2142     -
2143     /* setup the data needed by pinctrl */
2144     xway_pctrl_desc.name = dev_name(&pdev->dev);
2145     xway_pctrl_desc.npins = xway_chip.ngpio;
2146     @@ -1777,10 +1769,33 @@ static int pinmux_xway_probe(struct platform_device *pdev)
2147     return ret;
2148     }
2149    
2150     - /* finish with registering the gpio range in pinctrl */
2151     - xway_gpio_range.npins = xway_chip.ngpio;
2152     - xway_gpio_range.base = xway_chip.base;
2153     - pinctrl_add_gpio_range(xway_info.pctrl, &xway_gpio_range);
2154     + /* register the gpio chip */
2155     + xway_chip.parent = &pdev->dev;
2156     + xway_chip.owner = THIS_MODULE;
2157     + xway_chip.of_node = pdev->dev.of_node;
2158     + ret = devm_gpiochip_add_data(&pdev->dev, &xway_chip, NULL);
2159     + if (ret) {
2160     + dev_err(&pdev->dev, "Failed to register gpio chip\n");
2161     + return ret;
2162     + }
2163     +
2164     + /*
2165     + * For DeviceTree-supported systems, the gpio core checks the
2166     + * pinctrl's device node for the "gpio-ranges" property.
2167     + * If it is present, it takes care of adding the pin ranges
2168     + * for the driver. In this case the driver can skip ahead.
2169     + *
2170     + * In order to remain compatible with older, existing DeviceTree
2171     + * files which don't set the "gpio-ranges" property or systems that
2172     + * utilize ACPI the driver has to call gpiochip_add_pin_range().
2173     + */
2174     + if (!of_property_read_bool(pdev->dev.of_node, "gpio-ranges")) {
2175     + /* finish with registering the gpio range in pinctrl */
2176     + xway_gpio_range.npins = xway_chip.ngpio;
2177     + xway_gpio_range.base = xway_chip.base;
2178     + pinctrl_add_gpio_range(xway_info.pctrl, &xway_gpio_range);
2179     + }
2180     +
2181     dev_info(&pdev->dev, "Init done\n");
2182     return 0;
2183     }
2184     diff --git a/drivers/pinctrl/sh-pfc/pfc-sh7264.c b/drivers/pinctrl/sh-pfc/pfc-sh7264.c
2185     index 8070765311db..e1c34e19222e 100644
2186     --- a/drivers/pinctrl/sh-pfc/pfc-sh7264.c
2187     +++ b/drivers/pinctrl/sh-pfc/pfc-sh7264.c
2188     @@ -1716,6 +1716,9 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {
2189     },
2190    
2191     { PINMUX_CFG_REG("PFCR3", 0xfffe38a8, 16, 4) {
2192     + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193     + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194     + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195     PF12MD_000, PF12MD_001, 0, PF12MD_011,
2196     PF12MD_100, PF12MD_101, 0, 0,
2197     0, 0, 0, 0, 0, 0, 0, 0 }
2198     @@ -1759,8 +1762,10 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {
2199     0, 0, 0, 0, 0, 0, 0, 0,
2200     PF1MD_000, PF1MD_001, PF1MD_010, PF1MD_011,
2201     PF1MD_100, PF1MD_101, 0, 0,
2202     - 0, 0, 0, 0, 0, 0, 0, 0
2203     - }
2204     + 0, 0, 0, 0, 0, 0, 0, 0,
2205     + PF0MD_000, PF0MD_001, PF0MD_010, PF0MD_011,
2206     + PF0MD_100, PF0MD_101, 0, 0,
2207     + 0, 0, 0, 0, 0, 0, 0, 0 }
2208     },
2209    
2210     { PINMUX_CFG_REG("PFIOR0", 0xfffe38b2, 16, 1) {
2211     diff --git a/drivers/pinctrl/sh-pfc/pfc-sh7734.c b/drivers/pinctrl/sh-pfc/pfc-sh7734.c
2212     index 6502e676d368..33232041ee86 100644
2213     --- a/drivers/pinctrl/sh-pfc/pfc-sh7734.c
2214     +++ b/drivers/pinctrl/sh-pfc/pfc-sh7734.c
2215     @@ -2213,22 +2213,22 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {
2216     /* IP10_22 [1] */
2217     FN_CAN_CLK_A, FN_RX4_D,
2218     /* IP10_21_19 [3] */
2219     - FN_AUDIO_CLKOUT, FN_TX1_E, FN_HRTS0_C, FN_FSE_B,
2220     - FN_LCD_M_DISP_B, 0, 0, 0,
2221     + FN_AUDIO_CLKOUT, FN_TX1_E, 0, FN_HRTS0_C, FN_FSE_B,
2222     + FN_LCD_M_DISP_B, 0, 0,
2223     /* IP10_18_16 [3] */
2224     - FN_AUDIO_CLKC, FN_SCK1_E, FN_HCTS0_C, FN_FRB_B,
2225     - FN_LCD_VEPWC_B, 0, 0, 0,
2226     + FN_AUDIO_CLKC, FN_SCK1_E, 0, FN_HCTS0_C, FN_FRB_B,
2227     + FN_LCD_VEPWC_B, 0, 0,
2228     /* IP10_15 [1] */
2229     FN_AUDIO_CLKB_A, FN_LCD_CLK_B,
2230     /* IP10_14_12 [3] */
2231     FN_AUDIO_CLKA_A, FN_VI1_CLK_B, FN_SCK1_D, FN_IECLK_B,
2232     FN_LCD_FLM_B, 0, 0, 0,
2233     /* IP10_11_9 [3] */
2234     - FN_SSI_SDATA3, FN_VI1_7_B, FN_HTX0_C, FN_FWE_B,
2235     - FN_LCD_CL2_B, 0, 0, 0,
2236     + FN_SSI_SDATA3, FN_VI1_7_B, 0, FN_HTX0_C, FN_FWE_B,
2237     + FN_LCD_CL2_B, 0, 0,
2238     /* IP10_8_6 [3] */
2239     - FN_SSI_SDATA2, FN_VI1_6_B, FN_HRX0_C, FN_FRE_B,
2240     - FN_LCD_CL1_B, 0, 0, 0,
2241     + FN_SSI_SDATA2, FN_VI1_6_B, 0, FN_HRX0_C, FN_FRE_B,
2242     + FN_LCD_CL1_B, 0, 0,
2243     /* IP10_5_3 [3] */
2244     FN_SSI_WS23, FN_VI1_5_B, FN_TX1_D, FN_HSCK0_C, FN_FALE_B,
2245     FN_LCD_DON_B, 0, 0, 0,
2246     diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
2247     index 454cb2ee3cee..05dc16b477f0 100644
2248     --- a/drivers/platform/x86/hp-wmi.c
2249     +++ b/drivers/platform/x86/hp-wmi.c
2250     @@ -90,7 +90,7 @@ struct bios_args {
2251     u32 command;
2252     u32 commandtype;
2253     u32 datasize;
2254     - u32 data;
2255     + u8 data[128];
2256     };
2257    
2258     struct bios_return {
2259     @@ -198,7 +198,7 @@ static int hp_wmi_perform_query(int query, int write, void *buffer,
2260     .command = write ? 0x2 : 0x1,
2261     .commandtype = query,
2262     .datasize = insize,
2263     - .data = 0,
2264     + .data = { 0 },
2265     };
2266     struct acpi_buffer input = { sizeof(struct bios_args), &args };
2267     struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
2268     @@ -206,7 +206,7 @@ static int hp_wmi_perform_query(int query, int write, void *buffer,
2269    
2270     if (WARN_ON(insize > sizeof(args.data)))
2271     return -EINVAL;
2272     - memcpy(&args.data, buffer, insize);
2273     + memcpy(&args.data[0], buffer, insize);
2274    
2275     wmi_evaluate_method(HPWMI_BIOS_GUID, 0, 0x3, &input, &output);
2276    
2277     diff --git a/drivers/power/avs/smartreflex.c b/drivers/power/avs/smartreflex.c
2278     index fa0f19b975a6..bb7b817cca59 100644
2279     --- a/drivers/power/avs/smartreflex.c
2280     +++ b/drivers/power/avs/smartreflex.c
2281     @@ -994,8 +994,7 @@ static int omap_sr_remove(struct platform_device *pdev)
2282    
2283     if (sr_info->autocomp_active)
2284     sr_stop_vddautocomp(sr_info);
2285     - if (sr_info->dbg_dir)
2286     - debugfs_remove_recursive(sr_info->dbg_dir);
2287     + debugfs_remove_recursive(sr_info->dbg_dir);
2288    
2289     pm_runtime_disable(&pdev->dev);
2290     list_del(&sr_info->node);
2291     diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
2292     index a19246455c13..cc12032ee60d 100644
2293     --- a/drivers/pwm/core.c
2294     +++ b/drivers/pwm/core.c
2295     @@ -858,6 +858,7 @@ void pwm_put(struct pwm_device *pwm)
2296     if (pwm->chip->ops->free)
2297     pwm->chip->ops->free(pwm->chip, pwm);
2298    
2299     + pwm_set_chip_data(pwm, NULL);
2300     pwm->label = NULL;
2301    
2302     module_put(pwm->chip->ops->owner);
2303     diff --git a/drivers/pwm/pwm-bcm-iproc.c b/drivers/pwm/pwm-bcm-iproc.c
2304     index d961a8207b1c..31b01035d0ab 100644
2305     --- a/drivers/pwm/pwm-bcm-iproc.c
2306     +++ b/drivers/pwm/pwm-bcm-iproc.c
2307     @@ -187,6 +187,7 @@ static int iproc_pwmc_apply(struct pwm_chip *chip, struct pwm_device *pwm,
2308     static const struct pwm_ops iproc_pwm_ops = {
2309     .apply = iproc_pwmc_apply,
2310     .get_state = iproc_pwmc_get_state,
2311     + .owner = THIS_MODULE,
2312     };
2313    
2314     static int iproc_pwmc_probe(struct platform_device *pdev)
2315     diff --git a/drivers/pwm/pwm-berlin.c b/drivers/pwm/pwm-berlin.c
2316     index 01339c152ab0..64d9bb1ac272 100644
2317     --- a/drivers/pwm/pwm-berlin.c
2318     +++ b/drivers/pwm/pwm-berlin.c
2319     @@ -78,7 +78,6 @@ static void berlin_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
2320     {
2321     struct berlin_pwm_channel *channel = pwm_get_chip_data(pwm);
2322    
2323     - pwm_set_chip_data(pwm, NULL);
2324     kfree(channel);
2325     }
2326    
2327     diff --git a/drivers/pwm/pwm-clps711x.c b/drivers/pwm/pwm-clps711x.c
2328     index 26ec24e457b1..7e16b7def0dc 100644
2329     --- a/drivers/pwm/pwm-clps711x.c
2330     +++ b/drivers/pwm/pwm-clps711x.c
2331     @@ -48,7 +48,7 @@ static void clps711x_pwm_update_val(struct clps711x_chip *priv, u32 n, u32 v)
2332     static unsigned int clps711x_get_duty(struct pwm_device *pwm, unsigned int v)
2333     {
2334     /* Duty cycle 0..15 max */
2335     - return DIV_ROUND_CLOSEST(v * 0xf, pwm_get_period(pwm));
2336     + return DIV_ROUND_CLOSEST(v * 0xf, pwm->args.period);
2337     }
2338    
2339     static int clps711x_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
2340     @@ -71,7 +71,7 @@ static int clps711x_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
2341     struct clps711x_chip *priv = to_clps711x_chip(chip);
2342     unsigned int duty;
2343    
2344     - if (period_ns != pwm_get_period(pwm))
2345     + if (period_ns != pwm->args.period)
2346     return -EINVAL;
2347    
2348     duty = clps711x_get_duty(pwm, duty_ns);
2349     diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c
2350     index f113cda47032..219757087995 100644
2351     --- a/drivers/pwm/pwm-samsung.c
2352     +++ b/drivers/pwm/pwm-samsung.c
2353     @@ -235,7 +235,6 @@ static int pwm_samsung_request(struct pwm_chip *chip, struct pwm_device *pwm)
2354     static void pwm_samsung_free(struct pwm_chip *chip, struct pwm_device *pwm)
2355     {
2356     devm_kfree(chip->dev, pwm_get_chip_data(pwm));
2357     - pwm_set_chip_data(pwm, NULL);
2358     }
2359    
2360     static int pwm_samsung_enable(struct pwm_chip *chip, struct pwm_device *pwm)
2361     diff --git a/drivers/regulator/palmas-regulator.c b/drivers/regulator/palmas-regulator.c
2362     index f11d41dad9c1..1eb605b6f049 100644
2363     --- a/drivers/regulator/palmas-regulator.c
2364     +++ b/drivers/regulator/palmas-regulator.c
2365     @@ -435,13 +435,16 @@ static int palmas_ldo_write(struct palmas *palmas, unsigned int reg,
2366     static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode)
2367     {
2368     int id = rdev_get_id(dev);
2369     + int ret;
2370     struct palmas_pmic *pmic = rdev_get_drvdata(dev);
2371     struct palmas_pmic_driver_data *ddata = pmic->palmas->pmic_ddata;
2372     struct palmas_regs_info *rinfo = &ddata->palmas_regs_info[id];
2373     unsigned int reg;
2374     bool rail_enable = true;
2375    
2376     - palmas_smps_read(pmic->palmas, rinfo->ctrl_addr, &reg);
2377     + ret = palmas_smps_read(pmic->palmas, rinfo->ctrl_addr, &reg);
2378     + if (ret)
2379     + return ret;
2380    
2381     reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
2382    
2383     diff --git a/drivers/regulator/tps65910-regulator.c b/drivers/regulator/tps65910-regulator.c
2384     index 696116ebdf50..9cde7b075701 100644
2385     --- a/drivers/regulator/tps65910-regulator.c
2386     +++ b/drivers/regulator/tps65910-regulator.c
2387     @@ -1102,8 +1102,10 @@ static int tps65910_probe(struct platform_device *pdev)
2388     platform_set_drvdata(pdev, pmic);
2389    
2390     /* Give control of all register to control port */
2391     - tps65910_reg_set_bits(pmic->mfd, TPS65910_DEVCTRL,
2392     + err = tps65910_reg_set_bits(pmic->mfd, TPS65910_DEVCTRL,
2393     DEVCTRL_SR_CTL_I2C_SEL_MASK);
2394     + if (err < 0)
2395     + return err;
2396    
2397     switch (tps65910_chip_id(tps65910)) {
2398     case TPS65910:
2399     diff --git a/drivers/scsi/csiostor/csio_init.c b/drivers/scsi/csiostor/csio_init.c
2400     index dbe416ff46c2..776b99278688 100644
2401     --- a/drivers/scsi/csiostor/csio_init.c
2402     +++ b/drivers/scsi/csiostor/csio_init.c
2403     @@ -648,7 +648,7 @@ csio_shost_init(struct csio_hw *hw, struct device *dev,
2404     if (csio_lnode_init(ln, hw, pln))
2405     goto err_shost_put;
2406    
2407     - if (scsi_add_host(shost, dev))
2408     + if (scsi_add_host_with_dma(shost, dev, &hw->pdev->dev))
2409     goto err_lnode_exit;
2410    
2411     return ln;
2412     diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
2413     index d44f18f773c0..7e8274938a3e 100644
2414     --- a/drivers/scsi/libsas/sas_expander.c
2415     +++ b/drivers/scsi/libsas/sas_expander.c
2416     @@ -603,7 +603,14 @@ int sas_smp_phy_control(struct domain_device *dev, int phy_id,
2417     }
2418    
2419     res = smp_execute_task(dev, pc_req, PC_REQ_SIZE, pc_resp,PC_RESP_SIZE);
2420     -
2421     + if (res) {
2422     + pr_err("ex %016llx phy%02d PHY control failed: %d\n",
2423     + SAS_ADDR(dev->sas_addr), phy_id, res);
2424     + } else if (pc_resp[2] != SMP_RESP_FUNC_ACC) {
2425     + pr_err("ex %016llx phy%02d PHY control failed: function result 0x%x\n",
2426     + SAS_ADDR(dev->sas_addr), phy_id, pc_resp[2]);
2427     + res = pc_resp[2];
2428     + }
2429     kfree(pc_resp);
2430     kfree(pc_req);
2431     return res;
2432     @@ -806,6 +813,26 @@ static struct domain_device *sas_ex_discover_end_dev(
2433    
2434     #ifdef CONFIG_SCSI_SAS_ATA
2435     if ((phy->attached_tproto & SAS_PROTOCOL_STP) || phy->attached_sata_dev) {
2436     + if (child->linkrate > parent->min_linkrate) {
2437     + struct sas_phy_linkrates rates = {
2438     + .maximum_linkrate = parent->min_linkrate,
2439     + .minimum_linkrate = parent->min_linkrate,
2440     + };
2441     + int ret;
2442     +
2443     + pr_notice("ex %016llx phy%02d SATA device linkrate > min pathway connection rate, attempting to lower device linkrate\n",
2444     + SAS_ADDR(child->sas_addr), phy_id);
2445     + ret = sas_smp_phy_control(parent, phy_id,
2446     + PHY_FUNC_LINK_RESET, &rates);
2447     + if (ret) {
2448     + pr_err("ex %016llx phy%02d SATA device could not set linkrate (%d)\n",
2449     + SAS_ADDR(child->sas_addr), phy_id, ret);
2450     + goto out_free;
2451     + }
2452     + pr_notice("ex %016llx phy%02d SATA device set linkrate successfully\n",
2453     + SAS_ADDR(child->sas_addr), phy_id);
2454     + child->linkrate = child->min_linkrate;
2455     + }
2456     res = sas_get_ata_info(child, phy);
2457     if (res)
2458     goto out_free;
2459     diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
2460     index d197aa176dee..d489cc1018b5 100644
2461     --- a/drivers/scsi/lpfc/lpfc_scsi.c
2462     +++ b/drivers/scsi/lpfc/lpfc_scsi.c
2463     @@ -2707,6 +2707,7 @@ lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
2464     int datasegcnt, protsegcnt, datadir = scsi_cmnd->sc_data_direction;
2465     int prot_group_type = 0;
2466     int fcpdl;
2467     + struct lpfc_vport *vport = phba->pport;
2468    
2469     /*
2470     * Start the lpfc command prep by bumping the bpl beyond fcp_cmnd
2471     @@ -2812,6 +2813,14 @@ lpfc_bg_scsi_prep_dma_buf_s3(struct lpfc_hba *phba,
2472     */
2473     iocb_cmd->un.fcpi.fcpi_parm = fcpdl;
2474    
2475     + /*
2476     + * For First burst, we may need to adjust the initial transfer
2477     + * length for DIF
2478     + */
2479     + if (iocb_cmd->un.fcpi.fcpi_XRdy &&
2480     + (fcpdl < vport->cfg_first_burst_size))
2481     + iocb_cmd->un.fcpi.fcpi_XRdy = fcpdl;
2482     +
2483     return 0;
2484     err:
2485     if (lpfc_cmd->seg_cnt)
2486     @@ -3364,6 +3373,7 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
2487     int datasegcnt, protsegcnt, datadir = scsi_cmnd->sc_data_direction;
2488     int prot_group_type = 0;
2489     int fcpdl;
2490     + struct lpfc_vport *vport = phba->pport;
2491    
2492     /*
2493     * Start the lpfc command prep by bumping the sgl beyond fcp_cmnd
2494     @@ -3479,6 +3489,14 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
2495     */
2496     iocb_cmd->un.fcpi.fcpi_parm = fcpdl;
2497    
2498     + /*
2499     + * For First burst, we may need to adjust the initial transfer
2500     + * length for DIF
2501     + */
2502     + if (iocb_cmd->un.fcpi.fcpi_XRdy &&
2503     + (fcpdl < vport->cfg_first_burst_size))
2504     + iocb_cmd->un.fcpi.fcpi_XRdy = fcpdl;
2505     +
2506     /*
2507     * If the OAS driver feature is enabled and the lun is enabled for
2508     * OAS, set the oas iocb related flags.
2509     diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
2510     index 0ad8ecef1e30..abdd6f93c8fe 100644
2511     --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
2512     +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
2513     @@ -821,38 +821,14 @@ static ssize_t tcm_qla2xxx_tpg_enable_show(struct config_item *item,
2514     atomic_read(&tpg->lport_tpg_enabled));
2515     }
2516    
2517     -static void tcm_qla2xxx_depend_tpg(struct work_struct *work)
2518     -{
2519     - struct tcm_qla2xxx_tpg *base_tpg = container_of(work,
2520     - struct tcm_qla2xxx_tpg, tpg_base_work);
2521     - struct se_portal_group *se_tpg = &base_tpg->se_tpg;
2522     - struct scsi_qla_host *base_vha = base_tpg->lport->qla_vha;
2523     -
2524     - if (!target_depend_item(&se_tpg->tpg_group.cg_item)) {
2525     - atomic_set(&base_tpg->lport_tpg_enabled, 1);
2526     - qlt_enable_vha(base_vha);
2527     - }
2528     - complete(&base_tpg->tpg_base_comp);
2529     -}
2530     -
2531     -static void tcm_qla2xxx_undepend_tpg(struct work_struct *work)
2532     -{
2533     - struct tcm_qla2xxx_tpg *base_tpg = container_of(work,
2534     - struct tcm_qla2xxx_tpg, tpg_base_work);
2535     - struct se_portal_group *se_tpg = &base_tpg->se_tpg;
2536     - struct scsi_qla_host *base_vha = base_tpg->lport->qla_vha;
2537     -
2538     - if (!qlt_stop_phase1(base_vha->vha_tgt.qla_tgt)) {
2539     - atomic_set(&base_tpg->lport_tpg_enabled, 0);
2540     - target_undepend_item(&se_tpg->tpg_group.cg_item);
2541     - }
2542     - complete(&base_tpg->tpg_base_comp);
2543     -}
2544     -
2545     static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,
2546     const char *page, size_t count)
2547     {
2548     struct se_portal_group *se_tpg = to_tpg(item);
2549     + struct se_wwn *se_wwn = se_tpg->se_tpg_wwn;
2550     + struct tcm_qla2xxx_lport *lport = container_of(se_wwn,
2551     + struct tcm_qla2xxx_lport, lport_wwn);
2552     + struct scsi_qla_host *vha = lport->qla_vha;
2553     struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
2554     struct tcm_qla2xxx_tpg, se_tpg);
2555     unsigned long op;
2556     @@ -871,24 +847,16 @@ static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,
2557     if (atomic_read(&tpg->lport_tpg_enabled))
2558     return -EEXIST;
2559    
2560     - INIT_WORK(&tpg->tpg_base_work, tcm_qla2xxx_depend_tpg);
2561     + atomic_set(&tpg->lport_tpg_enabled, 1);
2562     + qlt_enable_vha(vha);
2563     } else {
2564     if (!atomic_read(&tpg->lport_tpg_enabled))
2565     return count;
2566    
2567     - INIT_WORK(&tpg->tpg_base_work, tcm_qla2xxx_undepend_tpg);
2568     + atomic_set(&tpg->lport_tpg_enabled, 0);
2569     + qlt_stop_phase1(vha->vha_tgt.qla_tgt);
2570     }
2571     - init_completion(&tpg->tpg_base_comp);
2572     - schedule_work(&tpg->tpg_base_work);
2573     - wait_for_completion(&tpg->tpg_base_comp);
2574    
2575     - if (op) {
2576     - if (!atomic_read(&tpg->lport_tpg_enabled))
2577     - return -ENODEV;
2578     - } else {
2579     - if (atomic_read(&tpg->lport_tpg_enabled))
2580     - return -EPERM;
2581     - }
2582     return count;
2583     }
2584    
2585     diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.h b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
2586     index 37e026a4823d..8b70fa3105bd 100644
2587     --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.h
2588     +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.h
2589     @@ -48,9 +48,6 @@ struct tcm_qla2xxx_tpg {
2590     struct tcm_qla2xxx_tpg_attrib tpg_attrib;
2591     /* Returned by tcm_qla2xxx_make_tpg() */
2592     struct se_portal_group se_tpg;
2593     - /* Items for dealing with configfs_depend_item */
2594     - struct completion tpg_base_comp;
2595     - struct work_struct tpg_base_work;
2596     };
2597    
2598     struct tcm_qla2xxx_fc_loopid {
2599     diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
2600     index 4c30eea45f89..0d6fe039ac19 100644
2601     --- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
2602     +++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
2603     @@ -1630,14 +1630,15 @@ static void _rtl92e_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,
2604     memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev));
2605     skb_push(skb, priv->rtllib->tx_headroom);
2606     ret = _rtl92e_tx(dev, skb);
2607     - if (ret != 0)
2608     - kfree_skb(skb);
2609    
2610     if (queue_index != MGNT_QUEUE) {
2611     priv->rtllib->stats.tx_bytes += (skb->len -
2612     priv->rtllib->tx_headroom);
2613     priv->rtllib->stats.tx_packets++;
2614     }
2615     +
2616     + if (ret != 0)
2617     + kfree_skb(skb);
2618     }
2619    
2620     static int _rtl92e_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
2621     diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
2622     index bacc7e284c0c..80ab672d61cc 100644
2623     --- a/drivers/tty/serial/max310x.c
2624     +++ b/drivers/tty/serial/max310x.c
2625     @@ -769,12 +769,9 @@ static void max310x_start_tx(struct uart_port *port)
2626    
2627     static unsigned int max310x_tx_empty(struct uart_port *port)
2628     {
2629     - unsigned int lvl, sts;
2630     + u8 lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
2631    
2632     - lvl = max310x_port_read(port, MAX310X_TXFIFOLVL_REG);
2633     - sts = max310x_port_read(port, MAX310X_IRQSTS_REG);
2634     -
2635     - return ((sts & MAX310X_IRQ_TXEMPTY_BIT) && !lvl) ? TIOCSER_TEMT : 0;
2636     + return lvl ? 0 : TIOCSER_TEMT;
2637     }
2638    
2639     static unsigned int max310x_get_mctrl(struct uart_port *port)
2640     diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
2641     index f94d11615b45..a7cb0968259e 100644
2642     --- a/drivers/usb/serial/ftdi_sio.c
2643     +++ b/drivers/usb/serial/ftdi_sio.c
2644     @@ -1028,6 +1028,9 @@ static const struct usb_device_id id_table_combined[] = {
2645     /* Sienna devices */
2646     { USB_DEVICE(FTDI_VID, FTDI_SIENNA_PID) },
2647     { USB_DEVICE(ECHELON_VID, ECHELON_U20_PID) },
2648     + /* U-Blox devices */
2649     + { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) },
2650     + { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) },
2651     { } /* Terminating entry */
2652     };
2653    
2654     diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
2655     index 2e8161f79b49..32a40ab9a385 100644
2656     --- a/drivers/usb/serial/ftdi_sio_ids.h
2657     +++ b/drivers/usb/serial/ftdi_sio_ids.h
2658     @@ -1557,3 +1557,10 @@
2659     */
2660     #define UNJO_VID 0x22B7
2661     #define UNJO_ISODEBUG_V1_PID 0x150D
2662     +
2663     +/*
2664     + * U-Blox products (http://www.u-blox.com).
2665     + */
2666     +#define UBLOX_VID 0x1546
2667     +#define UBLOX_C099F9P_ZED_PID 0x0502
2668     +#define UBLOX_C099F9P_ODIN_PID 0x0503
2669     diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c
2670     index 70c748a5fbcc..a8e25f9409fa 100644
2671     --- a/drivers/vfio/vfio_iommu_spapr_tce.c
2672     +++ b/drivers/vfio/vfio_iommu_spapr_tce.c
2673     @@ -406,6 +406,7 @@ static void tce_iommu_release(void *iommu_data)
2674     {
2675     struct tce_container *container = iommu_data;
2676     struct tce_iommu_group *tcegrp;
2677     + struct tce_iommu_prereg *tcemem, *tmtmp;
2678     long i;
2679    
2680     while (tce_groups_attached(container)) {
2681     @@ -428,13 +429,8 @@ static void tce_iommu_release(void *iommu_data)
2682     tce_iommu_free_table(container, tbl);
2683     }
2684    
2685     - while (!list_empty(&container->prereg_list)) {
2686     - struct tce_iommu_prereg *tcemem;
2687     -
2688     - tcemem = list_first_entry(&container->prereg_list,
2689     - struct tce_iommu_prereg, next);
2690     - WARN_ON_ONCE(tce_iommu_prereg_free(container, tcemem));
2691     - }
2692     + list_for_each_entry_safe(tcemem, tmtmp, &container->prereg_list, next)
2693     + WARN_ON(tce_iommu_prereg_free(container, tcemem));
2694    
2695     tce_iommu_disable(container);
2696     if (container->mm)
2697     diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c
2698     index 44d180a2c5e5..58e06f059e67 100644
2699     --- a/drivers/watchdog/meson_gxbb_wdt.c
2700     +++ b/drivers/watchdog/meson_gxbb_wdt.c
2701     @@ -137,8 +137,8 @@ static unsigned int meson_gxbb_wdt_get_timeleft(struct watchdog_device *wdt_dev)
2702    
2703     reg = readl(data->reg_base + GXBB_WDT_TCNT_REG);
2704    
2705     - return ((reg >> GXBB_WDT_TCNT_CNT_SHIFT) -
2706     - (reg & GXBB_WDT_TCNT_SETUP_MASK)) / 1000;
2707     + return ((reg & GXBB_WDT_TCNT_SETUP_MASK) -
2708     + (reg >> GXBB_WDT_TCNT_CNT_SHIFT)) / 1000;
2709     }
2710    
2711     static const struct watchdog_ops meson_gxbb_wdt_ops = {
2712     diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
2713     index 6331a95691a4..ee5ce9286d61 100644
2714     --- a/drivers/xen/xen-pciback/pci_stub.c
2715     +++ b/drivers/xen/xen-pciback/pci_stub.c
2716     @@ -106,7 +106,8 @@ static void pcistub_device_release(struct kref *kref)
2717     * is called from "unbind" which takes a device_lock mutex.
2718     */
2719     __pci_reset_function_locked(dev);
2720     - if (pci_load_and_free_saved_state(dev, &dev_data->pci_saved_state))
2721     + if (dev_data &&
2722     + pci_load_and_free_saved_state(dev, &dev_data->pci_saved_state))
2723     dev_info(&dev->dev, "Could not reload PCI state\n");
2724     else
2725     pci_restore_state(dev);
2726     diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c
2727     index 8d93854a4b4f..74c17db75201 100644
2728     --- a/fs/btrfs/delayed-ref.c
2729     +++ b/fs/btrfs/delayed-ref.c
2730     @@ -193,8 +193,6 @@ static inline void drop_delayed_ref(struct btrfs_trans_handle *trans,
2731     ref->in_tree = 0;
2732     btrfs_put_delayed_ref(ref);
2733     atomic_dec(&delayed_refs->num_entries);
2734     - if (trans->delayed_ref_updates)
2735     - trans->delayed_ref_updates--;
2736     }
2737    
2738     static bool merge_ref(struct btrfs_trans_handle *trans,
2739     @@ -445,7 +443,6 @@ add_delayed_ref_tail_merge(struct btrfs_trans_handle *trans,
2740     add_tail:
2741     list_add_tail(&ref->list, &href->ref_list);
2742     atomic_inc(&root->num_entries);
2743     - trans->delayed_ref_updates++;
2744     spin_unlock(&href->lock);
2745     return ret;
2746     }
2747     diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
2748     index 39af17b407f0..d83e99fa98b3 100644
2749     --- a/fs/gfs2/bmap.c
2750     +++ b/fs/gfs2/bmap.c
2751     @@ -1236,6 +1236,8 @@ static int do_grow(struct inode *inode, u64 size)
2752     }
2753    
2754     error = gfs2_trans_begin(sdp, RES_DINODE + RES_STATFS + RES_RG_BIT +
2755     + (unstuff &&
2756     + gfs2_is_jdata(ip) ? RES_JDATA : 0) +
2757     (sdp->sd_args.ar_quota == GFS2_QUOTA_OFF ?
2758     0 : RES_QUOTA), 0);
2759     if (error)
2760     diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
2761     index a30f63623db7..13cf69aa4cae 100644
2762     --- a/fs/ocfs2/journal.c
2763     +++ b/fs/ocfs2/journal.c
2764     @@ -1018,7 +1018,8 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb)
2765     mlog_errno(status);
2766     }
2767    
2768     - if (status == 0) {
2769     + /* Shutdown the kernel journal system */
2770     + if (!jbd2_journal_destroy(journal->j_journal) && !status) {
2771     /*
2772     * Do not toggle if flush was unsuccessful otherwise
2773     * will leave dirty metadata in a "clean" journal
2774     @@ -1027,9 +1028,6 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb)
2775     if (status < 0)
2776     mlog_errno(status);
2777     }
2778     -
2779     - /* Shutdown the kernel journal system */
2780     - jbd2_journal_destroy(journal->j_journal);
2781     journal->j_journal = NULL;
2782    
2783     OCFS2_I(inode)->ip_open_count--;
2784     diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
2785     index 321f57721b92..6b7ed221726d 100644
2786     --- a/fs/xfs/xfs_ioctl32.c
2787     +++ b/fs/xfs/xfs_ioctl32.c
2788     @@ -251,6 +251,32 @@ xfs_compat_ioc_bulkstat(
2789     int done;
2790     int error;
2791    
2792     + /*
2793     + * Output structure handling functions. Depending on the command,
2794     + * either the xfs_bstat and xfs_inogrp structures are written out
2795     + * to userpace memory via bulkreq.ubuffer. Normally the compat
2796     + * functions and structure size are the correct ones to use ...
2797     + */
2798     + inumbers_fmt_pf inumbers_func = xfs_inumbers_fmt_compat;
2799     + bulkstat_one_pf bs_one_func = xfs_bulkstat_one_compat;
2800     + size_t bs_one_size = sizeof(struct compat_xfs_bstat);
2801     +
2802     +#ifdef CONFIG_X86_X32
2803     + if (in_x32_syscall()) {
2804     + /*
2805     + * ... but on x32 the input xfs_fsop_bulkreq has pointers
2806     + * which must be handled in the "compat" (32-bit) way, while
2807     + * the xfs_bstat and xfs_inogrp structures follow native 64-
2808     + * bit layout convention. So adjust accordingly, otherwise
2809     + * the data written out in compat layout will not match what
2810     + * x32 userspace expects.
2811     + */
2812     + inumbers_func = xfs_inumbers_fmt;
2813     + bs_one_func = xfs_bulkstat_one;
2814     + bs_one_size = sizeof(struct xfs_bstat);
2815     + }
2816     +#endif
2817     +
2818     /* done = 1 if there are more stats to get and if bulkstat */
2819     /* should be called again (unused here, but used in dmapi) */
2820    
2821     @@ -282,15 +308,15 @@ xfs_compat_ioc_bulkstat(
2822    
2823     if (cmd == XFS_IOC_FSINUMBERS_32) {
2824     error = xfs_inumbers(mp, &inlast, &count,
2825     - bulkreq.ubuffer, xfs_inumbers_fmt_compat);
2826     + bulkreq.ubuffer, inumbers_func);
2827     } else if (cmd == XFS_IOC_FSBULKSTAT_SINGLE_32) {
2828     int res;
2829    
2830     - error = xfs_bulkstat_one_compat(mp, inlast, bulkreq.ubuffer,
2831     - sizeof(compat_xfs_bstat_t), NULL, &res);
2832     + error = bs_one_func(mp, inlast, bulkreq.ubuffer,
2833     + bs_one_size, NULL, &res);
2834     } else if (cmd == XFS_IOC_FSBULKSTAT_32) {
2835     error = xfs_bulkstat(mp, &inlast, &count,
2836     - xfs_bulkstat_one_compat, sizeof(compat_xfs_bstat_t),
2837     + bs_one_func, bs_one_size,
2838     bulkreq.ubuffer, &done);
2839     } else
2840     error = -EINVAL;
2841     @@ -346,6 +372,7 @@ xfs_compat_attrlist_by_handle(
2842     {
2843     int error;
2844     attrlist_cursor_kern_t *cursor;
2845     + compat_xfs_fsop_attrlist_handlereq_t __user *p = arg;
2846     compat_xfs_fsop_attrlist_handlereq_t al_hreq;
2847     struct dentry *dentry;
2848     char *kbuf;
2849     @@ -380,6 +407,11 @@ xfs_compat_attrlist_by_handle(
2850     if (error)
2851     goto out_kfree;
2852    
2853     + if (copy_to_user(&p->pos, cursor, sizeof(attrlist_cursor_kern_t))) {
2854     + error = -EFAULT;
2855     + goto out_kfree;
2856     + }
2857     +
2858     if (copy_to_user(compat_ptr(al_hreq.buffer), kbuf, al_hreq.buflen))
2859     error = -EFAULT;
2860    
2861     diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c
2862     index 802bcc326d9f..0d93d3c10fcc 100644
2863     --- a/fs/xfs/xfs_rtalloc.c
2864     +++ b/fs/xfs/xfs_rtalloc.c
2865     @@ -1222,13 +1222,11 @@ xfs_rtmount_inodes(
2866     xfs_sb_t *sbp;
2867    
2868     sbp = &mp->m_sb;
2869     - if (sbp->sb_rbmino == NULLFSINO)
2870     - return 0;
2871     error = xfs_iget(mp, NULL, sbp->sb_rbmino, 0, 0, &mp->m_rbmip);
2872     if (error)
2873     return error;
2874     ASSERT(mp->m_rbmip != NULL);
2875     - ASSERT(sbp->sb_rsumino != NULLFSINO);
2876     +
2877     error = xfs_iget(mp, NULL, sbp->sb_rsumino, 0, 0, &mp->m_rsumip);
2878     if (error) {
2879     IRELE(mp->m_rbmip);
2880     diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h
2881     index 206fe3bccccc..575f2dee8cf7 100644
2882     --- a/include/linux/genalloc.h
2883     +++ b/include/linux/genalloc.h
2884     @@ -50,7 +50,8 @@ typedef unsigned long (*genpool_algo_t)(unsigned long *map,
2885     unsigned long size,
2886     unsigned long start,
2887     unsigned int nr,
2888     - void *data, struct gen_pool *pool);
2889     + void *data, struct gen_pool *pool,
2890     + unsigned long start_addr);
2891    
2892     /*
2893     * General purpose special memory pool descriptor.
2894     @@ -130,24 +131,24 @@ extern void gen_pool_set_algo(struct gen_pool *pool, genpool_algo_t algo,
2895    
2896     extern unsigned long gen_pool_first_fit(unsigned long *map, unsigned long size,
2897     unsigned long start, unsigned int nr, void *data,
2898     - struct gen_pool *pool);
2899     + struct gen_pool *pool, unsigned long start_addr);
2900    
2901     extern unsigned long gen_pool_fixed_alloc(unsigned long *map,
2902     unsigned long size, unsigned long start, unsigned int nr,
2903     - void *data, struct gen_pool *pool);
2904     + void *data, struct gen_pool *pool, unsigned long start_addr);
2905    
2906     extern unsigned long gen_pool_first_fit_align(unsigned long *map,
2907     unsigned long size, unsigned long start, unsigned int nr,
2908     - void *data, struct gen_pool *pool);
2909     + void *data, struct gen_pool *pool, unsigned long start_addr);
2910    
2911    
2912     extern unsigned long gen_pool_first_fit_order_align(unsigned long *map,
2913     unsigned long size, unsigned long start, unsigned int nr,
2914     - void *data, struct gen_pool *pool);
2915     + void *data, struct gen_pool *pool, unsigned long start_addr);
2916    
2917     extern unsigned long gen_pool_best_fit(unsigned long *map, unsigned long size,
2918     unsigned long start, unsigned int nr, void *data,
2919     - struct gen_pool *pool);
2920     + struct gen_pool *pool, unsigned long start_addr);
2921    
2922    
2923     extern struct gen_pool *devm_gen_pool_create(struct device *dev,
2924     diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h
2925     index fb0fde686cb1..4a9838feb086 100644
2926     --- a/include/linux/gpio/consumer.h
2927     +++ b/include/linux/gpio/consumer.h
2928     @@ -398,7 +398,7 @@ static inline int gpiod_to_irq(const struct gpio_desc *desc)
2929    
2930     static inline struct gpio_desc *gpio_to_desc(unsigned gpio)
2931     {
2932     - return ERR_PTR(-EINVAL);
2933     + return NULL;
2934     }
2935    
2936     static inline int desc_to_gpio(const struct gpio_desc *desc)
2937     diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
2938     index 2ecf0f32444e..29ed5977ac04 100644
2939     --- a/include/linux/netdevice.h
2940     +++ b/include/linux/netdevice.h
2941     @@ -3565,7 +3565,7 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
2942     if (debug_value == 0) /* no output */
2943     return 0;
2944     /* set low N bits */
2945     - return (1 << debug_value) - 1;
2946     + return (1U << debug_value) - 1;
2947     }
2948    
2949     static inline void __netif_tx_lock(struct netdev_queue *txq, int cpu)
2950     diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
2951     index db1fe6772ad5..b5542aff192c 100644
2952     --- a/include/linux/reset-controller.h
2953     +++ b/include/linux/reset-controller.h
2954     @@ -6,7 +6,7 @@
2955     struct reset_controller_dev;
2956    
2957     /**
2958     - * struct reset_control_ops
2959     + * struct reset_control_ops - reset controller driver callbacks
2960     *
2961     * @reset: for self-deasserting resets, does all necessary
2962     * things to reset the device
2963     diff --git a/include/linux/swap.h b/include/linux/swap.h
2964     index 2228907d08ff..d13617c7bcc4 100644
2965     --- a/include/linux/swap.h
2966     +++ b/include/linux/swap.h
2967     @@ -335,14 +335,8 @@ extern unsigned long vm_total_pages;
2968     extern int node_reclaim_mode;
2969     extern int sysctl_min_unmapped_ratio;
2970     extern int sysctl_min_slab_ratio;
2971     -extern int node_reclaim(struct pglist_data *, gfp_t, unsigned int);
2972     #else
2973     #define node_reclaim_mode 0
2974     -static inline int node_reclaim(struct pglist_data *pgdat, gfp_t mask,
2975     - unsigned int order)
2976     -{
2977     - return 0;
2978     -}
2979     #endif
2980    
2981     extern int page_evictable(struct page *page);
2982     diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
2983     index 11c3bf262a85..b46133a41f55 100644
2984     --- a/include/net/sctp/structs.h
2985     +++ b/include/net/sctp/structs.h
2986     @@ -1202,6 +1202,9 @@ struct sctp_ep_common {
2987     /* What socket does this endpoint belong to? */
2988     struct sock *sk;
2989    
2990     + /* Cache netns and it won't change once set */
2991     + struct net *net;
2992     +
2993     /* This is where we receive inbound chunks. */
2994     struct sctp_inq inqueue;
2995    
2996     diff --git a/include/net/sock.h b/include/net/sock.h
2997     index d8d14ae8892a..aed436567d70 100644
2998     --- a/include/net/sock.h
2999     +++ b/include/net/sock.h
3000     @@ -1201,7 +1201,7 @@ static inline void sk_sockets_allocated_inc(struct sock *sk)
3001     percpu_counter_inc(sk->sk_prot->sockets_allocated);
3002     }
3003    
3004     -static inline int
3005     +static inline u64
3006     sk_sockets_allocated_read_positive(struct sock *sk)
3007     {
3008     return percpu_counter_read_positive(sk->sk_prot->sockets_allocated);
3009     diff --git a/lib/genalloc.c b/lib/genalloc.c
3010     index ca06adc4f445..7e85d1e37a6e 100644
3011     --- a/lib/genalloc.c
3012     +++ b/lib/genalloc.c
3013     @@ -35,6 +35,7 @@
3014     #include <linux/interrupt.h>
3015     #include <linux/genalloc.h>
3016     #include <linux/of_device.h>
3017     +#include <linux/vmalloc.h>
3018    
3019     static inline size_t chunk_size(const struct gen_pool_chunk *chunk)
3020     {
3021     @@ -187,7 +188,7 @@ int gen_pool_add_virt(struct gen_pool *pool, unsigned long virt, phys_addr_t phy
3022     int nbytes = sizeof(struct gen_pool_chunk) +
3023     BITS_TO_LONGS(nbits) * sizeof(long);
3024    
3025     - chunk = kzalloc_node(nbytes, GFP_KERNEL, nid);
3026     + chunk = vzalloc_node(nbytes, nid);
3027     if (unlikely(chunk == NULL))
3028     return -ENOMEM;
3029    
3030     @@ -251,7 +252,7 @@ void gen_pool_destroy(struct gen_pool *pool)
3031     bit = find_next_bit(chunk->bits, end_bit, 0);
3032     BUG_ON(bit < end_bit);
3033    
3034     - kfree(chunk);
3035     + vfree(chunk);
3036     }
3037     kfree_const(pool->name);
3038     kfree(pool);
3039     @@ -311,7 +312,7 @@ unsigned long gen_pool_alloc_algo(struct gen_pool *pool, size_t size,
3040     end_bit = chunk_size(chunk) >> order;
3041     retry:
3042     start_bit = algo(chunk->bits, end_bit, start_bit,
3043     - nbits, data, pool);
3044     + nbits, data, pool, chunk->start_addr);
3045     if (start_bit >= end_bit)
3046     continue;
3047     remain = bitmap_set_ll(chunk->bits, start_bit, nbits);
3048     @@ -525,7 +526,7 @@ EXPORT_SYMBOL(gen_pool_set_algo);
3049     */
3050     unsigned long gen_pool_first_fit(unsigned long *map, unsigned long size,
3051     unsigned long start, unsigned int nr, void *data,
3052     - struct gen_pool *pool)
3053     + struct gen_pool *pool, unsigned long start_addr)
3054     {
3055     return bitmap_find_next_zero_area(map, size, start, nr, 0);
3056     }
3057     @@ -543,16 +544,19 @@ EXPORT_SYMBOL(gen_pool_first_fit);
3058     */
3059     unsigned long gen_pool_first_fit_align(unsigned long *map, unsigned long size,
3060     unsigned long start, unsigned int nr, void *data,
3061     - struct gen_pool *pool)
3062     + struct gen_pool *pool, unsigned long start_addr)
3063     {
3064     struct genpool_data_align *alignment;
3065     - unsigned long align_mask;
3066     + unsigned long align_mask, align_off;
3067     int order;
3068    
3069     alignment = data;
3070     order = pool->min_alloc_order;
3071     align_mask = ((alignment->align + (1UL << order) - 1) >> order) - 1;
3072     - return bitmap_find_next_zero_area(map, size, start, nr, align_mask);
3073     + align_off = (start_addr & (alignment->align - 1)) >> order;
3074     +
3075     + return bitmap_find_next_zero_area_off(map, size, start, nr,
3076     + align_mask, align_off);
3077     }
3078     EXPORT_SYMBOL(gen_pool_first_fit_align);
3079    
3080     @@ -567,7 +571,7 @@ EXPORT_SYMBOL(gen_pool_first_fit_align);
3081     */
3082     unsigned long gen_pool_fixed_alloc(unsigned long *map, unsigned long size,
3083     unsigned long start, unsigned int nr, void *data,
3084     - struct gen_pool *pool)
3085     + struct gen_pool *pool, unsigned long start_addr)
3086     {
3087     struct genpool_data_fixed *fixed_data;
3088     int order;
3089     @@ -601,7 +605,8 @@ EXPORT_SYMBOL(gen_pool_fixed_alloc);
3090     */
3091     unsigned long gen_pool_first_fit_order_align(unsigned long *map,
3092     unsigned long size, unsigned long start,
3093     - unsigned int nr, void *data, struct gen_pool *pool)
3094     + unsigned int nr, void *data, struct gen_pool *pool,
3095     + unsigned long start_addr)
3096     {
3097     unsigned long align_mask = roundup_pow_of_two(nr) - 1;
3098    
3099     @@ -624,7 +629,7 @@ EXPORT_SYMBOL(gen_pool_first_fit_order_align);
3100     */
3101     unsigned long gen_pool_best_fit(unsigned long *map, unsigned long size,
3102     unsigned long start, unsigned int nr, void *data,
3103     - struct gen_pool *pool)
3104     + struct gen_pool *pool, unsigned long start_addr)
3105     {
3106     unsigned long start_bit = size;
3107     unsigned long len = size + 1;
3108     diff --git a/mm/internal.h b/mm/internal.h
3109     index 3e2d01694747..f6df7cb8cbc0 100644
3110     --- a/mm/internal.h
3111     +++ b/mm/internal.h
3112     @@ -442,6 +442,16 @@ static inline void mminit_validate_memmodel_limits(unsigned long *start_pfn,
3113     #define NODE_RECLAIM_SOME 0
3114     #define NODE_RECLAIM_SUCCESS 1
3115    
3116     +#ifdef CONFIG_NUMA
3117     +extern int node_reclaim(struct pglist_data *, gfp_t, unsigned int);
3118     +#else
3119     +static inline int node_reclaim(struct pglist_data *pgdat, gfp_t mask,
3120     + unsigned int order)
3121     +{
3122     + return NODE_RECLAIM_NOSCAN;
3123     +}
3124     +#endif
3125     +
3126     extern int hwpoison_filter(struct page *p);
3127    
3128     extern u32 hwpoison_filter_dev_major;
3129     diff --git a/net/core/neighbour.c b/net/core/neighbour.c
3130     index 6e964fec45cf..44a29be7bfff 100644
3131     --- a/net/core/neighbour.c
3132     +++ b/net/core/neighbour.c
3133     @@ -18,6 +18,7 @@
3134     #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
3135    
3136     #include <linux/slab.h>
3137     +#include <linux/kmemleak.h>
3138     #include <linux/types.h>
3139     #include <linux/kernel.h>
3140     #include <linux/module.h>
3141     @@ -325,12 +326,14 @@ static struct neigh_hash_table *neigh_hash_alloc(unsigned int shift)
3142     ret = kmalloc(sizeof(*ret), GFP_ATOMIC);
3143     if (!ret)
3144     return NULL;
3145     - if (size <= PAGE_SIZE)
3146     + if (size <= PAGE_SIZE) {
3147     buckets = kzalloc(size, GFP_ATOMIC);
3148     - else
3149     + } else {
3150     buckets = (struct neighbour __rcu **)
3151     __get_free_pages(GFP_ATOMIC | __GFP_ZERO,
3152     get_order(size));
3153     + kmemleak_alloc(buckets, size, 1, GFP_ATOMIC);
3154     + }
3155     if (!buckets) {
3156     kfree(ret);
3157     return NULL;
3158     @@ -350,10 +353,12 @@ static void neigh_hash_free_rcu(struct rcu_head *head)
3159     size_t size = (1 << nht->hash_shift) * sizeof(struct neighbour *);
3160     struct neighbour __rcu **buckets = nht->hash_buckets;
3161    
3162     - if (size <= PAGE_SIZE)
3163     + if (size <= PAGE_SIZE) {
3164     kfree(buckets);
3165     - else
3166     + } else {
3167     + kmemleak_free(buckets);
3168     free_pages((unsigned long)buckets, get_order(size));
3169     + }
3170     kfree(nht);
3171     }
3172    
3173     diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
3174     index 4509dec7bd1c..7630fa80db92 100644
3175     --- a/net/core/net_namespace.c
3176     +++ b/net/core/net_namespace.c
3177     @@ -802,7 +802,8 @@ static int __init net_ns_init(void)
3178    
3179     mutex_unlock(&net_mutex);
3180    
3181     - register_pernet_subsys(&net_ns_ops);
3182     + if (register_pernet_subsys(&net_ns_ops))
3183     + panic("Could not register network namespace subsystems");
3184    
3185     rtnl_register(PF_UNSPEC, RTM_NEWNSID, rtnl_net_newid, NULL, NULL);
3186     rtnl_register(PF_UNSPEC, RTM_GETNSID, rtnl_net_getid, rtnl_net_dumpid,
3187     diff --git a/net/core/sock.c b/net/core/sock.c
3188     index d22493351407..41794a698da6 100644
3189     --- a/net/core/sock.c
3190     +++ b/net/core/sock.c
3191     @@ -2156,7 +2156,7 @@ int __sk_mem_schedule(struct sock *sk, int size, int kind)
3192     }
3193    
3194     if (sk_has_memory_pressure(sk)) {
3195     - int alloc;
3196     + u64 alloc;
3197    
3198     if (!sk_under_memory_pressure(sk))
3199     return 1;
3200     diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c
3201     index b2c26b081134..80554e7e9a0f 100644
3202     --- a/net/decnet/dn_dev.c
3203     +++ b/net/decnet/dn_dev.c
3204     @@ -55,7 +55,7 @@
3205     #include <net/dn_neigh.h>
3206     #include <net/dn_fib.h>
3207    
3208     -#define DN_IFREQ_SIZE (sizeof(struct ifreq) - sizeof(struct sockaddr) + sizeof(struct sockaddr_dn))
3209     +#define DN_IFREQ_SIZE (offsetof(struct ifreq, ifr_ifru) + sizeof(struct sockaddr_dn))
3210    
3211     static char dn_rt_all_end_mcast[ETH_ALEN] = {0xAB,0x00,0x00,0x04,0x00,0x00};
3212     static char dn_rt_all_rt_mcast[ETH_ALEN] = {0xAB,0x00,0x00,0x03,0x00,0x00};
3213     diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c
3214     index e6ee6acac80c..a4db2d79b913 100644
3215     --- a/net/ipv4/ip_tunnel.c
3216     +++ b/net/ipv4/ip_tunnel.c
3217     @@ -653,13 +653,19 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,
3218     dst = tnl_params->daddr;
3219     if (dst == 0) {
3220     /* NBMA tunnel */
3221     + struct ip_tunnel_info *tun_info;
3222    
3223     if (!skb_dst(skb)) {
3224     dev->stats.tx_fifo_errors++;
3225     goto tx_error;
3226     }
3227    
3228     - if (skb->protocol == htons(ETH_P_IP)) {
3229     + tun_info = skb_tunnel_info(skb);
3230     + if (tun_info && (tun_info->mode & IP_TUNNEL_INFO_TX) &&
3231     + ip_tunnel_info_af(tun_info) == AF_INET &&
3232     + tun_info->key.u.ipv4.dst)
3233     + dst = tun_info->key.u.ipv4.dst;
3234     + else if (skb->protocol == htons(ETH_P_IP)) {
3235     rt = skb_rtable(skb);
3236     dst = rt_nexthop(rt, inner_iph->daddr);
3237     }
3238     diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
3239     index 892c392ff8fc..8e8a185dbb9b 100644
3240     --- a/net/mac80211/sta_info.c
3241     +++ b/net/mac80211/sta_info.c
3242     @@ -2305,7 +2305,8 @@ unsigned long ieee80211_sta_last_active(struct sta_info *sta)
3243     {
3244     struct ieee80211_sta_rx_stats *stats = sta_get_last_rx_stats(sta);
3245    
3246     - if (time_after(stats->last_rx, sta->status_stats.last_ack))
3247     + if (!sta->status_stats.last_ack ||
3248     + time_after(stats->last_rx, sta->status_stats.last_ack))
3249     return stats->last_rx;
3250     return sta->status_stats.last_ack;
3251     }
3252     diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
3253     index 0ddcc63a0247..c28f0e2a7c3c 100644
3254     --- a/net/openvswitch/datapath.c
3255     +++ b/net/openvswitch/datapath.c
3256     @@ -738,9 +738,13 @@ static size_t ovs_flow_cmd_msg_size(const struct sw_flow_actions *acts,
3257     {
3258     size_t len = NLMSG_ALIGN(sizeof(struct ovs_header));
3259    
3260     - /* OVS_FLOW_ATTR_UFID */
3261     + /* OVS_FLOW_ATTR_UFID, or unmasked flow key as fallback
3262     + * see ovs_nla_put_identifier()
3263     + */
3264     if (sfid && ovs_identifier_is_ufid(sfid))
3265     len += nla_total_size(sfid->ufid_len);
3266     + else
3267     + len += nla_total_size(ovs_key_attr_size());
3268    
3269     /* OVS_FLOW_ATTR_KEY */
3270     if (!sfid || should_fill_key(sfid, ufid_flags))
3271     @@ -916,7 +920,10 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
3272     retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
3273     info->snd_portid, info->snd_seq, 0,
3274     cmd, ufid_flags);
3275     - BUG_ON(retval < 0);
3276     + if (WARN_ON_ONCE(retval < 0)) {
3277     + kfree_skb(skb);
3278     + skb = ERR_PTR(retval);
3279     + }
3280     return skb;
3281     }
3282    
3283     @@ -1343,7 +1350,10 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
3284     OVS_FLOW_CMD_DEL,
3285     ufid_flags);
3286     rcu_read_unlock();
3287     - BUG_ON(err < 0);
3288     + if (WARN_ON_ONCE(err < 0)) {
3289     + kfree_skb(reply);
3290     + goto out_free;
3291     + }
3292    
3293     ovs_notify(&dp_flow_genl_family, reply, info);
3294     } else {
3295     @@ -1351,6 +1361,7 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
3296     }
3297     }
3298    
3299     +out_free:
3300     ovs_flow_free(flow, true);
3301     return 0;
3302     unlock:
3303     diff --git a/net/sched/sch_mq.c b/net/sched/sch_mq.c
3304     index 20b7f1646f69..c3c4c09ab289 100644
3305     --- a/net/sched/sch_mq.c
3306     +++ b/net/sched/sch_mq.c
3307     @@ -195,7 +195,8 @@ static int mq_dump_class_stats(struct Qdisc *sch, unsigned long cl,
3308     struct netdev_queue *dev_queue = mq_queue_get(sch, cl);
3309    
3310     sch = dev_queue->qdisc_sleeping;
3311     - if (gnet_stats_copy_basic(&sch->running, d, NULL, &sch->bstats) < 0 ||
3312     + if (gnet_stats_copy_basic(&sch->running, d, sch->cpu_bstats,
3313     + &sch->bstats) < 0 ||
3314     gnet_stats_copy_queue(d, NULL, &sch->qstats, sch->q.qlen) < 0)
3315     return -1;
3316     return 0;
3317     diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c
3318     index 922683418e53..1451fa180e6c 100644
3319     --- a/net/sched/sch_mqprio.c
3320     +++ b/net/sched/sch_mqprio.c
3321     @@ -362,8 +362,8 @@ static int mqprio_dump_class_stats(struct Qdisc *sch, unsigned long cl,
3322     struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl);
3323    
3324     sch = dev_queue->qdisc_sleeping;
3325     - if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch),
3326     - d, NULL, &sch->bstats) < 0 ||
3327     + if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch), d,
3328     + sch->cpu_bstats, &sch->bstats) < 0 ||
3329     gnet_stats_copy_queue(d, NULL,
3330     &sch->qstats, sch->q.qlen) < 0)
3331     return -1;
3332     diff --git a/net/sched/sch_multiq.c b/net/sched/sch_multiq.c
3333     index 66b6e807b4ec..4a8680b1f861 100644
3334     --- a/net/sched/sch_multiq.c
3335     +++ b/net/sched/sch_multiq.c
3336     @@ -332,7 +332,7 @@ static int multiq_dump_class_stats(struct Qdisc *sch, unsigned long cl,
3337    
3338     cl_q = q->queues[cl - 1];
3339     if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch),
3340     - d, NULL, &cl_q->bstats) < 0 ||
3341     + d, cl_q->cpu_bstats, &cl_q->bstats) < 0 ||
3342     gnet_stats_copy_queue(d, NULL, &cl_q->qstats, cl_q->q.qlen) < 0)
3343     return -1;
3344    
3345     diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c
3346     index 8f575899adfa..2cca1ead96b5 100644
3347     --- a/net/sched/sch_prio.c
3348     +++ b/net/sched/sch_prio.c
3349     @@ -286,7 +286,7 @@ static int prio_dump_class_stats(struct Qdisc *sch, unsigned long cl,
3350    
3351     cl_q = q->queues[cl - 1];
3352     if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch),
3353     - d, NULL, &cl_q->bstats) < 0 ||
3354     + d, cl_q->cpu_bstats, &cl_q->bstats) < 0 ||
3355     gnet_stats_copy_queue(d, NULL, &cl_q->qstats, cl_q->q.qlen) < 0)
3356     return -1;
3357    
3358     diff --git a/net/sctp/associola.c b/net/sctp/associola.c
3359     index 7e127cde1ccc..16e120b84118 100644
3360     --- a/net/sctp/associola.c
3361     +++ b/net/sctp/associola.c
3362     @@ -81,6 +81,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
3363     /* Discarding const is appropriate here. */
3364     asoc->ep = (struct sctp_endpoint *)ep;
3365     asoc->base.sk = (struct sock *)sk;
3366     + asoc->base.net = sock_net(sk);
3367    
3368     sctp_endpoint_hold(asoc->ep);
3369     sock_hold(asoc->base.sk);
3370     diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c
3371     index beae42bfa68f..8164d0275137 100644
3372     --- a/net/sctp/endpointola.c
3373     +++ b/net/sctp/endpointola.c
3374     @@ -163,6 +163,7 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
3375    
3376     /* Remember who we are attached to. */
3377     ep->base.sk = sk;
3378     + ep->base.net = sock_net(sk);
3379     sock_hold(ep->base.sk);
3380    
3381     return ep;
3382     diff --git a/net/sctp/input.c b/net/sctp/input.c
3383     index 68b84d3a7cac..969fb1623e4e 100644
3384     --- a/net/sctp/input.c
3385     +++ b/net/sctp/input.c
3386     @@ -812,7 +812,7 @@ static inline int sctp_hash_cmp(struct rhashtable_compare_arg *arg,
3387     return err;
3388    
3389     asoc = t->asoc;
3390     - if (!net_eq(sock_net(asoc->base.sk), x->net))
3391     + if (!net_eq(asoc->base.net, x->net))
3392     goto out;
3393     if (x->ep) {
3394     if (x->ep != asoc->ep)
3395     @@ -835,7 +835,7 @@ static inline u32 sctp_hash_obj(const void *data, u32 len, u32 seed)
3396     {
3397     const struct sctp_transport *t = data;
3398     const union sctp_addr *paddr = &t->ipaddr;
3399     - const struct net *net = sock_net(t->asoc->base.sk);
3400     + const struct net *net = t->asoc->base.net;
3401     u16 lport = htons(t->asoc->base.bind_addr.port);
3402     u32 addr;
3403    
3404     diff --git a/net/sctp/transport.c b/net/sctp/transport.c
3405     index 03d71cd97ec0..5c78942550e9 100644
3406     --- a/net/sctp/transport.c
3407     +++ b/net/sctp/transport.c
3408     @@ -205,7 +205,8 @@ void sctp_transport_reset_hb_timer(struct sctp_transport *transport)
3409    
3410     /* When a data chunk is sent, reset the heartbeat interval. */
3411     expires = jiffies + sctp_transport_timeout(transport);
3412     - if (time_before(transport->hb_timer.expires, expires) &&
3413     + if ((time_before(transport->hb_timer.expires, expires) ||
3414     + !timer_pending(&transport->hb_timer)) &&
3415     !mod_timer(&transport->hb_timer,
3416     expires + prandom_u32_max(transport->rto)))
3417     sctp_transport_hold(transport);
3418     diff --git a/net/tipc/link.c b/net/tipc/link.c
3419     index 4e8647aef01c..c7406c1fdc14 100644
3420     --- a/net/tipc/link.c
3421     +++ b/net/tipc/link.c
3422     @@ -1063,7 +1063,7 @@ static bool tipc_data_input(struct tipc_link *l, struct sk_buff *skb,
3423     default:
3424     pr_warn("Dropping received illegal msg type\n");
3425     kfree_skb(skb);
3426     - return false;
3427     + return true;
3428     };
3429     }
3430    
3431     diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c
3432     index 63a913b23873..cdc49e680be4 100644
3433     --- a/net/tipc/netlink_compat.c
3434     +++ b/net/tipc/netlink_compat.c
3435     @@ -539,7 +539,7 @@ static int tipc_nl_compat_link_stat_dump(struct tipc_nl_compat_msg *msg,
3436     if (len <= 0)
3437     return -EINVAL;
3438    
3439     - len = min_t(int, len, TIPC_MAX_BEARER_NAME);
3440     + len = min_t(int, len, TIPC_MAX_LINK_NAME);
3441     if (!string_is_valid(name, len))
3442     return -EINVAL;
3443    
3444     @@ -821,7 +821,7 @@ static int tipc_nl_compat_link_reset_stats(struct tipc_nl_compat_cmd_doit *cmd,
3445     if (len <= 0)
3446     return -EINVAL;
3447    
3448     - len = min_t(int, len, TIPC_MAX_BEARER_NAME);
3449     + len = min_t(int, len, TIPC_MAX_LINK_NAME);
3450     if (!string_is_valid(name, len))
3451     return -EINVAL;
3452    
3453     @@ -974,6 +974,10 @@ static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock)
3454    
3455     hdr = genlmsg_put(args, 0, 0, &tipc_genl_family, NLM_F_MULTI,
3456     TIPC_NL_PUBL_GET);
3457     + if (!hdr) {
3458     + kfree_skb(args);
3459     + return -EMSGSIZE;
3460     + }
3461    
3462     nest = nla_nest_start(args, TIPC_NLA_SOCK);
3463     if (!nest) {
3464     diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
3465     index 7566395e526d..18f377306884 100644
3466     --- a/net/vmw_vsock/af_vsock.c
3467     +++ b/net/vmw_vsock/af_vsock.c
3468     @@ -97,6 +97,7 @@
3469     #include <linux/mutex.h>
3470     #include <linux/net.h>
3471     #include <linux/poll.h>
3472     +#include <linux/random.h>
3473     #include <linux/skbuff.h>
3474     #include <linux/smp.h>
3475     #include <linux/socket.h>
3476     @@ -501,9 +502,13 @@ out:
3477     static int __vsock_bind_stream(struct vsock_sock *vsk,
3478     struct sockaddr_vm *addr)
3479     {
3480     - static u32 port = LAST_RESERVED_PORT + 1;
3481     + static u32 port = 0;
3482     struct sockaddr_vm new_addr;
3483    
3484     + if (!port)
3485     + port = LAST_RESERVED_PORT + 1 +
3486     + prandom_u32_max(U32_MAX - LAST_RESERVED_PORT);
3487     +
3488     vsock_addr_init(&new_addr, addr->svm_cid, addr->svm_port);
3489    
3490     if (addr->svm_port == VMADDR_PORT_ANY) {
3491     diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
3492     index 004b0ac7fa72..4644f1a83b57 100644
3493     --- a/scripts/gdb/linux/symbols.py
3494     +++ b/scripts/gdb/linux/symbols.py
3495     @@ -99,7 +99,8 @@ lx-symbols command."""
3496     attrs[n]['name'].string(): attrs[n]['address']
3497     for n in range(int(sect_attrs['nsections']))}
3498     args = []
3499     - for section_name in [".data", ".data..read_mostly", ".rodata", ".bss"]:
3500     + for section_name in [".data", ".data..read_mostly", ".rodata", ".bss",
3501     + ".text", ".text.hot", ".text.unlikely"]:
3502     address = section_name_to_address.get(section_name)
3503     if address:
3504     args.append(" -s {name} {addr}".format(
3505     diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c
3506     index 2e2d18468491..7ae8e24dc1e6 100644
3507     --- a/sound/core/compress_offload.c
3508     +++ b/sound/core/compress_offload.c
3509     @@ -529,7 +529,7 @@ static int snd_compress_check_input(struct snd_compr_params *params)
3510     {
3511     /* first let's check the buffer parameter's */
3512     if (params->buffer.fragment_size == 0 ||
3513     - params->buffer.fragments > INT_MAX / params->buffer.fragment_size ||
3514     + params->buffer.fragments > U32_MAX / params->buffer.fragment_size ||
3515     params->buffer.fragments == 0)
3516     return -EINVAL;
3517    
3518     diff --git a/sound/soc/kirkwood/kirkwood-i2s.c b/sound/soc/kirkwood/kirkwood-i2s.c
3519     index 3a36d60e1785..0a5d9fb6fc84 100644
3520     --- a/sound/soc/kirkwood/kirkwood-i2s.c
3521     +++ b/sound/soc/kirkwood/kirkwood-i2s.c
3522     @@ -570,10 +570,6 @@ static int kirkwood_i2s_dev_probe(struct platform_device *pdev)
3523     return PTR_ERR(priv->clk);
3524     }
3525    
3526     - err = clk_prepare_enable(priv->clk);
3527     - if (err < 0)
3528     - return err;
3529     -
3530     priv->extclk = devm_clk_get(&pdev->dev, "extclk");
3531     if (IS_ERR(priv->extclk)) {
3532     if (PTR_ERR(priv->extclk) == -EPROBE_DEFER)
3533     @@ -589,6 +585,10 @@ static int kirkwood_i2s_dev_probe(struct platform_device *pdev)
3534     }
3535     }
3536    
3537     + err = clk_prepare_enable(priv->clk);
3538     + if (err < 0)
3539     + return err;
3540     +
3541     /* Some sensible defaults - this reflects the powerup values */
3542     priv->ctl_play = KIRKWOOD_PLAYCTL_SIZE_24;
3543     priv->ctl_rec = KIRKWOOD_RECCTL_SIZE_24;