Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3580 - (show annotations) (download)
Thu Aug 13 10:21:21 2020 UTC (3 years, 8 months ago) by niro
File size: 121616 byte(s)
linux-206
1 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;