Magellan Linux

Contents of /trunk/kernel-alx/patches-4.9/0216-4.9.117-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3193 - (show annotations) (download)
Wed Aug 8 14:17:42 2018 UTC (5 years, 8 months ago) by niro
File size: 121182 byte(s)
-linux-4.9.117
1 diff --git a/Documentation/devicetree/bindings/net/dsa/qca8k.txt b/Documentation/devicetree/bindings/net/dsa/qca8k.txt
2 index 9c67ee4890d7..bbcb255c3150 100644
3 --- a/Documentation/devicetree/bindings/net/dsa/qca8k.txt
4 +++ b/Documentation/devicetree/bindings/net/dsa/qca8k.txt
5 @@ -2,7 +2,10 @@
6
7 Required properties:
8
9 -- compatible: should be "qca,qca8337"
10 +- compatible: should be one of:
11 + "qca,qca8334"
12 + "qca,qca8337"
13 +
14 - #size-cells: must be 0
15 - #address-cells: must be 1
16
17 @@ -14,6 +17,20 @@ port and PHY id, each subnode describing a port needs to have a valid phandle
18 referencing the internal PHY connected to it. The CPU port of this switch is
19 always port 0.
20
21 +A CPU port node has the following optional node:
22 +
23 +- fixed-link : Fixed-link subnode describing a link to a non-MDIO
24 + managed entity. See
25 + Documentation/devicetree/bindings/net/fixed-link.txt
26 + for details.
27 +
28 +For QCA8K the 'fixed-link' sub-node supports only the following properties:
29 +
30 +- 'speed' (integer, mandatory), to indicate the link speed. Accepted
31 + values are 10, 100 and 1000
32 +- 'full-duplex' (boolean, optional), to indicate that full duplex is
33 + used. When absent, half duplex is assumed.
34 +
35 Example:
36
37
38 @@ -53,6 +70,10 @@ Example:
39 label = "cpu";
40 ethernet = <&gmac1>;
41 phy-mode = "rgmii";
42 + fixed-link {
43 + speed = 1000;
44 + full-duplex;
45 + };
46 };
47
48 port@1 {
49 diff --git a/Documentation/devicetree/bindings/net/meson-dwmac.txt b/Documentation/devicetree/bindings/net/meson-dwmac.txt
50 index 89e62ddc69ca..da37da0fdd3f 100644
51 --- a/Documentation/devicetree/bindings/net/meson-dwmac.txt
52 +++ b/Documentation/devicetree/bindings/net/meson-dwmac.txt
53 @@ -10,6 +10,7 @@ Required properties on all platforms:
54 - "amlogic,meson6-dwmac"
55 - "amlogic,meson8b-dwmac"
56 - "amlogic,meson-gxbb-dwmac"
57 + - "amlogic,meson-axg-dwmac"
58 Additionally "snps,dwmac" and any applicable more
59 detailed version number described in net/stmmac.txt
60 should be used.
61 diff --git a/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt
62 index fe7fe0b03cfb..1b9881786ce9 100644
63 --- a/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt
64 +++ b/Documentation/devicetree/bindings/pinctrl/meson,pinctrl.txt
65 @@ -3,8 +3,10 @@
66 Required properties for the root node:
67 - compatible: one of "amlogic,meson8-cbus-pinctrl"
68 "amlogic,meson8b-cbus-pinctrl"
69 + "amlogic,meson8m2-cbus-pinctrl"
70 "amlogic,meson8-aobus-pinctrl"
71 "amlogic,meson8b-aobus-pinctrl"
72 + "amlogic,meson8m2-aobus-pinctrl"
73 "amlogic,meson-gxbb-periphs-pinctrl"
74 "amlogic,meson-gxbb-aobus-pinctrl"
75 - reg: address and size of registers controlling irq functionality
76 diff --git a/Makefile b/Makefile
77 index a6b011778960..773c26c95d98 100644
78 --- a/Makefile
79 +++ b/Makefile
80 @@ -1,6 +1,6 @@
81 VERSION = 4
82 PATCHLEVEL = 9
83 -SUBLEVEL = 116
84 +SUBLEVEL = 117
85 EXTRAVERSION =
86 NAME = Roaring Lionus
87
88 diff --git a/arch/arm/boot/dts/emev2.dtsi b/arch/arm/boot/dts/emev2.dtsi
89 index cd119400f440..fd6f9ce9206a 100644
90 --- a/arch/arm/boot/dts/emev2.dtsi
91 +++ b/arch/arm/boot/dts/emev2.dtsi
92 @@ -30,13 +30,13 @@
93 #address-cells = <1>;
94 #size-cells = <0>;
95
96 - cpu@0 {
97 + cpu0: cpu@0 {
98 device_type = "cpu";
99 compatible = "arm,cortex-a9";
100 reg = <0>;
101 clock-frequency = <533000000>;
102 };
103 - cpu@1 {
104 + cpu1: cpu@1 {
105 device_type = "cpu";
106 compatible = "arm,cortex-a9";
107 reg = <1>;
108 @@ -56,6 +56,7 @@
109 compatible = "arm,cortex-a9-pmu";
110 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
111 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
112 + interrupt-affinity = <&cpu0>, <&cpu1>;
113 };
114
115 clocks@e0110000 {
116 diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi
117 index 032fe2f14b16..6b0cc225149c 100644
118 --- a/arch/arm/boot/dts/sh73a0.dtsi
119 +++ b/arch/arm/boot/dts/sh73a0.dtsi
120 @@ -22,7 +22,7 @@
121 #address-cells = <1>;
122 #size-cells = <0>;
123
124 - cpu@0 {
125 + cpu0: cpu@0 {
126 device_type = "cpu";
127 compatible = "arm,cortex-a9";
128 reg = <0>;
129 @@ -30,7 +30,7 @@
130 power-domains = <&pd_a2sl>;
131 next-level-cache = <&L2>;
132 };
133 - cpu@1 {
134 + cpu1: cpu@1 {
135 device_type = "cpu";
136 compatible = "arm,cortex-a9";
137 reg = <1>;
138 @@ -89,6 +89,7 @@
139 compatible = "arm,cortex-a9-pmu";
140 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
141 <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
142 + interrupt-affinity = <&cpu0>, <&cpu1>;
143 };
144
145 cmt1: timer@e6138000 {
146 diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
147 index dab2cb0c1f1c..b4c4d823569a 100644
148 --- a/arch/arm64/configs/defconfig
149 +++ b/arch/arm64/configs/defconfig
150 @@ -260,6 +260,8 @@ CONFIG_GPIO_XGENE=y
151 CONFIG_GPIO_PCA953X=y
152 CONFIG_GPIO_PCA953X_IRQ=y
153 CONFIG_GPIO_MAX77620=y
154 +CONFIG_POWER_AVS=y
155 +CONFIG_ROCKCHIP_IODOMAIN=y
156 CONFIG_POWER_RESET_MSM=y
157 CONFIG_BATTERY_BQ27XXX=y
158 CONFIG_POWER_RESET_XGENE=y
159 diff --git a/arch/arm64/include/asm/cmpxchg.h b/arch/arm64/include/asm/cmpxchg.h
160 index ae852add053d..0f2e1ab5e166 100644
161 --- a/arch/arm64/include/asm/cmpxchg.h
162 +++ b/arch/arm64/include/asm/cmpxchg.h
163 @@ -229,7 +229,9 @@ static inline void __cmpwait_case_##name(volatile void *ptr, \
164 unsigned long tmp; \
165 \
166 asm volatile( \
167 - " ldxr" #sz "\t%" #w "[tmp], %[v]\n" \
168 + " sevl\n" \
169 + " wfe\n" \
170 + " ldxr" #sz "\t%" #w "[tmp], %[v]\n" \
171 " eor %" #w "[tmp], %" #w "[tmp], %" #w "[val]\n" \
172 " cbnz %" #w "[tmp], 1f\n" \
173 " wfe\n" \
174 diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
175 index 9b8b477c363d..9d07b421f090 100644
176 --- a/arch/arm64/mm/init.c
177 +++ b/arch/arm64/mm/init.c
178 @@ -468,11 +468,13 @@ void __init mem_init(void)
179 BUILD_BUG_ON(TASK_SIZE_32 > TASK_SIZE_64);
180 #endif
181
182 +#ifdef CONFIG_SPARSEMEM_VMEMMAP
183 /*
184 * Make sure we chose the upper bound of sizeof(struct page)
185 - * correctly.
186 + * correctly when sizing the VMEMMAP array.
187 */
188 BUILD_BUG_ON(sizeof(struct page) > (1 << STRUCT_PAGE_MAX_SHIFT));
189 +#endif
190
191 if (PAGE_SIZE >= 16384 && get_num_physpages() <= 128) {
192 extern int sysctl_overcommit_memory;
193 diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
194 index 91d2068da1b9..0f3fe6a151dc 100644
195 --- a/arch/microblaze/boot/Makefile
196 +++ b/arch/microblaze/boot/Makefile
197 @@ -21,17 +21,19 @@ $(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
198 quiet_cmd_cp = CP $< $@$2
199 cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
200
201 -quiet_cmd_strip = STRIP $@
202 +quiet_cmd_strip = STRIP $< $@$2
203 cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
204 - -K _fdt_start vmlinux -o $@
205 + -K _fdt_start $< -o $@$2
206
207 UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
208 +UIMAGE_IN = $@
209 +UIMAGE_OUT = $@.ub
210
211 $(obj)/simpleImage.%: vmlinux FORCE
212 $(call if_changed,cp,.unstrip)
213 $(call if_changed,objcopy)
214 $(call if_changed,uimage)
215 - $(call if_changed,strip)
216 - @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
217 + $(call if_changed,strip,.strip)
218 + @echo 'Kernel: $(UIMAGE_OUT) is ready' ' (#'`cat .version`')'
219
220 clean-files += simpleImage.*.unstrip linux.bin.ub dts/*.dtb
221 diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
222 index 27843665da9e..620e08d4eb6e 100644
223 --- a/arch/powerpc/kernel/eeh_driver.c
224 +++ b/arch/powerpc/kernel/eeh_driver.c
225 @@ -450,9 +450,11 @@ static void *eeh_add_virt_device(void *data, void *userdata)
226
227 driver = eeh_pcid_get(dev);
228 if (driver) {
229 - eeh_pcid_put(dev);
230 - if (driver->err_handler)
231 + if (driver->err_handler) {
232 + eeh_pcid_put(dev);
233 return NULL;
234 + }
235 + eeh_pcid_put(dev);
236 }
237
238 #ifdef CONFIG_PPC_POWERNV
239 @@ -489,17 +491,19 @@ static void *eeh_rmv_device(void *data, void *userdata)
240 if (eeh_dev_removed(edev))
241 return NULL;
242
243 - driver = eeh_pcid_get(dev);
244 - if (driver) {
245 - eeh_pcid_put(dev);
246 - if (removed &&
247 - eeh_pe_passed(edev->pe))
248 - return NULL;
249 - if (removed &&
250 - driver->err_handler &&
251 - driver->err_handler->error_detected &&
252 - driver->err_handler->slot_reset)
253 + if (removed) {
254 + if (eeh_pe_passed(edev->pe))
255 return NULL;
256 + driver = eeh_pcid_get(dev);
257 + if (driver) {
258 + if (driver->err_handler &&
259 + driver->err_handler->error_detected &&
260 + driver->err_handler->slot_reset) {
261 + eeh_pcid_put(dev);
262 + return NULL;
263 + }
264 + eeh_pcid_put(dev);
265 + }
266 }
267
268 /* Remove it from PCI subsystem */
269 diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
270 index fb133a163263..2274be535dda 100644
271 --- a/arch/powerpc/kernel/head_8xx.S
272 +++ b/arch/powerpc/kernel/head_8xx.S
273 @@ -769,7 +769,7 @@ start_here:
274 tovirt(r6,r6)
275 lis r5, abatron_pteptrs@h
276 ori r5, r5, abatron_pteptrs@l
277 - stw r5, 0xf0(r0) /* Must match your Abatron config file */
278 + stw r5, 0xf0(0) /* Must match your Abatron config file */
279 tophys(r5,r5)
280 stw r6, 0(r5)
281
282 diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
283 index 678f87a63645..97b02b8c4f10 100644
284 --- a/arch/powerpc/kernel/pci_32.c
285 +++ b/arch/powerpc/kernel/pci_32.c
286 @@ -11,6 +11,7 @@
287 #include <linux/sched.h>
288 #include <linux/errno.h>
289 #include <linux/bootmem.h>
290 +#include <linux/syscalls.h>
291 #include <linux/irq.h>
292 #include <linux/list.h>
293 #include <linux/of.h>
294 diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
295 index 48fc28bab544..64c9a91773af 100644
296 --- a/arch/powerpc/mm/slb.c
297 +++ b/arch/powerpc/mm/slb.c
298 @@ -68,14 +68,14 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
299 * updating it. No write barriers are needed here, provided
300 * we only update the current CPU's SLB shadow buffer.
301 */
302 - p->save_area[index].esid = 0;
303 - p->save_area[index].vsid = cpu_to_be64(mk_vsid_data(ea, ssize, flags));
304 - p->save_area[index].esid = cpu_to_be64(mk_esid_data(ea, ssize, index));
305 + WRITE_ONCE(p->save_area[index].esid, 0);
306 + WRITE_ONCE(p->save_area[index].vsid, cpu_to_be64(mk_vsid_data(ea, ssize, flags)));
307 + WRITE_ONCE(p->save_area[index].esid, cpu_to_be64(mk_esid_data(ea, ssize, index)));
308 }
309
310 static inline void slb_shadow_clear(enum slb_index index)
311 {
312 - get_slb_shadow()->save_area[index].esid = 0;
313 + WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
314 }
315
316 static inline void create_shadowed_slbe(unsigned long ea, int ssize,
317 diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c
318 index be9d968244ad..c0e817f35e69 100644
319 --- a/arch/powerpc/net/bpf_jit_comp64.c
320 +++ b/arch/powerpc/net/bpf_jit_comp64.c
321 @@ -207,25 +207,37 @@ static void bpf_jit_build_epilogue(u32 *image, struct codegen_context *ctx)
322
323 static void bpf_jit_emit_func_call(u32 *image, struct codegen_context *ctx, u64 func)
324 {
325 + unsigned int i, ctx_idx = ctx->idx;
326 +
327 + /* Load function address into r12 */
328 + PPC_LI64(12, func);
329 +
330 + /* For bpf-to-bpf function calls, the callee's address is unknown
331 + * until the last extra pass. As seen above, we use PPC_LI64() to
332 + * load the callee's address, but this may optimize the number of
333 + * instructions required based on the nature of the address.
334 + *
335 + * Since we don't want the number of instructions emitted to change,
336 + * we pad the optimized PPC_LI64() call with NOPs to guarantee that
337 + * we always have a five-instruction sequence, which is the maximum
338 + * that PPC_LI64() can emit.
339 + */
340 + for (i = ctx->idx - ctx_idx; i < 5; i++)
341 + PPC_NOP();
342 +
343 #ifdef PPC64_ELF_ABI_v1
344 - /* func points to the function descriptor */
345 - PPC_LI64(b2p[TMP_REG_2], func);
346 - /* Load actual entry point from function descriptor */
347 - PPC_BPF_LL(b2p[TMP_REG_1], b2p[TMP_REG_2], 0);
348 - /* ... and move it to LR */
349 - PPC_MTLR(b2p[TMP_REG_1]);
350 /*
351 * Load TOC from function descriptor at offset 8.
352 * We can clobber r2 since we get called through a
353 * function pointer (so caller will save/restore r2)
354 * and since we don't use a TOC ourself.
355 */
356 - PPC_BPF_LL(2, b2p[TMP_REG_2], 8);
357 -#else
358 - /* We can clobber r12 */
359 - PPC_FUNC_ADDR(12, func);
360 - PPC_MTLR(12);
361 + PPC_BPF_LL(2, 12, 8);
362 + /* Load actual entry point from function descriptor */
363 + PPC_BPF_LL(12, 12, 0);
364 #endif
365 +
366 + PPC_MTLR(12);
367 PPC_BLRL();
368 }
369
370 diff --git a/arch/powerpc/platforms/chrp/time.c b/arch/powerpc/platforms/chrp/time.c
371 index f803f4b8ab6f..8608e358217f 100644
372 --- a/arch/powerpc/platforms/chrp/time.c
373 +++ b/arch/powerpc/platforms/chrp/time.c
374 @@ -27,6 +27,8 @@
375 #include <asm/sections.h>
376 #include <asm/time.h>
377
378 +#include <platforms/chrp/chrp.h>
379 +
380 extern spinlock_t rtc_lock;
381
382 #define NVRAM_AS0 0x74
383 @@ -62,7 +64,7 @@ long __init chrp_time_init(void)
384 return 0;
385 }
386
387 -int chrp_cmos_clock_read(int addr)
388 +static int chrp_cmos_clock_read(int addr)
389 {
390 if (nvram_as1 != 0)
391 outb(addr>>8, nvram_as1);
392 @@ -70,7 +72,7 @@ int chrp_cmos_clock_read(int addr)
393 return (inb(nvram_data));
394 }
395
396 -void chrp_cmos_clock_write(unsigned long val, int addr)
397 +static void chrp_cmos_clock_write(unsigned long val, int addr)
398 {
399 if (nvram_as1 != 0)
400 outb(addr>>8, nvram_as1);
401 diff --git a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
402 index 89c54de88b7a..bf4a125faec6 100644
403 --- a/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
404 +++ b/arch/powerpc/platforms/embedded6xx/hlwd-pic.c
405 @@ -35,6 +35,8 @@
406 */
407 #define HW_BROADWAY_ICR 0x00
408 #define HW_BROADWAY_IMR 0x04
409 +#define HW_STARLET_ICR 0x08
410 +#define HW_STARLET_IMR 0x0c
411
412
413 /*
414 @@ -74,6 +76,9 @@ static void hlwd_pic_unmask(struct irq_data *d)
415 void __iomem *io_base = irq_data_get_irq_chip_data(d);
416
417 setbits32(io_base + HW_BROADWAY_IMR, 1 << irq);
418 +
419 + /* Make sure the ARM (aka. Starlet) doesn't handle this interrupt. */
420 + clrbits32(io_base + HW_STARLET_IMR, 1 << irq);
421 }
422
423
424 diff --git a/arch/powerpc/platforms/powermac/bootx_init.c b/arch/powerpc/platforms/powermac/bootx_init.c
425 index c3c9bbb3573a..ba0964c17620 100644
426 --- a/arch/powerpc/platforms/powermac/bootx_init.c
427 +++ b/arch/powerpc/platforms/powermac/bootx_init.c
428 @@ -468,7 +468,7 @@ void __init bootx_init(unsigned long r3, unsigned long r4)
429 boot_infos_t *bi = (boot_infos_t *) r4;
430 unsigned long hdr;
431 unsigned long space;
432 - unsigned long ptr, x;
433 + unsigned long ptr;
434 char *model;
435 unsigned long offset = reloc_offset();
436
437 @@ -562,6 +562,8 @@ void __init bootx_init(unsigned long r3, unsigned long r4)
438 * MMU switched OFF, so this should not be useful anymore.
439 */
440 if (bi->version < 4) {
441 + unsigned long x __maybe_unused;
442 +
443 bootx_printf("Touching pages...\n");
444
445 /*
446 diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
447 index 6b4e9d181126..4929dd4b165e 100644
448 --- a/arch/powerpc/platforms/powermac/setup.c
449 +++ b/arch/powerpc/platforms/powermac/setup.c
450 @@ -352,6 +352,7 @@ static int pmac_late_init(void)
451 }
452 machine_late_initcall(powermac, pmac_late_init);
453
454 +void note_bootable_part(dev_t dev, int part, int goodness);
455 /*
456 * This is __ref because we check for "initializing" before
457 * touching any of the __init sensitive things and "initializing"
458 diff --git a/arch/s390/include/asm/cpu_mf.h b/arch/s390/include/asm/cpu_mf.h
459 index 03516476127b..ee64e624c511 100644
460 --- a/arch/s390/include/asm/cpu_mf.h
461 +++ b/arch/s390/include/asm/cpu_mf.h
462 @@ -113,7 +113,7 @@ struct hws_basic_entry {
463
464 struct hws_diag_entry {
465 unsigned int def:16; /* 0-15 Data Entry Format */
466 - unsigned int R:14; /* 16-19 and 20-30 reserved */
467 + unsigned int R:15; /* 16-19 and 20-30 reserved */
468 unsigned int I:1; /* 31 entry valid or invalid */
469 u8 data[]; /* Machine-dependent sample data */
470 } __packed;
471 @@ -129,7 +129,9 @@ struct hws_trailer_entry {
472 unsigned int f:1; /* 0 - Block Full Indicator */
473 unsigned int a:1; /* 1 - Alert request control */
474 unsigned int t:1; /* 2 - Timestamp format */
475 - unsigned long long:61; /* 3 - 63: Reserved */
476 + unsigned int :29; /* 3 - 31: Reserved */
477 + unsigned int bsdes:16; /* 32-47: size of basic SDE */
478 + unsigned int dsdes:16; /* 48-63: size of diagnostic SDE */
479 };
480 unsigned long long flags; /* 0 - 63: All indicators */
481 };
482 diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
483 index aec6cc925af8..4f365267b12f 100644
484 --- a/arch/x86/events/intel/uncore.c
485 +++ b/arch/x86/events/intel/uncore.c
486 @@ -212,7 +212,7 @@ void uncore_perf_event_update(struct intel_uncore_box *box, struct perf_event *e
487 u64 prev_count, new_count, delta;
488 int shift;
489
490 - if (event->hw.idx >= UNCORE_PMC_IDX_FIXED)
491 + if (event->hw.idx == UNCORE_PMC_IDX_FIXED)
492 shift = 64 - uncore_fixed_ctr_bits(box);
493 else
494 shift = 64 - uncore_perf_ctr_bits(box);
495 diff --git a/arch/x86/events/intel/uncore_nhmex.c b/arch/x86/events/intel/uncore_nhmex.c
496 index cda569332005..83e2188adac4 100644
497 --- a/arch/x86/events/intel/uncore_nhmex.c
498 +++ b/arch/x86/events/intel/uncore_nhmex.c
499 @@ -245,7 +245,7 @@ static void nhmex_uncore_msr_enable_event(struct intel_uncore_box *box, struct p
500 {
501 struct hw_perf_event *hwc = &event->hw;
502
503 - if (hwc->idx >= UNCORE_PMC_IDX_FIXED)
504 + if (hwc->idx == UNCORE_PMC_IDX_FIXED)
505 wrmsrl(hwc->config_base, NHMEX_PMON_CTL_EN_BIT0);
506 else if (box->pmu->type->event_mask & NHMEX_PMON_CTL_EN_BIT0)
507 wrmsrl(hwc->config_base, hwc->config | NHMEX_PMON_CTL_EN_BIT22);
508 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
509 index a16c06604a56..8a4d6bc8fed0 100644
510 --- a/arch/x86/kvm/mmu.c
511 +++ b/arch/x86/kvm/mmu.c
512 @@ -698,7 +698,7 @@ static int mmu_topup_memory_cache_page(struct kvm_mmu_memory_cache *cache,
513 if (cache->nobjs >= min)
514 return 0;
515 while (cache->nobjs < ARRAY_SIZE(cache->objects)) {
516 - page = (void *)__get_free_page(GFP_KERNEL);
517 + page = (void *)__get_free_page(GFP_KERNEL_ACCOUNT);
518 if (!page)
519 return -ENOMEM;
520 cache->objects[cache->nobjs++] = page;
521 diff --git a/crypto/authenc.c b/crypto/authenc.c
522 index a7e1ac786c5d..c3180eb6d1ee 100644
523 --- a/crypto/authenc.c
524 +++ b/crypto/authenc.c
525 @@ -108,6 +108,7 @@ static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
526 CRYPTO_TFM_RES_MASK);
527
528 out:
529 + memzero_explicit(&keys, sizeof(keys));
530 return err;
531
532 badkey:
533 diff --git a/crypto/authencesn.c b/crypto/authencesn.c
534 index 18c94e1c31d1..49e7e85a23d5 100644
535 --- a/crypto/authencesn.c
536 +++ b/crypto/authencesn.c
537 @@ -90,6 +90,7 @@ static int crypto_authenc_esn_setkey(struct crypto_aead *authenc_esn, const u8 *
538 CRYPTO_TFM_RES_MASK);
539
540 out:
541 + memzero_explicit(&keys, sizeof(keys));
542 return err;
543
544 badkey:
545 diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
546 index bf601d4df8cf..b66815f35be6 100644
547 --- a/drivers/acpi/pci_root.c
548 +++ b/drivers/acpi/pci_root.c
549 @@ -472,9 +472,11 @@ static void negotiate_os_control(struct acpi_pci_root *root, int *no_aspm)
550 }
551
552 control = OSC_PCI_EXPRESS_CAPABILITY_CONTROL
553 - | OSC_PCI_EXPRESS_NATIVE_HP_CONTROL
554 | OSC_PCI_EXPRESS_PME_CONTROL;
555
556 + if (IS_ENABLED(CONFIG_HOTPLUG_PCI_PCIE))
557 + control |= OSC_PCI_EXPRESS_NATIVE_HP_CONTROL;
558 +
559 if (pci_aer_available()) {
560 if (aer_acpi_firmware_first())
561 dev_info(&device->dev,
562 diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
563 index 6475a1343483..90c38778bc1f 100644
564 --- a/drivers/ata/libata-eh.c
565 +++ b/drivers/ata/libata-eh.c
566 @@ -2282,12 +2282,16 @@ static void ata_eh_link_autopsy(struct ata_link *link)
567 if (qc->err_mask & ~AC_ERR_OTHER)
568 qc->err_mask &= ~AC_ERR_OTHER;
569
570 - /* SENSE_VALID trumps dev/unknown error and revalidation */
571 + /*
572 + * SENSE_VALID trumps dev/unknown error and revalidation. Upper
573 + * layers will determine whether the command is worth retrying
574 + * based on the sense data and device class/type. Otherwise,
575 + * determine directly if the command is worth retrying using its
576 + * error mask and flags.
577 + */
578 if (qc->flags & ATA_QCFLAG_SENSE_VALID)
579 qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER);
580 -
581 - /* determine whether the command is worth retrying */
582 - if (ata_eh_worth_retry(qc))
583 + else if (ata_eh_worth_retry(qc))
584 qc->flags |= ATA_QCFLAG_RETRY;
585
586 /* accumulate error info */
587 diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
588 index bff67c5a5fe7..44bccb1afa06 100644
589 --- a/drivers/bluetooth/btusb.c
590 +++ b/drivers/bluetooth/btusb.c
591 @@ -348,6 +348,9 @@ static const struct usb_device_id blacklist_table[] = {
592 /* Additional Realtek 8723BU Bluetooth devices */
593 { USB_DEVICE(0x7392, 0xa611), .driver_info = BTUSB_REALTEK },
594
595 + /* Additional Realtek 8723DE Bluetooth devices */
596 + { USB_DEVICE(0x2ff8, 0xb011), .driver_info = BTUSB_REALTEK },
597 +
598 /* Additional Realtek 8821AE Bluetooth devices */
599 { USB_DEVICE(0x0b05, 0x17dc), .driver_info = BTUSB_REALTEK },
600 { USB_DEVICE(0x13d3, 0x3414), .driver_info = BTUSB_REALTEK },
601 diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
602 index 3a8b9aef96a6..0986c324459f 100644
603 --- a/drivers/bluetooth/hci_qca.c
604 +++ b/drivers/bluetooth/hci_qca.c
605 @@ -884,7 +884,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate)
606 */
607 set_current_state(TASK_UNINTERRUPTIBLE);
608 schedule_timeout(msecs_to_jiffies(BAUDRATE_SETTLE_TIMEOUT_MS));
609 - set_current_state(TASK_INTERRUPTIBLE);
610 + set_current_state(TASK_RUNNING);
611
612 return 0;
613 }
614 diff --git a/drivers/bus/arm-ccn.c b/drivers/bus/arm-ccn.c
615 index 45d7ecc66b22..4e9e9e618c9f 100644
616 --- a/drivers/bus/arm-ccn.c
617 +++ b/drivers/bus/arm-ccn.c
618 @@ -736,7 +736,7 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
619 ccn = pmu_to_arm_ccn(event->pmu);
620
621 if (hw->sample_period) {
622 - dev_warn(ccn->dev, "Sampling not supported!\n");
623 + dev_dbg(ccn->dev, "Sampling not supported!\n");
624 return -EOPNOTSUPP;
625 }
626
627 @@ -744,12 +744,12 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
628 event->attr.exclude_kernel || event->attr.exclude_hv ||
629 event->attr.exclude_idle || event->attr.exclude_host ||
630 event->attr.exclude_guest) {
631 - dev_warn(ccn->dev, "Can't exclude execution levels!\n");
632 + dev_dbg(ccn->dev, "Can't exclude execution levels!\n");
633 return -EINVAL;
634 }
635
636 if (event->cpu < 0) {
637 - dev_warn(ccn->dev, "Can't provide per-task data!\n");
638 + dev_dbg(ccn->dev, "Can't provide per-task data!\n");
639 return -EOPNOTSUPP;
640 }
641 /*
642 @@ -771,13 +771,13 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
643 switch (type) {
644 case CCN_TYPE_MN:
645 if (node_xp != ccn->mn_id) {
646 - dev_warn(ccn->dev, "Invalid MN ID %d!\n", node_xp);
647 + dev_dbg(ccn->dev, "Invalid MN ID %d!\n", node_xp);
648 return -EINVAL;
649 }
650 break;
651 case CCN_TYPE_XP:
652 if (node_xp >= ccn->num_xps) {
653 - dev_warn(ccn->dev, "Invalid XP ID %d!\n", node_xp);
654 + dev_dbg(ccn->dev, "Invalid XP ID %d!\n", node_xp);
655 return -EINVAL;
656 }
657 break;
658 @@ -785,11 +785,11 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
659 break;
660 default:
661 if (node_xp >= ccn->num_nodes) {
662 - dev_warn(ccn->dev, "Invalid node ID %d!\n", node_xp);
663 + dev_dbg(ccn->dev, "Invalid node ID %d!\n", node_xp);
664 return -EINVAL;
665 }
666 if (!arm_ccn_pmu_type_eq(type, ccn->node[node_xp].type)) {
667 - dev_warn(ccn->dev, "Invalid type 0x%x for node %d!\n",
668 + dev_dbg(ccn->dev, "Invalid type 0x%x for node %d!\n",
669 type, node_xp);
670 return -EINVAL;
671 }
672 @@ -808,19 +808,19 @@ static int arm_ccn_pmu_event_init(struct perf_event *event)
673 if (event_id != e->event)
674 continue;
675 if (e->num_ports && port >= e->num_ports) {
676 - dev_warn(ccn->dev, "Invalid port %d for node/XP %d!\n",
677 + dev_dbg(ccn->dev, "Invalid port %d for node/XP %d!\n",
678 port, node_xp);
679 return -EINVAL;
680 }
681 if (e->num_vcs && vc >= e->num_vcs) {
682 - dev_warn(ccn->dev, "Invalid vc %d for node/XP %d!\n",
683 + dev_dbg(ccn->dev, "Invalid vc %d for node/XP %d!\n",
684 vc, node_xp);
685 return -EINVAL;
686 }
687 valid = 1;
688 }
689 if (!valid) {
690 - dev_warn(ccn->dev, "Invalid event 0x%x for node/XP %d!\n",
691 + dev_dbg(ccn->dev, "Invalid event 0x%x for node/XP %d!\n",
692 event_id, node_xp);
693 return -EINVAL;
694 }
695 diff --git a/drivers/char/random.c b/drivers/char/random.c
696 index ddeac4eefd0a..81b65d0e7563 100644
697 --- a/drivers/char/random.c
698 +++ b/drivers/char/random.c
699 @@ -1826,14 +1826,22 @@ static int
700 write_pool(struct entropy_store *r, const char __user *buffer, size_t count)
701 {
702 size_t bytes;
703 - __u32 buf[16];
704 + __u32 t, buf[16];
705 const char __user *p = buffer;
706
707 while (count > 0) {
708 + int b, i = 0;
709 +
710 bytes = min(count, sizeof(buf));
711 if (copy_from_user(&buf, p, bytes))
712 return -EFAULT;
713
714 + for (b = bytes ; b > 0 ; b -= sizeof(__u32), i++) {
715 + if (!arch_get_random_int(&t))
716 + break;
717 + buf[i] ^= t;
718 + }
719 +
720 count -= bytes;
721 p += bytes;
722
723 diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c
724 index 61262a7a5c3a..b0bd0f64d8f2 100644
725 --- a/drivers/edac/altera_edac.c
726 +++ b/drivers/edac/altera_edac.c
727 @@ -1111,7 +1111,7 @@ static void *ocram_alloc_mem(size_t size, void **other)
728
729 static void ocram_free_mem(void *p, size_t size, void *other)
730 {
731 - gen_pool_free((struct gen_pool *)other, (u32)p, size);
732 + gen_pool_free((struct gen_pool *)other, (unsigned long)p, size);
733 }
734
735 static const struct edac_device_prv_data ocramecc_data = {
736 diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
737 index 34adde169a78..dd6fff1c98d6 100644
738 --- a/drivers/gpu/drm/drm_atomic.c
739 +++ b/drivers/gpu/drm/drm_atomic.c
740 @@ -1091,7 +1091,9 @@ drm_atomic_set_crtc_for_plane(struct drm_plane_state *plane_state,
741 {
742 struct drm_plane *plane = plane_state->plane;
743 struct drm_crtc_state *crtc_state;
744 -
745 + /* Nothing to do for same crtc*/
746 + if (plane_state->crtc == crtc)
747 + return 0;
748 if (plane_state->crtc) {
749 crtc_state = drm_atomic_get_crtc_state(plane_state->state,
750 plane_state->crtc);
751 diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
752 index 2a3b7c684db2..fbd3fa340c4f 100644
753 --- a/drivers/gpu/drm/gma500/psb_intel_drv.h
754 +++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
755 @@ -255,7 +255,7 @@ extern int intelfb_remove(struct drm_device *dev,
756 extern bool psb_intel_lvds_mode_fixup(struct drm_encoder *encoder,
757 const struct drm_display_mode *mode,
758 struct drm_display_mode *adjusted_mode);
759 -extern int psb_intel_lvds_mode_valid(struct drm_connector *connector,
760 +extern enum drm_mode_status psb_intel_lvds_mode_valid(struct drm_connector *connector,
761 struct drm_display_mode *mode);
762 extern int psb_intel_lvds_set_property(struct drm_connector *connector,
763 struct drm_property *property,
764 diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
765 index 79e9d3690667..e2c6ba3eded4 100644
766 --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
767 +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
768 @@ -343,7 +343,7 @@ static void psb_intel_lvds_restore(struct drm_connector *connector)
769 }
770 }
771
772 -int psb_intel_lvds_mode_valid(struct drm_connector *connector,
773 +enum drm_mode_status psb_intel_lvds_mode_valid(struct drm_connector *connector,
774 struct drm_display_mode *mode)
775 {
776 struct drm_psb_private *dev_priv = connector->dev->dev_private;
777 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
778 index f416f5c2e8e9..c5e1aa5f1d8e 100644
779 --- a/drivers/gpu/drm/radeon/radeon_connectors.c
780 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
781 @@ -850,7 +850,7 @@ static int radeon_lvds_get_modes(struct drm_connector *connector)
782 return ret;
783 }
784
785 -static int radeon_lvds_mode_valid(struct drm_connector *connector,
786 +static enum drm_mode_status radeon_lvds_mode_valid(struct drm_connector *connector,
787 struct drm_display_mode *mode)
788 {
789 struct drm_encoder *encoder = radeon_best_single_encoder(connector);
790 @@ -1010,7 +1010,7 @@ static int radeon_vga_get_modes(struct drm_connector *connector)
791 return ret;
792 }
793
794 -static int radeon_vga_mode_valid(struct drm_connector *connector,
795 +static enum drm_mode_status radeon_vga_mode_valid(struct drm_connector *connector,
796 struct drm_display_mode *mode)
797 {
798 struct drm_device *dev = connector->dev;
799 @@ -1154,7 +1154,7 @@ static int radeon_tv_get_modes(struct drm_connector *connector)
800 return 1;
801 }
802
803 -static int radeon_tv_mode_valid(struct drm_connector *connector,
804 +static enum drm_mode_status radeon_tv_mode_valid(struct drm_connector *connector,
805 struct drm_display_mode *mode)
806 {
807 if ((mode->hdisplay > 1024) || (mode->vdisplay > 768))
808 @@ -1496,7 +1496,7 @@ static void radeon_dvi_force(struct drm_connector *connector)
809 radeon_connector->use_digital = true;
810 }
811
812 -static int radeon_dvi_mode_valid(struct drm_connector *connector,
813 +static enum drm_mode_status radeon_dvi_mode_valid(struct drm_connector *connector,
814 struct drm_display_mode *mode)
815 {
816 struct drm_device *dev = connector->dev;
817 @@ -1798,7 +1798,7 @@ out:
818 return ret;
819 }
820
821 -static int radeon_dp_mode_valid(struct drm_connector *connector,
822 +static enum drm_mode_status radeon_dp_mode_valid(struct drm_connector *connector,
823 struct drm_display_mode *mode)
824 {
825 struct drm_device *dev = connector->dev;
826 diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c
827 index febb21ee190e..584b10d3fc3d 100644
828 --- a/drivers/hid/hid-plantronics.c
829 +++ b/drivers/hid/hid-plantronics.c
830 @@ -2,7 +2,7 @@
831 * Plantronics USB HID Driver
832 *
833 * Copyright (c) 2014 JD Cole <jd.cole@plantronics.com>
834 - * Copyright (c) 2015 Terry Junge <terry.junge@plantronics.com>
835 + * Copyright (c) 2015-2018 Terry Junge <terry.junge@plantronics.com>
836 */
837
838 /*
839 @@ -48,6 +48,10 @@ static int plantronics_input_mapping(struct hid_device *hdev,
840 unsigned short mapped_key;
841 unsigned long plt_type = (unsigned long)hid_get_drvdata(hdev);
842
843 + /* special case for PTT products */
844 + if (field->application == HID_GD_JOYSTICK)
845 + goto defaulted;
846 +
847 /* handle volume up/down mapping */
848 /* non-standard types or multi-HID interfaces - plt_type is PID */
849 if (!(plt_type & HID_USAGE_PAGE)) {
850 diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c
851 index 00bce002b357..ce2b80009c19 100644
852 --- a/drivers/hid/i2c-hid/i2c-hid.c
853 +++ b/drivers/hid/i2c-hid/i2c-hid.c
854 @@ -1101,6 +1101,14 @@ static int i2c_hid_probe(struct i2c_client *client,
855 pm_runtime_enable(&client->dev);
856 device_enable_async_suspend(&client->dev);
857
858 + /* Make sure there is something at this address */
859 + ret = i2c_smbus_read_byte(client);
860 + if (ret < 0) {
861 + dev_dbg(&client->dev, "nothing at this address: %d\n", ret);
862 + ret = -ENXIO;
863 + goto err_pm;
864 + }
865 +
866 ret = i2c_hid_fetch_hid_descriptor(ihid);
867 if (ret < 0)
868 goto err_pm;
869 diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
870 index 2395fe2021c9..3e2ab04201e2 100644
871 --- a/drivers/infiniband/core/mad.c
872 +++ b/drivers/infiniband/core/mad.c
873 @@ -1549,7 +1549,8 @@ static int add_oui_reg_req(struct ib_mad_reg_req *mad_reg_req,
874 mad_reg_req->oui, 3)) {
875 method = &(*vendor_table)->vendor_class[
876 vclass]->method_table[i];
877 - BUG_ON(!*method);
878 + if (!*method)
879 + goto error3;
880 goto check_in_use;
881 }
882 }
883 @@ -1559,10 +1560,12 @@ static int add_oui_reg_req(struct ib_mad_reg_req *mad_reg_req,
884 vclass]->oui[i])) {
885 method = &(*vendor_table)->vendor_class[
886 vclass]->method_table[i];
887 - BUG_ON(*method);
888 /* Allocate method table for this OUI */
889 - if ((ret = allocate_method_table(method)))
890 - goto error3;
891 + if (!*method) {
892 + ret = allocate_method_table(method);
893 + if (ret)
894 + goto error3;
895 + }
896 memcpy((*vendor_table)->vendor_class[vclass]->oui[i],
897 mad_reg_req->oui, 3);
898 goto check_in_use;
899 diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
900 index a036d7087ddf..3bef6d4ffe6f 100644
901 --- a/drivers/infiniband/core/ucma.c
902 +++ b/drivers/infiniband/core/ucma.c
903 @@ -218,7 +218,7 @@ static struct ucma_multicast* ucma_alloc_multicast(struct ucma_context *ctx)
904 return NULL;
905
906 mutex_lock(&mut);
907 - mc->id = idr_alloc(&multicast_idr, mc, 0, 0, GFP_KERNEL);
908 + mc->id = idr_alloc(&multicast_idr, NULL, 0, 0, GFP_KERNEL);
909 mutex_unlock(&mut);
910 if (mc->id < 0)
911 goto error;
912 @@ -1385,6 +1385,10 @@ static ssize_t ucma_process_join(struct ucma_file *file,
913 goto err3;
914 }
915
916 + mutex_lock(&mut);
917 + idr_replace(&multicast_idr, mc, mc->id);
918 + mutex_unlock(&mut);
919 +
920 mutex_unlock(&file->mut);
921 ucma_put_ctx(ctx);
922 return 0;
923 diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
924 index 4b717cf50d27..6f875bf9cc9d 100644
925 --- a/drivers/infiniband/core/uverbs_cmd.c
926 +++ b/drivers/infiniband/core/uverbs_cmd.c
927 @@ -3725,6 +3725,11 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file,
928 goto err_uobj;
929 }
930
931 + if (qp->qp_type != IB_QPT_UD && qp->qp_type != IB_QPT_RAW_PACKET) {
932 + err = -EINVAL;
933 + goto err_put;
934 + }
935 +
936 flow_attr = kzalloc(sizeof(*flow_attr) + cmd.flow_attr.num_of_specs *
937 sizeof(union ib_flow_spec), GFP_KERNEL);
938 if (!flow_attr) {
939 diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
940 index 97f6e05cffce..a716482774db 100644
941 --- a/drivers/input/mouse/elan_i2c_core.c
942 +++ b/drivers/input/mouse/elan_i2c_core.c
943 @@ -1251,6 +1251,8 @@ static const struct acpi_device_id elan_acpi_id[] = {
944 { "ELAN0611", 0 },
945 { "ELAN0612", 0 },
946 { "ELAN0618", 0 },
947 + { "ELAN061D", 0 },
948 + { "ELAN0622", 0 },
949 { "ELAN1000", 0 },
950 { }
951 };
952 diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
953 index e484ea2dc787..34be09651ee8 100644
954 --- a/drivers/input/serio/i8042-x86ia64io.h
955 +++ b/drivers/input/serio/i8042-x86ia64io.h
956 @@ -527,6 +527,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
957 DMI_MATCH(DMI_PRODUCT_NAME, "N24_25BU"),
958 },
959 },
960 + {
961 + /* Lenovo LaVie Z */
962 + .matches = {
963 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
964 + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo LaVie Z"),
965 + },
966 + },
967 { }
968 };
969
970 diff --git a/drivers/md/md.c b/drivers/md/md.c
971 index 3bb985679f34..a7a0e3acdb2f 100644
972 --- a/drivers/md/md.c
973 +++ b/drivers/md/md.c
974 @@ -6192,6 +6192,9 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev)
975 char b[BDEVNAME_SIZE];
976 struct md_rdev *rdev;
977
978 + if (!mddev->pers)
979 + return -ENODEV;
980 +
981 rdev = find_rdev(mddev, dev);
982 if (!rdev)
983 return -ENXIO;
984 diff --git a/drivers/media/common/siano/smsendian.c b/drivers/media/common/siano/smsendian.c
985 index bfe831c10b1c..b95a631f23f9 100644
986 --- a/drivers/media/common/siano/smsendian.c
987 +++ b/drivers/media/common/siano/smsendian.c
988 @@ -35,7 +35,7 @@ void smsendian_handle_tx_message(void *buffer)
989 switch (msg->x_msg_header.msg_type) {
990 case MSG_SMS_DATA_DOWNLOAD_REQ:
991 {
992 - msg->msg_data[0] = le32_to_cpu(msg->msg_data[0]);
993 + msg->msg_data[0] = le32_to_cpu((__force __le32)(msg->msg_data[0]));
994 break;
995 }
996
997 @@ -44,7 +44,7 @@ void smsendian_handle_tx_message(void *buffer)
998 sizeof(struct sms_msg_hdr))/4;
999
1000 for (i = 0; i < msg_words; i++)
1001 - msg->msg_data[i] = le32_to_cpu(msg->msg_data[i]);
1002 + msg->msg_data[i] = le32_to_cpu((__force __le32)msg->msg_data[i]);
1003
1004 break;
1005 }
1006 @@ -64,7 +64,7 @@ void smsendian_handle_rx_message(void *buffer)
1007 {
1008 struct sms_version_res *ver =
1009 (struct sms_version_res *) msg;
1010 - ver->chip_model = le16_to_cpu(ver->chip_model);
1011 + ver->chip_model = le16_to_cpu((__force __le16)ver->chip_model);
1012 break;
1013 }
1014
1015 @@ -81,7 +81,7 @@ void smsendian_handle_rx_message(void *buffer)
1016 sizeof(struct sms_msg_hdr))/4;
1017
1018 for (i = 0; i < msg_words; i++)
1019 - msg->msg_data[i] = le32_to_cpu(msg->msg_data[i]);
1020 + msg->msg_data[i] = le32_to_cpu((__force __le32)msg->msg_data[i]);
1021
1022 break;
1023 }
1024 @@ -95,9 +95,9 @@ void smsendian_handle_message_header(void *msg)
1025 #ifdef __BIG_ENDIAN
1026 struct sms_msg_hdr *phdr = (struct sms_msg_hdr *)msg;
1027
1028 - phdr->msg_type = le16_to_cpu(phdr->msg_type);
1029 - phdr->msg_length = le16_to_cpu(phdr->msg_length);
1030 - phdr->msg_flags = le16_to_cpu(phdr->msg_flags);
1031 + phdr->msg_type = le16_to_cpu((__force __le16)phdr->msg_type);
1032 + phdr->msg_length = le16_to_cpu((__force __le16)phdr->msg_length);
1033 + phdr->msg_flags = le16_to_cpu((__force __le16)phdr->msg_flags);
1034 #endif /* __BIG_ENDIAN */
1035 }
1036 EXPORT_SYMBOL_GPL(smsendian_handle_message_header);
1037 diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
1038 index 44f8c7e10a35..8ffa13f39a86 100644
1039 --- a/drivers/media/i2c/smiapp/smiapp-core.c
1040 +++ b/drivers/media/i2c/smiapp/smiapp-core.c
1041 @@ -991,7 +991,7 @@ static int smiapp_read_nvm(struct smiapp_sensor *sensor,
1042 if (rval)
1043 goto out;
1044
1045 - for (i = 0; i < 1000; i++) {
1046 + for (i = 1000; i > 0; i--) {
1047 rval = smiapp_read(
1048 sensor,
1049 SMIAPP_REG_U8_DATA_TRANSFER_IF_1_STATUS, &s);
1050 @@ -1002,11 +1002,10 @@ static int smiapp_read_nvm(struct smiapp_sensor *sensor,
1051 if (s & SMIAPP_DATA_TRANSFER_IF_1_STATUS_RD_READY)
1052 break;
1053
1054 - if (--i == 0) {
1055 - rval = -ETIMEDOUT;
1056 - goto out;
1057 - }
1058 -
1059 + }
1060 + if (!i) {
1061 + rval = -ETIMEDOUT;
1062 + goto out;
1063 }
1064
1065 for (i = 0; i < SMIAPP_NVM_PAGE_SIZE; i++) {
1066 diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
1067 index 4462d8c69d57..6f46c59415fe 100644
1068 --- a/drivers/media/media-device.c
1069 +++ b/drivers/media/media-device.c
1070 @@ -58,9 +58,10 @@ static int media_device_close(struct file *filp)
1071 return 0;
1072 }
1073
1074 -static int media_device_get_info(struct media_device *dev,
1075 - struct media_device_info *info)
1076 +static long media_device_get_info(struct media_device *dev, void *arg)
1077 {
1078 + struct media_device_info *info = arg;
1079 +
1080 memset(info, 0, sizeof(*info));
1081
1082 if (dev->driver_name[0])
1083 @@ -97,9 +98,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)
1084 return NULL;
1085 }
1086
1087 -static long media_device_enum_entities(struct media_device *mdev,
1088 - struct media_entity_desc *entd)
1089 +static long media_device_enum_entities(struct media_device *mdev, void *arg)
1090 {
1091 + struct media_entity_desc *entd = arg;
1092 struct media_entity *ent;
1093
1094 ent = find_entity(mdev, entd->id);
1095 @@ -150,9 +151,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad,
1096 upad->flags = kpad->flags;
1097 }
1098
1099 -static long media_device_enum_links(struct media_device *mdev,
1100 - struct media_links_enum *links)
1101 +static long media_device_enum_links(struct media_device *mdev, void *arg)
1102 {
1103 + struct media_links_enum *links = arg;
1104 struct media_entity *entity;
1105
1106 entity = find_entity(mdev, links->entity);
1107 @@ -198,9 +199,9 @@ static long media_device_enum_links(struct media_device *mdev,
1108 return 0;
1109 }
1110
1111 -static long media_device_setup_link(struct media_device *mdev,
1112 - struct media_link_desc *linkd)
1113 +static long media_device_setup_link(struct media_device *mdev, void *arg)
1114 {
1115 + struct media_link_desc *linkd = arg;
1116 struct media_link *link = NULL;
1117 struct media_entity *source;
1118 struct media_entity *sink;
1119 @@ -226,9 +227,9 @@ static long media_device_setup_link(struct media_device *mdev,
1120 return __media_entity_setup_link(link, linkd->flags);
1121 }
1122
1123 -static long media_device_get_topology(struct media_device *mdev,
1124 - struct media_v2_topology *topo)
1125 +static long media_device_get_topology(struct media_device *mdev, void *arg)
1126 {
1127 + struct media_v2_topology *topo = arg;
1128 struct media_entity *entity;
1129 struct media_interface *intf;
1130 struct media_pad *pad;
1131 diff --git a/drivers/media/pci/saa7164/saa7164-fw.c b/drivers/media/pci/saa7164/saa7164-fw.c
1132 index 269e0782c7b6..93d53195e8ca 100644
1133 --- a/drivers/media/pci/saa7164/saa7164-fw.c
1134 +++ b/drivers/media/pci/saa7164/saa7164-fw.c
1135 @@ -430,7 +430,8 @@ int saa7164_downloadfirmware(struct saa7164_dev *dev)
1136 __func__, fw->size);
1137
1138 if (fw->size != fwlength) {
1139 - printk(KERN_ERR "xc5000: firmware incorrect size\n");
1140 + printk(KERN_ERR "saa7164: firmware incorrect size %zu != %u\n",
1141 + fw->size, fwlength);
1142 ret = -ENOMEM;
1143 goto out;
1144 }
1145 diff --git a/drivers/media/pci/tw686x/tw686x-video.c b/drivers/media/pci/tw686x/tw686x-video.c
1146 index c3fafa97b2d0..0ea8dd44026c 100644
1147 --- a/drivers/media/pci/tw686x/tw686x-video.c
1148 +++ b/drivers/media/pci/tw686x/tw686x-video.c
1149 @@ -1228,7 +1228,8 @@ int tw686x_video_init(struct tw686x_dev *dev)
1150 vc->vidq.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
1151 vc->vidq.min_buffers_needed = 2;
1152 vc->vidq.lock = &vc->vb_mutex;
1153 - vc->vidq.gfp_flags = GFP_DMA32;
1154 + vc->vidq.gfp_flags = dev->dma_mode != TW686X_DMA_MODE_MEMCPY ?
1155 + GFP_DMA32 : 0;
1156 vc->vidq.dev = &dev->pci_dev->dev;
1157
1158 err = vb2_queue_init(&vc->vidq);
1159 diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
1160 index 0321d84addc7..15a86bb4e61c 100644
1161 --- a/drivers/media/platform/omap3isp/isp.c
1162 +++ b/drivers/media/platform/omap3isp/isp.c
1163 @@ -1941,6 +1941,7 @@ error_csiphy:
1164
1165 static void isp_detach_iommu(struct isp_device *isp)
1166 {
1167 + arm_iommu_detach_device(isp->dev);
1168 arm_iommu_release_mapping(isp->mapping);
1169 isp->mapping = NULL;
1170 iommu_group_remove_device(isp->dev);
1171 @@ -1974,8 +1975,7 @@ static int isp_attach_iommu(struct isp_device *isp)
1172 mapping = arm_iommu_create_mapping(&platform_bus_type, SZ_1G, SZ_2G);
1173 if (IS_ERR(mapping)) {
1174 dev_err(isp->dev, "failed to create ARM IOMMU mapping\n");
1175 - ret = PTR_ERR(mapping);
1176 - goto error;
1177 + return PTR_ERR(mapping);
1178 }
1179
1180 isp->mapping = mapping;
1181 @@ -1990,7 +1990,8 @@ static int isp_attach_iommu(struct isp_device *isp)
1182 return 0;
1183
1184 error:
1185 - isp_detach_iommu(isp);
1186 + arm_iommu_release_mapping(isp->mapping);
1187 + isp->mapping = NULL;
1188 return ret;
1189 }
1190
1191 diff --git a/drivers/media/platform/rcar_jpu.c b/drivers/media/platform/rcar_jpu.c
1192 index d1746ecc645d..db1110a492e0 100644
1193 --- a/drivers/media/platform/rcar_jpu.c
1194 +++ b/drivers/media/platform/rcar_jpu.c
1195 @@ -1280,7 +1280,7 @@ static int jpu_open(struct file *file)
1196 /* ...issue software reset */
1197 ret = jpu_reset(jpu);
1198 if (ret)
1199 - goto device_prepare_rollback;
1200 + goto jpu_reset_rollback;
1201 }
1202
1203 jpu->ref_count++;
1204 @@ -1288,6 +1288,8 @@ static int jpu_open(struct file *file)
1205 mutex_unlock(&jpu->mutex);
1206 return 0;
1207
1208 +jpu_reset_rollback:
1209 + clk_disable_unprepare(jpu->clk);
1210 device_prepare_rollback:
1211 mutex_unlock(&jpu->mutex);
1212 v4l_prepare_rollback:
1213 diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c b/drivers/media/radio/si470x/radio-si470x-i2c.c
1214 index ee0470a3196b..f218886c504d 100644
1215 --- a/drivers/media/radio/si470x/radio-si470x-i2c.c
1216 +++ b/drivers/media/radio/si470x/radio-si470x-i2c.c
1217 @@ -96,7 +96,7 @@ MODULE_PARM_DESC(max_rds_errors, "RDS maximum block errors: *1*");
1218 */
1219 int si470x_get_register(struct si470x_device *radio, int regnr)
1220 {
1221 - u16 buf[READ_REG_NUM];
1222 + __be16 buf[READ_REG_NUM];
1223 struct i2c_msg msgs[1] = {
1224 {
1225 .addr = radio->client->addr,
1226 @@ -121,7 +121,7 @@ int si470x_get_register(struct si470x_device *radio, int regnr)
1227 int si470x_set_register(struct si470x_device *radio, int regnr)
1228 {
1229 int i;
1230 - u16 buf[WRITE_REG_NUM];
1231 + __be16 buf[WRITE_REG_NUM];
1232 struct i2c_msg msgs[1] = {
1233 {
1234 .addr = radio->client->addr,
1235 @@ -151,7 +151,7 @@ int si470x_set_register(struct si470x_device *radio, int regnr)
1236 static int si470x_get_all_registers(struct si470x_device *radio)
1237 {
1238 int i;
1239 - u16 buf[READ_REG_NUM];
1240 + __be16 buf[READ_REG_NUM];
1241 struct i2c_msg msgs[1] = {
1242 {
1243 .addr = radio->client->addr,
1244 diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
1245 index 4299ce06c25b..b3a9fa75e8e7 100644
1246 --- a/drivers/media/v4l2-core/videobuf2-core.c
1247 +++ b/drivers/media/v4l2-core/videobuf2-core.c
1248 @@ -914,9 +914,12 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
1249 dprintk(4, "done processing on buffer %d, state: %d\n",
1250 vb->index, state);
1251
1252 - /* sync buffers */
1253 - for (plane = 0; plane < vb->num_planes; ++plane)
1254 - call_void_memop(vb, finish, vb->planes[plane].mem_priv);
1255 + if (state != VB2_BUF_STATE_QUEUED &&
1256 + state != VB2_BUF_STATE_REQUEUEING) {
1257 + /* sync buffers */
1258 + for (plane = 0; plane < vb->num_planes; ++plane)
1259 + call_void_memop(vb, finish, vb->planes[plane].mem_priv);
1260 + }
1261
1262 spin_lock_irqsave(&q->done_lock, flags);
1263 if (state == VB2_BUF_STATE_QUEUED ||
1264 diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
1265 index a4803ac192bb..1d49a8dd4a37 100644
1266 --- a/drivers/memory/tegra/mc.c
1267 +++ b/drivers/memory/tegra/mc.c
1268 @@ -20,14 +20,6 @@
1269 #include "mc.h"
1270
1271 #define MC_INTSTATUS 0x000
1272 -#define MC_INT_DECERR_MTS (1 << 16)
1273 -#define MC_INT_SECERR_SEC (1 << 13)
1274 -#define MC_INT_DECERR_VPR (1 << 12)
1275 -#define MC_INT_INVALID_APB_ASID_UPDATE (1 << 11)
1276 -#define MC_INT_INVALID_SMMU_PAGE (1 << 10)
1277 -#define MC_INT_ARBITRATION_EMEM (1 << 9)
1278 -#define MC_INT_SECURITY_VIOLATION (1 << 8)
1279 -#define MC_INT_DECERR_EMEM (1 << 6)
1280
1281 #define MC_INTMASK 0x004
1282
1283 @@ -248,12 +240,13 @@ static const char *const error_names[8] = {
1284 static irqreturn_t tegra_mc_irq(int irq, void *data)
1285 {
1286 struct tegra_mc *mc = data;
1287 - unsigned long status, mask;
1288 + unsigned long status;
1289 unsigned int bit;
1290
1291 /* mask all interrupts to avoid flooding */
1292 - status = mc_readl(mc, MC_INTSTATUS);
1293 - mask = mc_readl(mc, MC_INTMASK);
1294 + status = mc_readl(mc, MC_INTSTATUS) & mc->soc->intmask;
1295 + if (!status)
1296 + return IRQ_NONE;
1297
1298 for_each_set_bit(bit, &status, 32) {
1299 const char *error = status_names[bit] ?: "unknown";
1300 @@ -346,7 +339,6 @@ static int tegra_mc_probe(struct platform_device *pdev)
1301 const struct of_device_id *match;
1302 struct resource *res;
1303 struct tegra_mc *mc;
1304 - u32 value;
1305 int err;
1306
1307 match = of_match_node(tegra_mc_of_match, pdev->dev.of_node);
1308 @@ -414,11 +406,7 @@ static int tegra_mc_probe(struct platform_device *pdev)
1309
1310 WARN(!mc->soc->client_id_mask, "Missing client ID mask for this SoC\n");
1311
1312 - value = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
1313 - MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
1314 - MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM;
1315 -
1316 - mc_writel(mc, value, MC_INTMASK);
1317 + mc_writel(mc, mc->soc->intmask, MC_INTMASK);
1318
1319 return 0;
1320 }
1321 diff --git a/drivers/memory/tegra/mc.h b/drivers/memory/tegra/mc.h
1322 index ddb16676c3af..24e020b4609b 100644
1323 --- a/drivers/memory/tegra/mc.h
1324 +++ b/drivers/memory/tegra/mc.h
1325 @@ -14,6 +14,15 @@
1326
1327 #include <soc/tegra/mc.h>
1328
1329 +#define MC_INT_DECERR_MTS (1 << 16)
1330 +#define MC_INT_SECERR_SEC (1 << 13)
1331 +#define MC_INT_DECERR_VPR (1 << 12)
1332 +#define MC_INT_INVALID_APB_ASID_UPDATE (1 << 11)
1333 +#define MC_INT_INVALID_SMMU_PAGE (1 << 10)
1334 +#define MC_INT_ARBITRATION_EMEM (1 << 9)
1335 +#define MC_INT_SECURITY_VIOLATION (1 << 8)
1336 +#define MC_INT_DECERR_EMEM (1 << 6)
1337 +
1338 static inline u32 mc_readl(struct tegra_mc *mc, unsigned long offset)
1339 {
1340 return readl(mc->regs + offset);
1341 diff --git a/drivers/memory/tegra/tegra114.c b/drivers/memory/tegra/tegra114.c
1342 index ba8fff3d66a6..6d2a5a849d92 100644
1343 --- a/drivers/memory/tegra/tegra114.c
1344 +++ b/drivers/memory/tegra/tegra114.c
1345 @@ -930,4 +930,6 @@ const struct tegra_mc_soc tegra114_mc_soc = {
1346 .atom_size = 32,
1347 .client_id_mask = 0x7f,
1348 .smmu = &tegra114_smmu_soc,
1349 + .intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION |
1350 + MC_INT_DECERR_EMEM,
1351 };
1352 diff --git a/drivers/memory/tegra/tegra124.c b/drivers/memory/tegra/tegra124.c
1353 index 5a58e440f4a7..9f68a56f2727 100644
1354 --- a/drivers/memory/tegra/tegra124.c
1355 +++ b/drivers/memory/tegra/tegra124.c
1356 @@ -1020,6 +1020,9 @@ const struct tegra_mc_soc tegra124_mc_soc = {
1357 .smmu = &tegra124_smmu_soc,
1358 .emem_regs = tegra124_mc_emem_regs,
1359 .num_emem_regs = ARRAY_SIZE(tegra124_mc_emem_regs),
1360 + .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
1361 + MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
1362 + MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
1363 };
1364 #endif /* CONFIG_ARCH_TEGRA_124_SOC */
1365
1366 @@ -1042,5 +1045,8 @@ const struct tegra_mc_soc tegra132_mc_soc = {
1367 .atom_size = 32,
1368 .client_id_mask = 0x7f,
1369 .smmu = &tegra132_smmu_soc,
1370 + .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
1371 + MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
1372 + MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
1373 };
1374 #endif /* CONFIG_ARCH_TEGRA_132_SOC */
1375 diff --git a/drivers/memory/tegra/tegra210.c b/drivers/memory/tegra/tegra210.c
1376 index 5e144abe4c18..47c78a6d8f00 100644
1377 --- a/drivers/memory/tegra/tegra210.c
1378 +++ b/drivers/memory/tegra/tegra210.c
1379 @@ -1077,4 +1077,7 @@ const struct tegra_mc_soc tegra210_mc_soc = {
1380 .atom_size = 64,
1381 .client_id_mask = 0xff,
1382 .smmu = &tegra210_smmu_soc,
1383 + .intmask = MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
1384 + MC_INT_INVALID_APB_ASID_UPDATE | MC_INT_INVALID_SMMU_PAGE |
1385 + MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
1386 };
1387 diff --git a/drivers/memory/tegra/tegra30.c b/drivers/memory/tegra/tegra30.c
1388 index b44737840e70..d0689428ea1a 100644
1389 --- a/drivers/memory/tegra/tegra30.c
1390 +++ b/drivers/memory/tegra/tegra30.c
1391 @@ -952,4 +952,6 @@ const struct tegra_mc_soc tegra30_mc_soc = {
1392 .atom_size = 16,
1393 .client_id_mask = 0x7f,
1394 .smmu = &tegra30_smmu_soc,
1395 + .intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION |
1396 + MC_INT_DECERR_EMEM,
1397 };
1398 diff --git a/drivers/mfd/cros_ec.c b/drivers/mfd/cros_ec.c
1399 index abd83424b498..3e18d2595b6d 100644
1400 --- a/drivers/mfd/cros_ec.c
1401 +++ b/drivers/mfd/cros_ec.c
1402 @@ -86,7 +86,11 @@ int cros_ec_register(struct cros_ec_device *ec_dev)
1403
1404 mutex_init(&ec_dev->lock);
1405
1406 - cros_ec_query_all(ec_dev);
1407 + err = cros_ec_query_all(ec_dev);
1408 + if (err) {
1409 + dev_err(dev, "Cannot identify the EC: error %d\n", err);
1410 + return err;
1411 + }
1412
1413 if (ec_dev->irq) {
1414 err = request_threaded_irq(ec_dev->irq, NULL, ec_irq_thread,
1415 diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c
1416 index 1304160de168..8cd9ddf1fab9 100644
1417 --- a/drivers/mmc/core/pwrseq_simple.c
1418 +++ b/drivers/mmc/core/pwrseq_simple.c
1419 @@ -39,14 +39,18 @@ static void mmc_pwrseq_simple_set_gpios_value(struct mmc_pwrseq_simple *pwrseq,
1420 struct gpio_descs *reset_gpios = pwrseq->reset_gpios;
1421
1422 if (!IS_ERR(reset_gpios)) {
1423 - int i;
1424 - int values[reset_gpios->ndescs];
1425 + int i, *values;
1426 + int nvalues = reset_gpios->ndescs;
1427
1428 - for (i = 0; i < reset_gpios->ndescs; i++)
1429 + values = kmalloc_array(nvalues, sizeof(int), GFP_KERNEL);
1430 + if (!values)
1431 + return;
1432 +
1433 + for (i = 0; i < nvalues; i++)
1434 values[i] = value;
1435
1436 - gpiod_set_array_value_cansleep(
1437 - reset_gpios->ndescs, reset_gpios->desc, values);
1438 + gpiod_set_array_value_cansleep(nvalues, reset_gpios->desc, values);
1439 + kfree(values);
1440 }
1441 }
1442
1443 diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
1444 index 1a1501fde010..e10a00d0d44d 100644
1445 --- a/drivers/mmc/host/dw_mmc.c
1446 +++ b/drivers/mmc/host/dw_mmc.c
1447 @@ -1164,6 +1164,8 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
1448 if (host->state == STATE_WAITING_CMD11_DONE)
1449 sdmmc_cmd_bits |= SDMMC_CMD_VOLT_SWITCH;
1450
1451 + slot->mmc->actual_clock = 0;
1452 +
1453 if (!clock) {
1454 mci_writel(host, CLKENA, 0);
1455 mci_send_cmd(slot, sdmmc_cmd_bits, 0);
1456 @@ -1209,6 +1211,8 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
1457
1458 /* keep the last clock value that was requested from core */
1459 slot->__clk_old = clock;
1460 + slot->mmc->actual_clock = div ? ((host->bus_hz / div) >> 1) :
1461 + host->bus_hz;
1462 }
1463
1464 host->current_speed = clock;
1465 diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
1466 index 2f6b55229d5b..4c3b986dd74d 100644
1467 --- a/drivers/mtd/nand/fsl_ifc_nand.c
1468 +++ b/drivers/mtd/nand/fsl_ifc_nand.c
1469 @@ -372,9 +372,16 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
1470
1471 case NAND_CMD_READID:
1472 case NAND_CMD_PARAM: {
1473 + /*
1474 + * For READID, read 8 bytes that are currently used.
1475 + * For PARAM, read all 3 copies of 256-bytes pages.
1476 + */
1477 + int len = 8;
1478 int timing = IFC_FIR_OP_RB;
1479 - if (command == NAND_CMD_PARAM)
1480 + if (command == NAND_CMD_PARAM) {
1481 timing = IFC_FIR_OP_RBCD;
1482 + len = 256 * 3;
1483 + }
1484
1485 ifc_out32((IFC_FIR_OP_CW0 << IFC_NAND_FIR0_OP0_SHIFT) |
1486 (IFC_FIR_OP_UA << IFC_NAND_FIR0_OP1_SHIFT) |
1487 @@ -384,12 +391,8 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
1488 &ifc->ifc_nand.nand_fcr0);
1489 ifc_out32(column, &ifc->ifc_nand.row3);
1490
1491 - /*
1492 - * although currently it's 8 bytes for READID, we always read
1493 - * the maximum 256 bytes(for PARAM)
1494 - */
1495 - ifc_out32(256, &ifc->ifc_nand.nand_fbcr);
1496 - ifc_nand_ctrl->read_bytes = 256;
1497 + ifc_out32(len, &ifc->ifc_nand.nand_fbcr);
1498 + ifc_nand_ctrl->read_bytes = len;
1499
1500 set_addr(mtd, 0, 0, 0);
1501 fsl_ifc_run_command(mtd);
1502 diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
1503 index b3df70d07ff6..7f64a76acd37 100644
1504 --- a/drivers/net/dsa/qca8k.c
1505 +++ b/drivers/net/dsa/qca8k.c
1506 @@ -474,7 +474,7 @@ qca8k_set_pad_ctrl(struct qca8k_priv *priv, int port, int mode)
1507 static void
1508 qca8k_port_set_status(struct qca8k_priv *priv, int port, int enable)
1509 {
1510 - u32 mask = QCA8K_PORT_STATUS_TXMAC;
1511 + u32 mask = QCA8K_PORT_STATUS_TXMAC | QCA8K_PORT_STATUS_RXMAC;
1512
1513 /* Port 0 and 6 have no internal PHY */
1514 if ((port > 0) && (port < 6))
1515 @@ -491,6 +491,7 @@ qca8k_setup(struct dsa_switch *ds)
1516 {
1517 struct qca8k_priv *priv = (struct qca8k_priv *)ds->priv;
1518 int ret, i, phy_mode = -1;
1519 + u32 mask;
1520
1521 /* Make sure that port 0 is the cpu port */
1522 if (!dsa_is_cpu_port(ds, 0)) {
1523 @@ -516,7 +517,10 @@ qca8k_setup(struct dsa_switch *ds)
1524 if (ret < 0)
1525 return ret;
1526
1527 - /* Enable CPU Port */
1528 + /* Enable CPU Port, force it to maximum bandwidth and full-duplex */
1529 + mask = QCA8K_PORT_STATUS_SPEED_1000 | QCA8K_PORT_STATUS_TXFLOW |
1530 + QCA8K_PORT_STATUS_RXFLOW | QCA8K_PORT_STATUS_DUPLEX;
1531 + qca8k_write(priv, QCA8K_REG_PORT_STATUS(QCA8K_CPU_PORT), mask);
1532 qca8k_reg_set(priv, QCA8K_REG_GLOBAL_FW_CTRL0,
1533 QCA8K_GLOBAL_FW_CTRL0_CPU_PORT_EN);
1534 qca8k_port_set_status(priv, QCA8K_CPU_PORT, 1);
1535 @@ -585,6 +589,47 @@ qca8k_setup(struct dsa_switch *ds)
1536 return 0;
1537 }
1538
1539 +static void
1540 +qca8k_adjust_link(struct dsa_switch *ds, int port, struct phy_device *phy)
1541 +{
1542 + struct qca8k_priv *priv = ds->priv;
1543 + u32 reg;
1544 +
1545 + /* Force fixed-link setting for CPU port, skip others. */
1546 + if (!phy_is_pseudo_fixed_link(phy))
1547 + return;
1548 +
1549 + /* Set port speed */
1550 + switch (phy->speed) {
1551 + case 10:
1552 + reg = QCA8K_PORT_STATUS_SPEED_10;
1553 + break;
1554 + case 100:
1555 + reg = QCA8K_PORT_STATUS_SPEED_100;
1556 + break;
1557 + case 1000:
1558 + reg = QCA8K_PORT_STATUS_SPEED_1000;
1559 + break;
1560 + default:
1561 + dev_dbg(priv->dev, "port%d link speed %dMbps not supported.\n",
1562 + port, phy->speed);
1563 + return;
1564 + }
1565 +
1566 + /* Set duplex mode */
1567 + if (phy->duplex == DUPLEX_FULL)
1568 + reg |= QCA8K_PORT_STATUS_DUPLEX;
1569 +
1570 + /* Force flow control */
1571 + if (dsa_is_cpu_port(ds, port))
1572 + reg |= QCA8K_PORT_STATUS_RXFLOW | QCA8K_PORT_STATUS_TXFLOW;
1573 +
1574 + /* Force link down before changing MAC options */
1575 + qca8k_port_set_status(priv, port, 0);
1576 + qca8k_write(priv, QCA8K_REG_PORT_STATUS(port), reg);
1577 + qca8k_port_set_status(priv, port, 1);
1578 +}
1579 +
1580 static int
1581 qca8k_phy_read(struct dsa_switch *ds, int phy, int regnum)
1582 {
1583 @@ -914,6 +959,7 @@ qca8k_get_tag_protocol(struct dsa_switch *ds)
1584 static struct dsa_switch_ops qca8k_switch_ops = {
1585 .get_tag_protocol = qca8k_get_tag_protocol,
1586 .setup = qca8k_setup,
1587 + .adjust_link = qca8k_adjust_link,
1588 .get_strings = qca8k_get_strings,
1589 .phy_read = qca8k_phy_read,
1590 .phy_write = qca8k_phy_write,
1591 @@ -946,6 +992,7 @@ qca8k_sw_probe(struct mdio_device *mdiodev)
1592 return -ENOMEM;
1593
1594 priv->bus = mdiodev->bus;
1595 + priv->dev = &mdiodev->dev;
1596
1597 /* read the switches ID register */
1598 id = qca8k_read(priv, QCA8K_REG_MASK_CTRL);
1599 @@ -1018,6 +1065,7 @@ static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
1600 qca8k_suspend, qca8k_resume);
1601
1602 static const struct of_device_id qca8k_of_match[] = {
1603 + { .compatible = "qca,qca8334" },
1604 { .compatible = "qca,qca8337" },
1605 { /* sentinel */ },
1606 };
1607 diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h
1608 index 201464719531..9c22bc3210cd 100644
1609 --- a/drivers/net/dsa/qca8k.h
1610 +++ b/drivers/net/dsa/qca8k.h
1611 @@ -51,8 +51,10 @@
1612 #define QCA8K_GOL_MAC_ADDR0 0x60
1613 #define QCA8K_GOL_MAC_ADDR1 0x64
1614 #define QCA8K_REG_PORT_STATUS(_i) (0x07c + (_i) * 4)
1615 -#define QCA8K_PORT_STATUS_SPEED GENMASK(2, 0)
1616 -#define QCA8K_PORT_STATUS_SPEED_S 0
1617 +#define QCA8K_PORT_STATUS_SPEED GENMASK(1, 0)
1618 +#define QCA8K_PORT_STATUS_SPEED_10 0
1619 +#define QCA8K_PORT_STATUS_SPEED_100 0x1
1620 +#define QCA8K_PORT_STATUS_SPEED_1000 0x2
1621 #define QCA8K_PORT_STATUS_TXMAC BIT(2)
1622 #define QCA8K_PORT_STATUS_RXMAC BIT(3)
1623 #define QCA8K_PORT_STATUS_TXFLOW BIT(4)
1624 @@ -167,6 +169,7 @@ struct qca8k_priv {
1625 struct ar8xxx_port_status port_sts[QCA8K_NUM_PORTS];
1626 struct dsa_switch *ds;
1627 struct mutex reg_mutex;
1628 + struct device *dev;
1629 };
1630
1631 struct qca8k_mib_desc {
1632 diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1633 index ca57eb56c717..8777c3a4c095 100644
1634 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1635 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1636 @@ -5257,6 +5257,9 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
1637 }
1638 mutex_unlock(&bp->hwrm_cmd_lock);
1639
1640 + if (!BNXT_SINGLE_PF(bp))
1641 + return 0;
1642 +
1643 diff = link_info->support_auto_speeds ^ link_info->advertising;
1644 if ((link_info->support_auto_speeds | diff) !=
1645 link_info->support_auto_speeds) {
1646 diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
1647 index 1499ce2bf9f6..029513294984 100644
1648 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
1649 +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
1650 @@ -3729,6 +3729,7 @@ static int ixgbevf_set_mac(struct net_device *netdev, void *p)
1651 return -EPERM;
1652
1653 ether_addr_copy(hw->mac.addr, addr->sa_data);
1654 + ether_addr_copy(hw->mac.perm_addr, addr->sa_data);
1655 ether_addr_copy(netdev->dev_addr, addr->sa_data);
1656
1657 return 0;
1658 diff --git a/drivers/net/ethernet/ti/cpsw-phy-sel.c b/drivers/net/ethernet/ti/cpsw-phy-sel.c
1659 index 18013645e76c..0c1adad7415d 100644
1660 --- a/drivers/net/ethernet/ti/cpsw-phy-sel.c
1661 +++ b/drivers/net/ethernet/ti/cpsw-phy-sel.c
1662 @@ -177,12 +177,18 @@ void cpsw_phy_sel(struct device *dev, phy_interface_t phy_mode, int slave)
1663 }
1664
1665 dev = bus_find_device(&platform_bus_type, NULL, node, match);
1666 - of_node_put(node);
1667 + if (!dev) {
1668 + dev_err(dev, "unable to find platform device for %pOF\n", node);
1669 + goto out;
1670 + }
1671 +
1672 priv = dev_get_drvdata(dev);
1673
1674 priv->cpsw_phy_sel(priv, phy_mode, slave);
1675
1676 put_device(dev);
1677 +out:
1678 + of_node_put(node);
1679 }
1680 EXPORT_SYMBOL_GPL(cpsw_phy_sel);
1681
1682 diff --git a/drivers/net/wireless/ath/regd.h b/drivers/net/wireless/ath/regd.h
1683 index 565d3075f06e..8553ab44d930 100644
1684 --- a/drivers/net/wireless/ath/regd.h
1685 +++ b/drivers/net/wireless/ath/regd.h
1686 @@ -68,12 +68,14 @@ enum CountryCode {
1687 CTRY_AUSTRALIA = 36,
1688 CTRY_AUSTRIA = 40,
1689 CTRY_AZERBAIJAN = 31,
1690 + CTRY_BAHAMAS = 44,
1691 CTRY_BAHRAIN = 48,
1692 CTRY_BANGLADESH = 50,
1693 CTRY_BARBADOS = 52,
1694 CTRY_BELARUS = 112,
1695 CTRY_BELGIUM = 56,
1696 CTRY_BELIZE = 84,
1697 + CTRY_BERMUDA = 60,
1698 CTRY_BOLIVIA = 68,
1699 CTRY_BOSNIA_HERZ = 70,
1700 CTRY_BRAZIL = 76,
1701 @@ -159,6 +161,7 @@ enum CountryCode {
1702 CTRY_ROMANIA = 642,
1703 CTRY_RUSSIA = 643,
1704 CTRY_SAUDI_ARABIA = 682,
1705 + CTRY_SERBIA = 688,
1706 CTRY_SERBIA_MONTENEGRO = 891,
1707 CTRY_SINGAPORE = 702,
1708 CTRY_SLOVAKIA = 703,
1709 @@ -170,11 +173,13 @@ enum CountryCode {
1710 CTRY_SWITZERLAND = 756,
1711 CTRY_SYRIA = 760,
1712 CTRY_TAIWAN = 158,
1713 + CTRY_TANZANIA = 834,
1714 CTRY_THAILAND = 764,
1715 CTRY_TRINIDAD_Y_TOBAGO = 780,
1716 CTRY_TUNISIA = 788,
1717 CTRY_TURKEY = 792,
1718 CTRY_UAE = 784,
1719 + CTRY_UGANDA = 800,
1720 CTRY_UKRAINE = 804,
1721 CTRY_UNITED_KINGDOM = 826,
1722 CTRY_UNITED_STATES = 840,
1723 diff --git a/drivers/net/wireless/ath/regd_common.h b/drivers/net/wireless/ath/regd_common.h
1724 index bdd2b4d61f2f..15bbd1e0d912 100644
1725 --- a/drivers/net/wireless/ath/regd_common.h
1726 +++ b/drivers/net/wireless/ath/regd_common.h
1727 @@ -35,6 +35,7 @@ enum EnumRd {
1728 FRANCE_RES = 0x31,
1729 FCC3_FCCA = 0x3A,
1730 FCC3_WORLD = 0x3B,
1731 + FCC3_ETSIC = 0x3F,
1732
1733 ETSI1_WORLD = 0x37,
1734 ETSI3_ETSIA = 0x32,
1735 @@ -44,6 +45,7 @@ enum EnumRd {
1736 ETSI4_ETSIC = 0x38,
1737 ETSI5_WORLD = 0x39,
1738 ETSI6_WORLD = 0x34,
1739 + ETSI8_WORLD = 0x3D,
1740 ETSI_RESERVED = 0x33,
1741
1742 MKK1_MKKA = 0x40,
1743 @@ -59,6 +61,7 @@ enum EnumRd {
1744 MKK1_MKKA1 = 0x4A,
1745 MKK1_MKKA2 = 0x4B,
1746 MKK1_MKKC = 0x4C,
1747 + APL2_FCCA = 0x4D,
1748
1749 APL3_FCCA = 0x50,
1750 APL1_WORLD = 0x52,
1751 @@ -67,6 +70,7 @@ enum EnumRd {
1752 APL1_ETSIC = 0x55,
1753 APL2_ETSIC = 0x56,
1754 APL5_WORLD = 0x58,
1755 + APL13_WORLD = 0x5A,
1756 APL6_WORLD = 0x5B,
1757 APL7_FCCA = 0x5C,
1758 APL8_WORLD = 0x5D,
1759 @@ -168,6 +172,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
1760 {FCC2_ETSIC, CTL_FCC, CTL_ETSI},
1761 {FCC3_FCCA, CTL_FCC, CTL_FCC},
1762 {FCC3_WORLD, CTL_FCC, CTL_ETSI},
1763 + {FCC3_ETSIC, CTL_FCC, CTL_ETSI},
1764 {FCC4_FCCA, CTL_FCC, CTL_FCC},
1765 {FCC5_FCCA, CTL_FCC, CTL_FCC},
1766 {FCC6_FCCA, CTL_FCC, CTL_FCC},
1767 @@ -179,6 +184,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
1768 {ETSI4_WORLD, CTL_ETSI, CTL_ETSI},
1769 {ETSI5_WORLD, CTL_ETSI, CTL_ETSI},
1770 {ETSI6_WORLD, CTL_ETSI, CTL_ETSI},
1771 + {ETSI8_WORLD, CTL_ETSI, CTL_ETSI},
1772
1773 /* XXX: For ETSI3_ETSIA, Was NO_CTL meant for the 2 GHz band ? */
1774 {ETSI3_ETSIA, CTL_ETSI, CTL_ETSI},
1775 @@ -188,9 +194,11 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
1776 {FCC1_FCCA, CTL_FCC, CTL_FCC},
1777 {APL1_WORLD, CTL_FCC, CTL_ETSI},
1778 {APL2_WORLD, CTL_FCC, CTL_ETSI},
1779 + {APL2_FCCA, CTL_FCC, CTL_FCC},
1780 {APL3_WORLD, CTL_FCC, CTL_ETSI},
1781 {APL4_WORLD, CTL_FCC, CTL_ETSI},
1782 {APL5_WORLD, CTL_FCC, CTL_ETSI},
1783 + {APL13_WORLD, CTL_ETSI, CTL_ETSI},
1784 {APL6_WORLD, CTL_ETSI, CTL_ETSI},
1785 {APL8_WORLD, CTL_ETSI, CTL_ETSI},
1786 {APL9_WORLD, CTL_ETSI, CTL_ETSI},
1787 @@ -298,6 +306,7 @@ static struct country_code_to_enum_rd allCountries[] = {
1788 {CTRY_AUSTRALIA2, FCC6_WORLD, "AU"},
1789 {CTRY_AUSTRIA, ETSI1_WORLD, "AT"},
1790 {CTRY_AZERBAIJAN, ETSI4_WORLD, "AZ"},
1791 + {CTRY_BAHAMAS, FCC3_WORLD, "BS"},
1792 {CTRY_BAHRAIN, APL6_WORLD, "BH"},
1793 {CTRY_BANGLADESH, NULL1_WORLD, "BD"},
1794 {CTRY_BARBADOS, FCC2_WORLD, "BB"},
1795 @@ -305,6 +314,7 @@ static struct country_code_to_enum_rd allCountries[] = {
1796 {CTRY_BELGIUM, ETSI1_WORLD, "BE"},
1797 {CTRY_BELGIUM2, ETSI4_WORLD, "BL"},
1798 {CTRY_BELIZE, APL1_ETSIC, "BZ"},
1799 + {CTRY_BERMUDA, FCC3_FCCA, "BM"},
1800 {CTRY_BOLIVIA, APL1_ETSIC, "BO"},
1801 {CTRY_BOSNIA_HERZ, ETSI1_WORLD, "BA"},
1802 {CTRY_BRAZIL, FCC3_WORLD, "BR"},
1803 @@ -444,6 +454,7 @@ static struct country_code_to_enum_rd allCountries[] = {
1804 {CTRY_ROMANIA, NULL1_WORLD, "RO"},
1805 {CTRY_RUSSIA, NULL1_WORLD, "RU"},
1806 {CTRY_SAUDI_ARABIA, NULL1_WORLD, "SA"},
1807 + {CTRY_SERBIA, ETSI1_WORLD, "RS"},
1808 {CTRY_SERBIA_MONTENEGRO, ETSI1_WORLD, "CS"},
1809 {CTRY_SINGAPORE, APL6_WORLD, "SG"},
1810 {CTRY_SLOVAKIA, ETSI1_WORLD, "SK"},
1811 @@ -455,10 +466,12 @@ static struct country_code_to_enum_rd allCountries[] = {
1812 {CTRY_SWITZERLAND, ETSI1_WORLD, "CH"},
1813 {CTRY_SYRIA, NULL1_WORLD, "SY"},
1814 {CTRY_TAIWAN, APL3_FCCA, "TW"},
1815 + {CTRY_TANZANIA, APL1_WORLD, "TZ"},
1816 {CTRY_THAILAND, FCC3_WORLD, "TH"},
1817 {CTRY_TRINIDAD_Y_TOBAGO, FCC3_WORLD, "TT"},
1818 {CTRY_TUNISIA, ETSI3_WORLD, "TN"},
1819 {CTRY_TURKEY, ETSI3_WORLD, "TR"},
1820 + {CTRY_UGANDA, FCC3_WORLD, "UG"},
1821 {CTRY_UKRAINE, NULL1_WORLD, "UA"},
1822 {CTRY_UAE, NULL1_WORLD, "AE"},
1823 {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB"},
1824 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
1825 index 746f8c9a891d..e69cf0ef9574 100644
1826 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
1827 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
1828 @@ -1099,6 +1099,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
1829 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43340),
1830 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43341),
1831 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43362),
1832 + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43364),
1833 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339),
1834 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339),
1835 BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43430),
1836 diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1837 index 6fe5546dc773..996a928142ad 100644
1838 --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1839 +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1840 @@ -898,6 +898,8 @@ int iwl_pcie_rx_init(struct iwl_trans *trans)
1841 WQ_HIGHPRI | WQ_UNBOUND, 1);
1842 INIT_WORK(&rba->rx_alloc, iwl_pcie_rx_allocator_work);
1843
1844 + cancel_work_sync(&rba->rx_alloc);
1845 +
1846 spin_lock(&rba->lock);
1847 atomic_set(&rba->req_pending, 0);
1848 atomic_set(&rba->req_ready, 0);
1849 diff --git a/drivers/net/wireless/marvell/mwifiex/usb.c b/drivers/net/wireless/marvell/mwifiex/usb.c
1850 index 73eb0846db21..09185a1f7379 100644
1851 --- a/drivers/net/wireless/marvell/mwifiex/usb.c
1852 +++ b/drivers/net/wireless/marvell/mwifiex/usb.c
1853 @@ -624,6 +624,9 @@ static void mwifiex_usb_disconnect(struct usb_interface *intf)
1854 MWIFIEX_FUNC_SHUTDOWN);
1855 }
1856
1857 + if (adapter->workqueue)
1858 + flush_workqueue(adapter->workqueue);
1859 +
1860 mwifiex_usb_free(card);
1861
1862 mwifiex_dbg(adapter, FATAL,
1863 diff --git a/drivers/net/wireless/marvell/mwifiex/util.c b/drivers/net/wireless/marvell/mwifiex/util.c
1864 index 18fbb96a46e9..d75756c68e16 100644
1865 --- a/drivers/net/wireless/marvell/mwifiex/util.c
1866 +++ b/drivers/net/wireless/marvell/mwifiex/util.c
1867 @@ -723,12 +723,14 @@ void mwifiex_hist_data_set(struct mwifiex_private *priv, u8 rx_rate, s8 snr,
1868 s8 nflr)
1869 {
1870 struct mwifiex_histogram_data *phist_data = priv->hist_data;
1871 + s8 nf = -nflr;
1872 + s8 rssi = snr - nflr;
1873
1874 atomic_inc(&phist_data->num_samples);
1875 atomic_inc(&phist_data->rx_rate[rx_rate]);
1876 - atomic_inc(&phist_data->snr[snr]);
1877 - atomic_inc(&phist_data->noise_flr[128 + nflr]);
1878 - atomic_inc(&phist_data->sig_str[nflr - snr]);
1879 + atomic_inc(&phist_data->snr[snr + 128]);
1880 + atomic_inc(&phist_data->noise_flr[nf + 128]);
1881 + atomic_inc(&phist_data->sig_str[rssi + 128]);
1882 }
1883
1884 /* function to reset histogram data during init/reset */
1885 diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c
1886 index 8428858204a6..fc895b466ebb 100644
1887 --- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
1888 +++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
1889 @@ -155,7 +155,6 @@ static void rsi_reset_card(struct sdio_func *pfunction)
1890 int err;
1891 struct mmc_card *card = pfunction->card;
1892 struct mmc_host *host = card->host;
1893 - s32 bit = (fls(host->ocr_avail) - 1);
1894 u8 cmd52_resp;
1895 u32 clock, resp, i;
1896 u16 rca;
1897 @@ -175,7 +174,6 @@ static void rsi_reset_card(struct sdio_func *pfunction)
1898 msleep(20);
1899
1900 /* Initialize the SDIO card */
1901 - host->ios.vdd = bit;
1902 host->ios.chip_select = MMC_CS_DONTCARE;
1903 host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN;
1904 host->ios.power_mode = MMC_POWER_UP;
1905 diff --git a/drivers/net/wireless/ti/wlcore/sdio.c b/drivers/net/wireless/ti/wlcore/sdio.c
1906 index 47fe7f96a242..6921cb0bf563 100644
1907 --- a/drivers/net/wireless/ti/wlcore/sdio.c
1908 +++ b/drivers/net/wireless/ti/wlcore/sdio.c
1909 @@ -404,6 +404,11 @@ static int wl1271_suspend(struct device *dev)
1910 mmc_pm_flag_t sdio_flags;
1911 int ret = 0;
1912
1913 + if (!wl) {
1914 + dev_err(dev, "no wilink module was probed\n");
1915 + goto out;
1916 + }
1917 +
1918 dev_dbg(dev, "wl1271 suspend. wow_enabled: %d\n",
1919 wl->wow_enabled);
1920
1921 diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
1922 index 520050eae836..a5908e4c06cb 100644
1923 --- a/drivers/net/xen-netfront.c
1924 +++ b/drivers/net/xen-netfront.c
1925 @@ -238,7 +238,7 @@ static void rx_refill_timeout(unsigned long data)
1926 static int netfront_tx_slot_available(struct netfront_queue *queue)
1927 {
1928 return (queue->tx.req_prod_pvt - queue->tx.rsp_cons) <
1929 - (NET_TX_RING_SIZE - MAX_SKB_FRAGS - 2);
1930 + (NET_TX_RING_SIZE - XEN_NETIF_NR_SLOTS_MIN - 1);
1931 }
1932
1933 static void xennet_maybe_wake_tx(struct netfront_queue *queue)
1934 @@ -789,7 +789,7 @@ static int xennet_get_responses(struct netfront_queue *queue,
1935 RING_IDX cons = queue->rx.rsp_cons;
1936 struct sk_buff *skb = xennet_get_rx_skb(queue, cons);
1937 grant_ref_t ref = xennet_get_rx_ref(queue, cons);
1938 - int max = MAX_SKB_FRAGS + (rx->status <= RX_COPY_THRESHOLD);
1939 + int max = XEN_NETIF_NR_SLOTS_MIN + (rx->status <= RX_COPY_THRESHOLD);
1940 int slots = 1;
1941 int err = 0;
1942 unsigned long ret;
1943 diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
1944 index 1b4d93e9157e..824e282cd80e 100644
1945 --- a/drivers/nvmem/core.c
1946 +++ b/drivers/nvmem/core.c
1947 @@ -1031,6 +1031,8 @@ static inline void *nvmem_cell_prepare_write_buffer(struct nvmem_cell *cell,
1948
1949 /* setup the first byte with lsb bits from nvmem */
1950 rc = nvmem_reg_read(nvmem, cell->offset, &v, 1);
1951 + if (rc)
1952 + goto err;
1953 *b++ |= GENMASK(bit_offset - 1, 0) & v;
1954
1955 /* setup rest of the byte if any */
1956 @@ -1049,11 +1051,16 @@ static inline void *nvmem_cell_prepare_write_buffer(struct nvmem_cell *cell,
1957 /* setup the last byte with msb bits from nvmem */
1958 rc = nvmem_reg_read(nvmem,
1959 cell->offset + cell->bytes - 1, &v, 1);
1960 + if (rc)
1961 + goto err;
1962 *p |= GENMASK(7, (nbits + bit_offset) % BITS_PER_BYTE) & v;
1963
1964 }
1965
1966 return buf;
1967 +err:
1968 + kfree(buf);
1969 + return ERR_PTR(rc);
1970 }
1971
1972 /**
1973 diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
1974 index f9f4d1c18eb2..e5d8e2e2bd30 100644
1975 --- a/drivers/pci/pci-sysfs.c
1976 +++ b/drivers/pci/pci-sysfs.c
1977 @@ -180,13 +180,16 @@ static ssize_t enable_store(struct device *dev, struct device_attribute *attr,
1978 if (!capable(CAP_SYS_ADMIN))
1979 return -EPERM;
1980
1981 - if (!val) {
1982 - if (pci_is_enabled(pdev))
1983 - pci_disable_device(pdev);
1984 - else
1985 - result = -EIO;
1986 - } else
1987 + device_lock(dev);
1988 + if (dev->driver)
1989 + result = -EBUSY;
1990 + else if (val)
1991 result = pci_enable_device(pdev);
1992 + else if (pci_is_enabled(pdev))
1993 + pci_disable_device(pdev);
1994 + else
1995 + result = -EIO;
1996 + device_unlock(dev);
1997
1998 return result < 0 ? result : count;
1999 }
2000 diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
2001 index 28bbc1bb9e6c..88ba9c50cc8e 100644
2002 --- a/drivers/pinctrl/pinctrl-at91-pio4.c
2003 +++ b/drivers/pinctrl/pinctrl-at91-pio4.c
2004 @@ -573,8 +573,10 @@ static int atmel_pctl_dt_node_to_map(struct pinctrl_dev *pctldev,
2005 for_each_child_of_node(np_config, np) {
2006 ret = atmel_pctl_dt_subnode_to_map(pctldev, np, map,
2007 &reserved_maps, num_maps);
2008 - if (ret < 0)
2009 + if (ret < 0) {
2010 + of_node_put(np);
2011 break;
2012 + }
2013 }
2014 }
2015
2016 diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
2017 index cb18b5c4f2db..86b348740fcd 100644
2018 --- a/drivers/regulator/pfuze100-regulator.c
2019 +++ b/drivers/regulator/pfuze100-regulator.c
2020 @@ -153,6 +153,7 @@ static struct regulator_ops pfuze100_sw_regulator_ops = {
2021 static struct regulator_ops pfuze100_swb_regulator_ops = {
2022 .enable = regulator_enable_regmap,
2023 .disable = regulator_disable_regmap,
2024 + .is_enabled = regulator_is_enabled_regmap,
2025 .list_voltage = regulator_list_voltage_table,
2026 .map_voltage = regulator_map_voltage_ascend,
2027 .set_voltage_sel = regulator_set_voltage_sel_regmap,
2028 diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c
2029 index 25cf3069e2e7..4131bfb2cc61 100644
2030 --- a/drivers/rtc/interface.c
2031 +++ b/drivers/rtc/interface.c
2032 @@ -359,6 +359,11 @@ int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
2033 {
2034 int err;
2035
2036 + if (!rtc->ops)
2037 + return -ENODEV;
2038 + else if (!rtc->ops->set_alarm)
2039 + return -EINVAL;
2040 +
2041 err = rtc_valid_tm(&alarm->time);
2042 if (err != 0)
2043 return err;
2044 diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c
2045 index a56a7b243e91..5466246c69b4 100644
2046 --- a/drivers/scsi/3w-9xxx.c
2047 +++ b/drivers/scsi/3w-9xxx.c
2048 @@ -889,6 +889,11 @@ static int twa_chrdev_open(struct inode *inode, struct file *file)
2049 unsigned int minor_number;
2050 int retval = TW_IOCTL_ERROR_OS_ENODEV;
2051
2052 + if (!capable(CAP_SYS_ADMIN)) {
2053 + retval = -EACCES;
2054 + goto out;
2055 + }
2056 +
2057 minor_number = iminor(inode);
2058 if (minor_number >= twa_device_extension_count)
2059 goto out;
2060 diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
2061 index 25aba1613e21..24ac19e31003 100644
2062 --- a/drivers/scsi/3w-xxxx.c
2063 +++ b/drivers/scsi/3w-xxxx.c
2064 @@ -1034,6 +1034,9 @@ static int tw_chrdev_open(struct inode *inode, struct file *file)
2065
2066 dprintk(KERN_WARNING "3w-xxxx: tw_ioctl_open()\n");
2067
2068 + if (!capable(CAP_SYS_ADMIN))
2069 + return -EACCES;
2070 +
2071 minor_number = iminor(inode);
2072 if (minor_number >= tw_device_extension_count)
2073 return -ENODEV;
2074 diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
2075 index 9d05302a3bcd..19bffe0b2cc0 100644
2076 --- a/drivers/scsi/megaraid.c
2077 +++ b/drivers/scsi/megaraid.c
2078 @@ -4197,6 +4197,9 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
2079 int irq, i, j;
2080 int error = -ENODEV;
2081
2082 + if (hba_count >= MAX_CONTROLLERS)
2083 + goto out;
2084 +
2085 if (pci_enable_device(pdev))
2086 goto out;
2087 pci_set_master(pdev);
2088 diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
2089 index a156451553a7..f722a0e6caa4 100644
2090 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
2091 +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
2092 @@ -2031,6 +2031,9 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
2093 pRAID_Context->timeoutValue = cpu_to_le16(os_timeout_value);
2094 pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
2095 } else {
2096 + if (os_timeout_value)
2097 + os_timeout_value++;
2098 +
2099 /* system pd Fast Path */
2100 io_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
2101 timeout_limit = (scmd->device->type == TYPE_DISK) ?
2102 diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c
2103 index a5e30e9449ef..375cede0c534 100644
2104 --- a/drivers/scsi/scsi_dh.c
2105 +++ b/drivers/scsi/scsi_dh.c
2106 @@ -58,7 +58,10 @@ static const struct scsi_dh_blist scsi_dh_blist[] = {
2107 {"IBM", "3526", "rdac", },
2108 {"IBM", "3542", "rdac", },
2109 {"IBM", "3552", "rdac", },
2110 - {"SGI", "TP9", "rdac", },
2111 + {"SGI", "TP9300", "rdac", },
2112 + {"SGI", "TP9400", "rdac", },
2113 + {"SGI", "TP9500", "rdac", },
2114 + {"SGI", "TP9700", "rdac", },
2115 {"SGI", "IS", "rdac", },
2116 {"STK", "OPENstorage", "rdac", },
2117 {"STK", "FLEXLINE 380", "rdac", },
2118 diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
2119 index 86a3110c6d75..f857086ce2fa 100644
2120 --- a/drivers/scsi/ufs/ufshcd.c
2121 +++ b/drivers/scsi/ufs/ufshcd.c
2122 @@ -4012,6 +4012,7 @@ static void ufshcd_exception_event_handler(struct work_struct *work)
2123 hba = container_of(work, struct ufs_hba, eeh_work);
2124
2125 pm_runtime_get_sync(hba->dev);
2126 + scsi_block_requests(hba->host);
2127 err = ufshcd_get_ee_status(hba, &status);
2128 if (err) {
2129 dev_err(hba->dev, "%s: failed to get exception status %d\n",
2130 @@ -4025,6 +4026,7 @@ static void ufshcd_exception_event_handler(struct work_struct *work)
2131 ufshcd_bkops_exception_event_handler(hba);
2132
2133 out:
2134 + scsi_unblock_requests(hba->host);
2135 pm_runtime_put_sync(hba->dev);
2136 return;
2137 }
2138 diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
2139 index ea9a0c21d29d..4ff293129675 100644
2140 --- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
2141 +++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
2142 @@ -1299,11 +1299,6 @@ kiblnd_connect_peer(struct kib_peer *peer)
2143 goto failed2;
2144 }
2145
2146 - LASSERT(cmid->device);
2147 - CDEBUG(D_NET, "%s: connection bound to %s:%pI4h:%s\n",
2148 - libcfs_nid2str(peer->ibp_nid), dev->ibd_ifname,
2149 - &dev->ibd_ifip, cmid->device->name);
2150 -
2151 return;
2152
2153 failed2:
2154 @@ -3005,8 +3000,19 @@ kiblnd_cm_callback(struct rdma_cm_id *cmid, struct rdma_cm_event *event)
2155 } else {
2156 rc = rdma_resolve_route(
2157 cmid, *kiblnd_tunables.kib_timeout * 1000);
2158 - if (!rc)
2159 + if (!rc) {
2160 + struct kib_net *net = peer->ibp_ni->ni_data;
2161 + struct kib_dev *dev = net->ibn_dev;
2162 +
2163 + CDEBUG(D_NET, "%s: connection bound to "\
2164 + "%s:%pI4h:%s\n",
2165 + libcfs_nid2str(peer->ibp_nid),
2166 + dev->ibd_ifname,
2167 + &dev->ibd_ifip, cmid->device->name);
2168 +
2169 return 0;
2170 + }
2171 +
2172 /* Can't initiate route resolution */
2173 CERROR("Can't resolve route for %s: %d\n",
2174 libcfs_nid2str(peer->ibp_nid), rc);
2175 diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
2176 index d18ab3f28c70..9addcdbe9374 100644
2177 --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
2178 +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
2179 @@ -1489,8 +1489,10 @@ struct ldlm_lock *ldlm_lock_create(struct ldlm_namespace *ns,
2180 return ERR_CAST(res);
2181
2182 lock = ldlm_lock_new(res);
2183 - if (!lock)
2184 + if (!lock) {
2185 + ldlm_resource_putref(res);
2186 return ERR_PTR(-ENOMEM);
2187 + }
2188
2189 lock->l_req_mode = mode;
2190 lock->l_ast_data = data;
2191 @@ -1533,6 +1535,8 @@ out:
2192 return ERR_PTR(rc);
2193 }
2194
2195 +
2196 +
2197 /**
2198 * Enqueue (request) a lock.
2199 * On the client this is called from ldlm_cli_enqueue_fini
2200 diff --git a/drivers/staging/lustre/lustre/llite/xattr.c b/drivers/staging/lustre/lustre/llite/xattr.c
2201 index e070adb7a3cc..57121fd5f050 100644
2202 --- a/drivers/staging/lustre/lustre/llite/xattr.c
2203 +++ b/drivers/staging/lustre/lustre/llite/xattr.c
2204 @@ -103,7 +103,11 @@ ll_xattr_set_common(const struct xattr_handler *handler,
2205 __u64 valid;
2206 int rc;
2207
2208 - if (flags == XATTR_REPLACE) {
2209 + /* When setxattr() is called with a size of 0 the value is
2210 + * unconditionally replaced by "". When removexattr() is
2211 + * called we get a NULL value and XATTR_REPLACE for flags.
2212 + */
2213 + if (!value && flags == XATTR_REPLACE) {
2214 ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_REMOVEXATTR, 1);
2215 valid = OBD_MD_FLXATTRRM;
2216 } else {
2217 diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
2218 index a45810b43f70..c974cb5fb958 100644
2219 --- a/drivers/thermal/samsung/exynos_tmu.c
2220 +++ b/drivers/thermal/samsung/exynos_tmu.c
2221 @@ -598,6 +598,7 @@ static int exynos5433_tmu_initialize(struct platform_device *pdev)
2222 threshold_code = temp_to_code(data, temp);
2223
2224 rising_threshold = readl(data->base + rising_reg_offset);
2225 + rising_threshold &= ~(0xff << j * 8);
2226 rising_threshold |= (threshold_code << j * 8);
2227 writel(rising_threshold, data->base + rising_reg_offset);
2228
2229 diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
2230 index 510799311099..1fc5d5b82778 100644
2231 --- a/drivers/tty/hvc/hvc_opal.c
2232 +++ b/drivers/tty/hvc/hvc_opal.c
2233 @@ -332,7 +332,6 @@ static void udbg_init_opal_common(void)
2234 udbg_putc = udbg_opal_putc;
2235 udbg_getc = udbg_opal_getc;
2236 udbg_getc_poll = udbg_opal_getc_poll;
2237 - tb_ticks_per_usec = 0x200; /* Make udelay not suck */
2238 }
2239
2240 void __init hvc_opal_init_early(void)
2241 diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
2242 index 2b907385b4a8..171130a9ecc8 100644
2243 --- a/drivers/tty/pty.c
2244 +++ b/drivers/tty/pty.c
2245 @@ -106,16 +106,19 @@ static void pty_unthrottle(struct tty_struct *tty)
2246 static int pty_write(struct tty_struct *tty, const unsigned char *buf, int c)
2247 {
2248 struct tty_struct *to = tty->link;
2249 + unsigned long flags;
2250
2251 if (tty->stopped)
2252 return 0;
2253
2254 if (c > 0) {
2255 + spin_lock_irqsave(&to->port->lock, flags);
2256 /* Stuff the data into the input queue of the other end */
2257 c = tty_insert_flip_string(to->port, buf, c);
2258 /* And shovel */
2259 if (c)
2260 tty_flip_buffer_push(to->port);
2261 + spin_unlock_irqrestore(&to->port->lock, flags);
2262 }
2263 return c;
2264 }
2265 diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
2266 index bdb19db542a4..7aee55244b4a 100644
2267 --- a/drivers/usb/core/hub.c
2268 +++ b/drivers/usb/core/hub.c
2269 @@ -3363,6 +3363,10 @@ static int wait_for_connected(struct usb_device *udev,
2270 while (delay_ms < 2000) {
2271 if (status || *portstatus & USB_PORT_STAT_CONNECTION)
2272 break;
2273 + if (!port_is_power_on(hub, *portstatus)) {
2274 + status = -ENODEV;
2275 + break;
2276 + }
2277 msleep(20);
2278 delay_ms += 20;
2279 status = hub_port_status(hub, *port1, portstatus, portchange);
2280 diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
2281 index 0a0cf154814b..984d6aae7529 100644
2282 --- a/drivers/usb/dwc2/hcd.c
2283 +++ b/drivers/usb/dwc2/hcd.c
2284 @@ -2544,34 +2544,29 @@ static void dwc2_hc_init_xfer(struct dwc2_hsotg *hsotg,
2285
2286 #define DWC2_USB_DMA_ALIGN 4
2287
2288 -struct dma_aligned_buffer {
2289 - void *kmalloc_ptr;
2290 - void *old_xfer_buffer;
2291 - u8 data[0];
2292 -};
2293 -
2294 static void dwc2_free_dma_aligned_buffer(struct urb *urb)
2295 {
2296 - struct dma_aligned_buffer *temp;
2297 + void *stored_xfer_buffer;
2298
2299 if (!(urb->transfer_flags & URB_ALIGNED_TEMP_BUFFER))
2300 return;
2301
2302 - temp = container_of(urb->transfer_buffer,
2303 - struct dma_aligned_buffer, data);
2304 + /* Restore urb->transfer_buffer from the end of the allocated area */
2305 + memcpy(&stored_xfer_buffer, urb->transfer_buffer +
2306 + urb->transfer_buffer_length, sizeof(urb->transfer_buffer));
2307
2308 if (usb_urb_dir_in(urb))
2309 - memcpy(temp->old_xfer_buffer, temp->data,
2310 + memcpy(stored_xfer_buffer, urb->transfer_buffer,
2311 urb->transfer_buffer_length);
2312 - urb->transfer_buffer = temp->old_xfer_buffer;
2313 - kfree(temp->kmalloc_ptr);
2314 + kfree(urb->transfer_buffer);
2315 + urb->transfer_buffer = stored_xfer_buffer;
2316
2317 urb->transfer_flags &= ~URB_ALIGNED_TEMP_BUFFER;
2318 }
2319
2320 static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
2321 {
2322 - struct dma_aligned_buffer *temp, *kmalloc_ptr;
2323 + void *kmalloc_ptr;
2324 size_t kmalloc_size;
2325
2326 if (urb->num_sgs || urb->sg ||
2327 @@ -2579,22 +2574,29 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
2328 !((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1)))
2329 return 0;
2330
2331 - /* Allocate a buffer with enough padding for alignment */
2332 + /*
2333 + * Allocate a buffer with enough padding for original transfer_buffer
2334 + * pointer. This allocation is guaranteed to be aligned properly for
2335 + * DMA
2336 + */
2337 kmalloc_size = urb->transfer_buffer_length +
2338 - sizeof(struct dma_aligned_buffer) + DWC2_USB_DMA_ALIGN - 1;
2339 + sizeof(urb->transfer_buffer);
2340
2341 kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
2342 if (!kmalloc_ptr)
2343 return -ENOMEM;
2344
2345 - /* Position our struct dma_aligned_buffer such that data is aligned */
2346 - temp = PTR_ALIGN(kmalloc_ptr + 1, DWC2_USB_DMA_ALIGN) - 1;
2347 - temp->kmalloc_ptr = kmalloc_ptr;
2348 - temp->old_xfer_buffer = urb->transfer_buffer;
2349 + /*
2350 + * Position value of original urb->transfer_buffer pointer to the end
2351 + * of allocation for later referencing
2352 + */
2353 + memcpy(kmalloc_ptr + urb->transfer_buffer_length,
2354 + &urb->transfer_buffer, sizeof(urb->transfer_buffer));
2355 +
2356 if (usb_urb_dir_out(urb))
2357 - memcpy(temp->data, urb->transfer_buffer,
2358 + memcpy(kmalloc_ptr, urb->transfer_buffer,
2359 urb->transfer_buffer_length);
2360 - urb->transfer_buffer = temp->data;
2361 + urb->transfer_buffer = kmalloc_ptr;
2362
2363 urb->transfer_flags |= URB_ALIGNED_TEMP_BUFFER;
2364
2365 diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c
2366 index d78142830754..d143d08c4f0f 100644
2367 --- a/drivers/vfio/platform/vfio_platform_common.c
2368 +++ b/drivers/vfio/platform/vfio_platform_common.c
2369 @@ -696,18 +696,23 @@ int vfio_platform_probe_common(struct vfio_platform_device *vdev,
2370 group = vfio_iommu_group_get(dev);
2371 if (!group) {
2372 pr_err("VFIO: No IOMMU group for device %s\n", vdev->name);
2373 - return -EINVAL;
2374 + ret = -EINVAL;
2375 + goto put_reset;
2376 }
2377
2378 ret = vfio_add_group_dev(dev, &vfio_platform_ops, vdev);
2379 - if (ret) {
2380 - vfio_iommu_group_put(group, dev);
2381 - return ret;
2382 - }
2383 + if (ret)
2384 + goto put_iommu;
2385
2386 mutex_init(&vdev->igate);
2387
2388 return 0;
2389 +
2390 +put_iommu:
2391 + vfio_iommu_group_put(group, dev);
2392 +put_reset:
2393 + vfio_platform_put_reset(vdev);
2394 + return ret;
2395 }
2396 EXPORT_SYMBOL_GPL(vfio_platform_probe_common);
2397
2398 diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
2399 index dfd99867ff4d..9afad8c14220 100644
2400 --- a/fs/btrfs/qgroup.c
2401 +++ b/fs/btrfs/qgroup.c
2402 @@ -2236,6 +2236,21 @@ void assert_qgroups_uptodate(struct btrfs_trans_handle *trans)
2403 BUG();
2404 }
2405
2406 +/*
2407 + * Check if the leaf is the last leaf. Which means all node pointers
2408 + * are at their last position.
2409 + */
2410 +static bool is_last_leaf(struct btrfs_path *path)
2411 +{
2412 + int i;
2413 +
2414 + for (i = 1; i < BTRFS_MAX_LEVEL && path->nodes[i]; i++) {
2415 + if (path->slots[i] != btrfs_header_nritems(path->nodes[i]) - 1)
2416 + return false;
2417 + }
2418 + return true;
2419 +}
2420 +
2421 /*
2422 * returns < 0 on error, 0 when more leafs are to be scanned.
2423 * returns 1 when done.
2424 @@ -2249,6 +2264,7 @@ qgroup_rescan_leaf(struct btrfs_fs_info *fs_info, struct btrfs_path *path,
2425 struct ulist *roots = NULL;
2426 struct seq_list tree_mod_seq_elem = SEQ_LIST_INIT(tree_mod_seq_elem);
2427 u64 num_bytes;
2428 + bool done;
2429 int slot;
2430 int ret;
2431
2432 @@ -2277,6 +2293,7 @@ qgroup_rescan_leaf(struct btrfs_fs_info *fs_info, struct btrfs_path *path,
2433 mutex_unlock(&fs_info->qgroup_rescan_lock);
2434 return ret;
2435 }
2436 + done = is_last_leaf(path);
2437
2438 btrfs_item_key_to_cpu(path->nodes[0], &found,
2439 btrfs_header_nritems(path->nodes[0]) - 1);
2440 @@ -2323,6 +2340,8 @@ out:
2441 }
2442 btrfs_put_tree_mod_seq(fs_info, &tree_mod_seq_elem);
2443
2444 + if (done && !ret)
2445 + ret = 1;
2446 return ret;
2447 }
2448
2449 diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
2450 index 44d34923de9c..44966fd00790 100644
2451 --- a/fs/btrfs/tree-log.c
2452 +++ b/fs/btrfs/tree-log.c
2453 @@ -2979,8 +2979,11 @@ out_wake_log_root:
2454 mutex_unlock(&log_root_tree->log_mutex);
2455
2456 /*
2457 - * The barrier before waitqueue_active is implied by mutex_unlock
2458 + * The barrier before waitqueue_active is needed so all the updates
2459 + * above are seen by the woken threads. It might not be necessary, but
2460 + * proving that seems to be hard.
2461 */
2462 + smp_mb();
2463 if (waitqueue_active(&log_root_tree->log_commit_wait[index2]))
2464 wake_up(&log_root_tree->log_commit_wait[index2]);
2465 out:
2466 @@ -2991,8 +2994,11 @@ out:
2467 mutex_unlock(&root->log_mutex);
2468
2469 /*
2470 - * The barrier before waitqueue_active is implied by mutex_unlock
2471 + * The barrier before waitqueue_active is needed so all the updates
2472 + * above are seen by the woken threads. It might not be necessary, but
2473 + * proving that seems to be hard.
2474 */
2475 + smp_mb();
2476 if (waitqueue_active(&root->log_commit_wait[index1]))
2477 wake_up(&root->log_commit_wait[index1]);
2478 return ret;
2479 diff --git a/fs/crypto/crypto.c b/fs/crypto/crypto.c
2480 index 73de1446c8d4..1a8962569b5c 100644
2481 --- a/fs/crypto/crypto.c
2482 +++ b/fs/crypto/crypto.c
2483 @@ -517,8 +517,17 @@ EXPORT_SYMBOL(fscrypt_initialize);
2484 */
2485 static int __init fscrypt_init(void)
2486 {
2487 + /*
2488 + * Use an unbound workqueue to allow bios to be decrypted in parallel
2489 + * even when they happen to complete on the same CPU. This sacrifices
2490 + * locality, but it's worthwhile since decryption is CPU-intensive.
2491 + *
2492 + * Also use a high-priority workqueue to prioritize decryption work,
2493 + * which blocks reads from completing, over regular application tasks.
2494 + */
2495 fscrypt_read_workqueue = alloc_workqueue("fscrypt_read_queue",
2496 - WQ_HIGHPRI, 0);
2497 + WQ_UNBOUND | WQ_HIGHPRI,
2498 + num_online_cpus());
2499 if (!fscrypt_read_workqueue)
2500 goto fail;
2501
2502 diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c
2503 index ad13f07cf0d3..2455fe1446d6 100644
2504 --- a/fs/ext4/balloc.c
2505 +++ b/fs/ext4/balloc.c
2506 @@ -378,6 +378,8 @@ static int ext4_validate_block_bitmap(struct super_block *sb,
2507 return -EFSCORRUPTED;
2508
2509 ext4_lock_group(sb, block_group);
2510 + if (buffer_verified(bh))
2511 + goto verified;
2512 if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group,
2513 desc, bh))) {
2514 ext4_unlock_group(sb, block_group);
2515 @@ -400,6 +402,7 @@ static int ext4_validate_block_bitmap(struct super_block *sb,
2516 return -EFSCORRUPTED;
2517 }
2518 set_buffer_verified(bh);
2519 +verified:
2520 ext4_unlock_group(sb, block_group);
2521 return 0;
2522 }
2523 diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
2524 index 460866b2166d..ffaf66a51de3 100644
2525 --- a/fs/ext4/ialloc.c
2526 +++ b/fs/ext4/ialloc.c
2527 @@ -88,6 +88,8 @@ static int ext4_validate_inode_bitmap(struct super_block *sb,
2528 return -EFSCORRUPTED;
2529
2530 ext4_lock_group(sb, block_group);
2531 + if (buffer_verified(bh))
2532 + goto verified;
2533 blk = ext4_inode_bitmap(sb, desc);
2534 if (!ext4_inode_bitmap_csum_verify(sb, block_group, desc, bh,
2535 EXT4_INODES_PER_GROUP(sb) / 8)) {
2536 @@ -105,6 +107,7 @@ static int ext4_validate_inode_bitmap(struct super_block *sb,
2537 return -EFSBADCRC;
2538 }
2539 set_buffer_verified(bh);
2540 +verified:
2541 ext4_unlock_group(sb, block_group);
2542 return 0;
2543 }
2544 diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
2545 index e6ac24de119d..436baf7cdca3 100644
2546 --- a/fs/ext4/inline.c
2547 +++ b/fs/ext4/inline.c
2548 @@ -679,6 +679,10 @@ int ext4_try_to_write_inline_data(struct address_space *mapping,
2549 goto convert;
2550 }
2551
2552 + ret = ext4_journal_get_write_access(handle, iloc.bh);
2553 + if (ret)
2554 + goto out;
2555 +
2556 flags |= AOP_FLAG_NOFS;
2557
2558 page = grab_cache_page_write_begin(mapping, 0, flags);
2559 @@ -707,7 +711,7 @@ int ext4_try_to_write_inline_data(struct address_space *mapping,
2560 out_up_read:
2561 up_read(&EXT4_I(inode)->xattr_sem);
2562 out:
2563 - if (handle)
2564 + if (handle && (ret != 1))
2565 ext4_journal_stop(handle);
2566 brelse(iloc.bh);
2567 return ret;
2568 @@ -749,6 +753,7 @@ int ext4_write_inline_data_end(struct inode *inode, loff_t pos, unsigned len,
2569
2570 ext4_write_unlock_xattr(inode, &no_expand);
2571 brelse(iloc.bh);
2572 + mark_inode_dirty(inode);
2573 out:
2574 return copied;
2575 }
2576 @@ -895,7 +900,6 @@ retry_journal:
2577 goto out;
2578 }
2579
2580 -
2581 page = grab_cache_page_write_begin(mapping, 0, flags);
2582 if (!page) {
2583 ret = -ENOMEM;
2584 @@ -913,6 +917,9 @@ retry_journal:
2585 if (ret < 0)
2586 goto out_release_page;
2587 }
2588 + ret = ext4_journal_get_write_access(handle, iloc.bh);
2589 + if (ret)
2590 + goto out_release_page;
2591
2592 up_read(&EXT4_I(inode)->xattr_sem);
2593 *pagep = page;
2594 @@ -933,7 +940,6 @@ int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos,
2595 unsigned len, unsigned copied,
2596 struct page *page)
2597 {
2598 - int i_size_changed = 0;
2599 int ret;
2600
2601 ret = ext4_write_inline_data_end(inode, pos, len, copied, page);
2602 @@ -951,10 +957,8 @@ int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos,
2603 * But it's important to update i_size while still holding page lock:
2604 * page writeout could otherwise come in and zero beyond i_size.
2605 */
2606 - if (pos+copied > inode->i_size) {
2607 + if (pos+copied > inode->i_size)
2608 i_size_write(inode, pos+copied);
2609 - i_size_changed = 1;
2610 - }
2611 unlock_page(page);
2612 put_page(page);
2613
2614 @@ -964,8 +968,7 @@ int ext4_da_write_inline_data_end(struct inode *inode, loff_t pos,
2615 * ordering of page lock and transaction start for journaling
2616 * filesystems.
2617 */
2618 - if (i_size_changed)
2619 - mark_inode_dirty(inode);
2620 + mark_inode_dirty(inode);
2621
2622 return copied;
2623 }
2624 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
2625 index 5c4c9af4aaf4..f62eca8cbde0 100644
2626 --- a/fs/ext4/inode.c
2627 +++ b/fs/ext4/inode.c
2628 @@ -1318,9 +1318,10 @@ static int ext4_write_end(struct file *file,
2629 loff_t old_size = inode->i_size;
2630 int ret = 0, ret2;
2631 int i_size_changed = 0;
2632 + int inline_data = ext4_has_inline_data(inode);
2633
2634 trace_ext4_write_end(inode, pos, len, copied);
2635 - if (ext4_has_inline_data(inode)) {
2636 + if (inline_data) {
2637 ret = ext4_write_inline_data_end(inode, pos, len,
2638 copied, page);
2639 if (ret < 0) {
2640 @@ -1348,7 +1349,7 @@ static int ext4_write_end(struct file *file,
2641 * ordering of page lock and transaction start for journaling
2642 * filesystems.
2643 */
2644 - if (i_size_changed)
2645 + if (i_size_changed || inline_data)
2646 ext4_mark_inode_dirty(handle, inode);
2647
2648 if (pos + len > inode->i_size && ext4_can_truncate(inode))
2649 @@ -1422,6 +1423,7 @@ static int ext4_journalled_write_end(struct file *file,
2650 int partial = 0;
2651 unsigned from, to;
2652 int size_changed = 0;
2653 + int inline_data = ext4_has_inline_data(inode);
2654
2655 trace_ext4_journalled_write_end(inode, pos, len, copied);
2656 from = pos & (PAGE_SIZE - 1);
2657 @@ -1429,7 +1431,7 @@ static int ext4_journalled_write_end(struct file *file,
2658
2659 BUG_ON(!ext4_handle_valid(handle));
2660
2661 - if (ext4_has_inline_data(inode)) {
2662 + if (inline_data) {
2663 ret = ext4_write_inline_data_end(inode, pos, len,
2664 copied, page);
2665 if (ret < 0) {
2666 @@ -1460,7 +1462,7 @@ static int ext4_journalled_write_end(struct file *file,
2667 if (old_size < pos)
2668 pagecache_isize_extended(inode, old_size, pos);
2669
2670 - if (size_changed) {
2671 + if (size_changed || inline_data) {
2672 ret2 = ext4_mark_inode_dirty(handle, inode);
2673 if (!ret)
2674 ret = ret2;
2675 @@ -1958,11 +1960,7 @@ static int __ext4_journalled_writepage(struct page *page,
2676 }
2677
2678 if (inline_data) {
2679 - BUFFER_TRACE(inode_bh, "get write access");
2680 - ret = ext4_journal_get_write_access(handle, inode_bh);
2681 -
2682 - err = ext4_handle_dirty_metadata(handle, inode, inode_bh);
2683 -
2684 + ret = ext4_mark_inode_dirty(handle, inode);
2685 } else {
2686 ret = ext4_walk_page_buffers(handle, page_bufs, 0, len, NULL,
2687 do_journal_get_write_access);
2688 diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
2689 index 801111e1f8ef..7d0e8d6bf009 100644
2690 --- a/fs/f2fs/file.c
2691 +++ b/fs/f2fs/file.c
2692 @@ -1512,6 +1512,8 @@ static int f2fs_ioc_start_atomic_write(struct file *filp)
2693
2694 inode_lock(inode);
2695
2696 + down_write(&F2FS_I(inode)->dio_rwsem[WRITE]);
2697 +
2698 if (f2fs_is_atomic_file(inode))
2699 goto out;
2700
2701 @@ -1532,6 +1534,7 @@ static int f2fs_ioc_start_atomic_write(struct file *filp)
2702 if (ret)
2703 clear_inode_flag(inode, FI_ATOMIC_FILE);
2704 out:
2705 + up_write(&F2FS_I(inode)->dio_rwsem[WRITE]);
2706 inode_unlock(inode);
2707 mnt_drop_write_file(filp);
2708 return ret;
2709 @@ -1670,9 +1673,11 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
2710 if (get_user(in, (__u32 __user *)arg))
2711 return -EFAULT;
2712
2713 - ret = mnt_want_write_file(filp);
2714 - if (ret)
2715 - return ret;
2716 + if (in != F2FS_GOING_DOWN_FULLSYNC) {
2717 + ret = mnt_want_write_file(filp);
2718 + if (ret)
2719 + return ret;
2720 + }
2721
2722 switch (in) {
2723 case F2FS_GOING_DOWN_FULLSYNC:
2724 @@ -1700,7 +1705,8 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
2725 }
2726 f2fs_update_time(sbi, REQ_TIME);
2727 out:
2728 - mnt_drop_write_file(filp);
2729 + if (in != F2FS_GOING_DOWN_FULLSYNC)
2730 + mnt_drop_write_file(filp);
2731 return ret;
2732 }
2733
2734 diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
2735 index 17ab23f64bba..ad4dfd29d923 100644
2736 --- a/fs/f2fs/gc.c
2737 +++ b/fs/f2fs/gc.c
2738 @@ -688,9 +688,14 @@ retry:
2739 set_cold_data(page);
2740
2741 err = do_write_data_page(&fio);
2742 - if (err == -ENOMEM && is_dirty) {
2743 - congestion_wait(BLK_RW_ASYNC, HZ/50);
2744 - goto retry;
2745 + if (err) {
2746 + clear_cold_data(page);
2747 + if (err == -ENOMEM) {
2748 + congestion_wait(BLK_RW_ASYNC, HZ/50);
2749 + goto retry;
2750 + }
2751 + if (is_dirty)
2752 + set_page_dirty(page);
2753 }
2754
2755 clear_cold_data(page);
2756 diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
2757 index e10f61684ea4..35d48ef0573c 100644
2758 --- a/fs/f2fs/segment.c
2759 +++ b/fs/f2fs/segment.c
2760 @@ -207,6 +207,8 @@ static int __revoke_inmem_pages(struct inode *inode,
2761
2762 lock_page(page);
2763
2764 + f2fs_wait_on_page_writeback(page, DATA, true);
2765 +
2766 if (recover) {
2767 struct dnode_of_data dn;
2768 struct node_info ni;
2769 @@ -369,6 +371,9 @@ void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need)
2770
2771 void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi)
2772 {
2773 + if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING)))
2774 + return;
2775 +
2776 /* try to shrink extent cache when there is no enough memory */
2777 if (!available_free_memory(sbi, EXTENT_CACHE))
2778 f2fs_shrink_extent_tree(sbi, EXTENT_CACHE_SHRINK_NUMBER);
2779 diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
2780 index eb20b8767f3c..e627671f0183 100644
2781 --- a/fs/f2fs/super.c
2782 +++ b/fs/f2fs/super.c
2783 @@ -1980,6 +1980,12 @@ static int __init init_f2fs_fs(void)
2784 {
2785 int err;
2786
2787 + if (PAGE_SIZE != F2FS_BLKSIZE) {
2788 + printk("F2FS not supported on PAGE_SIZE(%lu) != %d\n",
2789 + PAGE_SIZE, F2FS_BLKSIZE);
2790 + return -EINVAL;
2791 + }
2792 +
2793 f2fs_build_trace_ios();
2794
2795 err = init_inodecache();
2796 diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
2797 index 91e017ca7072..cf5fdc25289a 100644
2798 --- a/fs/nfs/nfs4proc.c
2799 +++ b/fs/nfs/nfs4proc.c
2800 @@ -2701,7 +2701,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
2801 if (ret != 0)
2802 goto out;
2803
2804 - state = nfs4_opendata_to_nfs4_state(opendata);
2805 + state = _nfs4_opendata_to_nfs4_state(opendata);
2806 ret = PTR_ERR(state);
2807 if (IS_ERR(state))
2808 goto out;
2809 @@ -2737,6 +2737,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
2810 nfs4_schedule_stateid_recovery(server, state);
2811 }
2812 out:
2813 + nfs4_sequence_free_slot(&opendata->o_res.seq_res);
2814 return ret;
2815 }
2816
2817 diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
2818 index bdbd9e6d1ace..b16a6c036352 100644
2819 --- a/fs/nfsd/nfs4xdr.c
2820 +++ b/fs/nfsd/nfs4xdr.c
2821 @@ -1536,6 +1536,8 @@ nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp,
2822 gdev->gd_maxcount = be32_to_cpup(p++);
2823 num = be32_to_cpup(p++);
2824 if (num) {
2825 + if (num > 1000)
2826 + goto xdr_error;
2827 READ_BUF(4 * num);
2828 gdev->gd_notify_types = be32_to_cpup(p++);
2829 for (i = 1; i < num; i++) {
2830 diff --git a/fs/squashfs/cache.c b/fs/squashfs/cache.c
2831 index 23813c078cc9..0839efa720b3 100644
2832 --- a/fs/squashfs/cache.c
2833 +++ b/fs/squashfs/cache.c
2834 @@ -350,6 +350,9 @@ int squashfs_read_metadata(struct super_block *sb, void *buffer,
2835
2836 TRACE("Entered squashfs_read_metadata [%llx:%x]\n", *block, *offset);
2837
2838 + if (unlikely(length < 0))
2839 + return -EIO;
2840 +
2841 while (length) {
2842 entry = squashfs_cache_get(sb, msblk->block_cache, *block, 0);
2843 if (entry->error) {
2844 diff --git a/fs/squashfs/file.c b/fs/squashfs/file.c
2845 index 13d80947bf9e..fcff2e0487fe 100644
2846 --- a/fs/squashfs/file.c
2847 +++ b/fs/squashfs/file.c
2848 @@ -194,7 +194,11 @@ static long long read_indexes(struct super_block *sb, int n,
2849 }
2850
2851 for (i = 0; i < blocks; i++) {
2852 - int size = le32_to_cpu(blist[i]);
2853 + int size = squashfs_block_size(blist[i]);
2854 + if (size < 0) {
2855 + err = size;
2856 + goto failure;
2857 + }
2858 block += SQUASHFS_COMPRESSED_SIZE_BLOCK(size);
2859 }
2860 n -= blocks;
2861 @@ -367,7 +371,7 @@ static int read_blocklist(struct inode *inode, int index, u64 *block)
2862 sizeof(size));
2863 if (res < 0)
2864 return res;
2865 - return le32_to_cpu(size);
2866 + return squashfs_block_size(size);
2867 }
2868
2869 /* Copy data into page cache */
2870 diff --git a/fs/squashfs/fragment.c b/fs/squashfs/fragment.c
2871 index 0ed6edbc5c71..86ad9a4b8c36 100644
2872 --- a/fs/squashfs/fragment.c
2873 +++ b/fs/squashfs/fragment.c
2874 @@ -61,9 +61,7 @@ int squashfs_frag_lookup(struct super_block *sb, unsigned int fragment,
2875 return size;
2876
2877 *fragment_block = le64_to_cpu(fragment_entry.start_block);
2878 - size = le32_to_cpu(fragment_entry.size);
2879 -
2880 - return size;
2881 + return squashfs_block_size(fragment_entry.size);
2882 }
2883
2884
2885 diff --git a/fs/squashfs/squashfs_fs.h b/fs/squashfs/squashfs_fs.h
2886 index 506f4ba5b983..e66486366f02 100644
2887 --- a/fs/squashfs/squashfs_fs.h
2888 +++ b/fs/squashfs/squashfs_fs.h
2889 @@ -129,6 +129,12 @@
2890
2891 #define SQUASHFS_COMPRESSED_BLOCK(B) (!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
2892
2893 +static inline int squashfs_block_size(__le32 raw)
2894 +{
2895 + u32 size = le32_to_cpu(raw);
2896 + return (size >> 25) ? -EIO : size;
2897 +}
2898 +
2899 /*
2900 * Inode number ops. Inodes consist of a compressed block number, and an
2901 * uncompressed offset within that block
2902 diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
2903 index 2a79882cb68e..2fff10de317d 100644
2904 --- a/include/drm/drm_dp_helper.h
2905 +++ b/include/drm/drm_dp_helper.h
2906 @@ -345,6 +345,7 @@
2907 # define DP_PSR_FRAME_CAPTURE (1 << 3)
2908 # define DP_PSR_SELECTIVE_UPDATE (1 << 4)
2909 # define DP_PSR_IRQ_HPD_WITH_CRC_ERRORS (1 << 5)
2910 +# define DP_PSR_ENABLE_PSR2 (1 << 6) /* eDP 1.4a */
2911
2912 #define DP_ADAPTER_CTRL 0x1a0
2913 # define DP_ADAPTER_CTRL_FORCE_LOAD_SENSE (1 << 0)
2914 diff --git a/include/linux/dma-iommu.h b/include/linux/dma-iommu.h
2915 index 32c589062bd9..f30d23011060 100644
2916 --- a/include/linux/dma-iommu.h
2917 +++ b/include/linux/dma-iommu.h
2918 @@ -17,6 +17,7 @@
2919 #define __DMA_IOMMU_H
2920
2921 #ifdef __KERNEL__
2922 +#include <linux/types.h>
2923 #include <asm/errno.h>
2924
2925 #ifdef CONFIG_IOMMU_DMA
2926 diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
2927 index d43ef96bf075..3e4d4f4bccd3 100644
2928 --- a/include/linux/mmc/sdio_ids.h
2929 +++ b/include/linux/mmc/sdio_ids.h
2930 @@ -34,6 +34,7 @@
2931 #define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335
2932 #define SDIO_DEVICE_ID_BROADCOM_4339 0x4339
2933 #define SDIO_DEVICE_ID_BROADCOM_43362 0xa962
2934 +#define SDIO_DEVICE_ID_BROADCOM_43364 0xa9a4
2935 #define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6
2936 #define SDIO_DEVICE_ID_BROADCOM_4345 0x4345
2937 #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
2938 diff --git a/include/linux/netfilter/ipset/ip_set_timeout.h b/include/linux/netfilter/ipset/ip_set_timeout.h
2939 index 1d6a935c1ac5..8793f5a7b820 100644
2940 --- a/include/linux/netfilter/ipset/ip_set_timeout.h
2941 +++ b/include/linux/netfilter/ipset/ip_set_timeout.h
2942 @@ -65,8 +65,14 @@ ip_set_timeout_set(unsigned long *timeout, u32 value)
2943 static inline u32
2944 ip_set_timeout_get(unsigned long *timeout)
2945 {
2946 - return *timeout == IPSET_ELEM_PERMANENT ? 0 :
2947 - jiffies_to_msecs(*timeout - jiffies)/MSEC_PER_SEC;
2948 + u32 t;
2949 +
2950 + if (*timeout == IPSET_ELEM_PERMANENT)
2951 + return 0;
2952 +
2953 + t = jiffies_to_msecs(*timeout - jiffies)/MSEC_PER_SEC;
2954 + /* Zero value in userspace means no timeout */
2955 + return t == 0 ? 1 : t;
2956 }
2957
2958 #endif /* __KERNEL__ */
2959 diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
2960 index 7b16c5322673..eb4f6456521e 100644
2961 --- a/include/linux/serial_core.h
2962 +++ b/include/linux/serial_core.h
2963 @@ -344,7 +344,8 @@ struct earlycon_device {
2964 };
2965
2966 struct earlycon_id {
2967 - char name[16];
2968 + char name[15];
2969 + char name_term; /* In case compiler didn't '\0' term name */
2970 char compatible[128];
2971 int (*setup)(struct earlycon_device *, const char *options);
2972 };
2973 diff --git a/include/soc/tegra/mc.h b/include/soc/tegra/mc.h
2974 index 44202ff897fd..f759e0918037 100644
2975 --- a/include/soc/tegra/mc.h
2976 +++ b/include/soc/tegra/mc.h
2977 @@ -99,6 +99,8 @@ struct tegra_mc_soc {
2978 u8 client_id_mask;
2979
2980 const struct tegra_smmu_soc *smmu;
2981 +
2982 + u32 intmask;
2983 };
2984
2985 struct tegra_mc {
2986 diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
2987 index 85d9cac497e4..cd4f41397c7e 100644
2988 --- a/kernel/auditfilter.c
2989 +++ b/kernel/auditfilter.c
2990 @@ -406,7 +406,7 @@ static int audit_field_valid(struct audit_entry *entry, struct audit_field *f)
2991 return -EINVAL;
2992 break;
2993 case AUDIT_EXE:
2994 - if (f->op != Audit_equal)
2995 + if (f->op != Audit_not_equal && f->op != Audit_equal)
2996 return -EINVAL;
2997 if (entry->rule.listnr != AUDIT_FILTER_EXIT)
2998 return -EINVAL;
2999 diff --git a/kernel/auditsc.c b/kernel/auditsc.c
3000 index 2cd5256dbff7..c2aaf539728f 100644
3001 --- a/kernel/auditsc.c
3002 +++ b/kernel/auditsc.c
3003 @@ -469,6 +469,8 @@ static int audit_filter_rules(struct task_struct *tsk,
3004 break;
3005 case AUDIT_EXE:
3006 result = audit_exe_compare(tsk, rule->exe);
3007 + if (f->op == Audit_not_equal)
3008 + result = !result;
3009 break;
3010 case AUDIT_UID:
3011 result = audit_uid_comparator(cred->uid, f->op, f->uid);
3012 diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
3013 index 076e4a0ff95e..dafa2708ce9e 100644
3014 --- a/kernel/bpf/verifier.c
3015 +++ b/kernel/bpf/verifier.c
3016 @@ -3225,7 +3225,7 @@ static int replace_map_fd_with_map_ptr(struct bpf_verifier_env *env)
3017 /* hold the map. If the program is rejected by verifier,
3018 * the map will be released by release_maps() or it
3019 * will be used by the valid program until it's unloaded
3020 - * and all maps are released in free_bpf_prog_info()
3021 + * and all maps are released in free_used_maps()
3022 */
3023 map = bpf_map_inc(map, false);
3024 if (IS_ERR(map)) {
3025 @@ -3629,7 +3629,7 @@ free_log_buf:
3026 vfree(log_buf);
3027 if (!env->prog->aux->used_maps)
3028 /* if we didn't copy map pointers into bpf_prog_info, release
3029 - * them now. Otherwise free_bpf_prog_info() will release them.
3030 + * them now. Otherwise free_used_maps() will release them.
3031 */
3032 release_maps(env);
3033 *prog = env->prog;
3034 diff --git a/kernel/kcov.c b/kernel/kcov.c
3035 index 3883df58aa12..b0ec31493fdc 100644
3036 --- a/kernel/kcov.c
3037 +++ b/kernel/kcov.c
3038 @@ -103,7 +103,8 @@ static void kcov_put(struct kcov *kcov)
3039
3040 void kcov_task_init(struct task_struct *t)
3041 {
3042 - t->kcov_mode = KCOV_MODE_DISABLED;
3043 + WRITE_ONCE(t->kcov_mode, KCOV_MODE_DISABLED);
3044 + barrier();
3045 t->kcov_size = 0;
3046 t->kcov_area = NULL;
3047 t->kcov = NULL;
3048 diff --git a/kernel/kthread.c b/kernel/kthread.c
3049 index c2c911a106cf..fbc230e41969 100644
3050 --- a/kernel/kthread.c
3051 +++ b/kernel/kthread.c
3052 @@ -290,8 +290,14 @@ static struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data),
3053 task = create->result;
3054 if (!IS_ERR(task)) {
3055 static const struct sched_param param = { .sched_priority = 0 };
3056 + char name[TASK_COMM_LEN];
3057
3058 - vsnprintf(task->comm, sizeof(task->comm), namefmt, args);
3059 + /*
3060 + * task is already visible to other tasks, so updating
3061 + * COMM must be protected.
3062 + */
3063 + vsnprintf(name, sizeof(name), namefmt, args);
3064 + set_task_comm(task, name);
3065 /*
3066 * root may have changed our (kthreadd's) priority or CPU mask.
3067 * The kernel thread should not inherit these properties.
3068 diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
3069 index ec9ab2f01489..9b8cd7ebf27b 100644
3070 --- a/kernel/stop_machine.c
3071 +++ b/kernel/stop_machine.c
3072 @@ -36,7 +36,7 @@ struct cpu_stop_done {
3073 struct cpu_stopper {
3074 struct task_struct *thread;
3075
3076 - spinlock_t lock;
3077 + raw_spinlock_t lock;
3078 bool enabled; /* is this stopper enabled? */
3079 struct list_head works; /* list of pending works */
3080
3081 @@ -78,13 +78,13 @@ static bool cpu_stop_queue_work(unsigned int cpu, struct cpu_stop_work *work)
3082 unsigned long flags;
3083 bool enabled;
3084
3085 - spin_lock_irqsave(&stopper->lock, flags);
3086 + raw_spin_lock_irqsave(&stopper->lock, flags);
3087 enabled = stopper->enabled;
3088 if (enabled)
3089 __cpu_stop_queue_work(stopper, work);
3090 else if (work->done)
3091 cpu_stop_signal_done(work->done);
3092 - spin_unlock_irqrestore(&stopper->lock, flags);
3093 + raw_spin_unlock_irqrestore(&stopper->lock, flags);
3094
3095 return enabled;
3096 }
3097 @@ -231,8 +231,8 @@ static int cpu_stop_queue_two_works(int cpu1, struct cpu_stop_work *work1,
3098 struct cpu_stopper *stopper2 = per_cpu_ptr(&cpu_stopper, cpu2);
3099 int err;
3100 retry:
3101 - spin_lock_irq(&stopper1->lock);
3102 - spin_lock_nested(&stopper2->lock, SINGLE_DEPTH_NESTING);
3103 + raw_spin_lock_irq(&stopper1->lock);
3104 + raw_spin_lock_nested(&stopper2->lock, SINGLE_DEPTH_NESTING);
3105
3106 err = -ENOENT;
3107 if (!stopper1->enabled || !stopper2->enabled)
3108 @@ -255,8 +255,8 @@ retry:
3109 __cpu_stop_queue_work(stopper1, work1);
3110 __cpu_stop_queue_work(stopper2, work2);
3111 unlock:
3112 - spin_unlock(&stopper2->lock);
3113 - spin_unlock_irq(&stopper1->lock);
3114 + raw_spin_unlock(&stopper2->lock);
3115 + raw_spin_unlock_irq(&stopper1->lock);
3116
3117 if (unlikely(err == -EDEADLK)) {
3118 while (stop_cpus_in_progress)
3119 @@ -448,9 +448,9 @@ static int cpu_stop_should_run(unsigned int cpu)
3120 unsigned long flags;
3121 int run;
3122
3123 - spin_lock_irqsave(&stopper->lock, flags);
3124 + raw_spin_lock_irqsave(&stopper->lock, flags);
3125 run = !list_empty(&stopper->works);
3126 - spin_unlock_irqrestore(&stopper->lock, flags);
3127 + raw_spin_unlock_irqrestore(&stopper->lock, flags);
3128 return run;
3129 }
3130
3131 @@ -461,13 +461,13 @@ static void cpu_stopper_thread(unsigned int cpu)
3132
3133 repeat:
3134 work = NULL;
3135 - spin_lock_irq(&stopper->lock);
3136 + raw_spin_lock_irq(&stopper->lock);
3137 if (!list_empty(&stopper->works)) {
3138 work = list_first_entry(&stopper->works,
3139 struct cpu_stop_work, list);
3140 list_del_init(&work->list);
3141 }
3142 - spin_unlock_irq(&stopper->lock);
3143 + raw_spin_unlock_irq(&stopper->lock);
3144
3145 if (work) {
3146 cpu_stop_fn_t fn = work->fn;
3147 @@ -541,7 +541,7 @@ static int __init cpu_stop_init(void)
3148 for_each_possible_cpu(cpu) {
3149 struct cpu_stopper *stopper = &per_cpu(cpu_stopper, cpu);
3150
3151 - spin_lock_init(&stopper->lock);
3152 + raw_spin_lock_init(&stopper->lock);
3153 INIT_LIST_HEAD(&stopper->works);
3154 }
3155
3156 diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c
3157 index 88f398af57fa..8819944bbcbf 100644
3158 --- a/kernel/trace/trace_events_trigger.c
3159 +++ b/kernel/trace/trace_events_trigger.c
3160 @@ -678,6 +678,8 @@ event_trigger_callback(struct event_command *cmd_ops,
3161 goto out_free;
3162
3163 out_reg:
3164 + /* Up the trigger_data count to make sure reg doesn't free it on failure */
3165 + event_trigger_init(trigger_ops, trigger_data);
3166 ret = cmd_ops->reg(glob, trigger_ops, trigger_data, file);
3167 /*
3168 * The above returns on success the # of functions enabled,
3169 @@ -685,11 +687,13 @@ event_trigger_callback(struct event_command *cmd_ops,
3170 * Consider no functions a failure too.
3171 */
3172 if (!ret) {
3173 + cmd_ops->unreg(glob, trigger_ops, trigger_data, file);
3174 ret = -ENOENT;
3175 - goto out_free;
3176 - } else if (ret < 0)
3177 - goto out_free;
3178 - ret = 0;
3179 + } else if (ret > 0)
3180 + ret = 0;
3181 +
3182 + /* Down the counter of trigger_data or free it if not used anymore */
3183 + event_trigger_free(trigger_ops, trigger_data);
3184 out:
3185 return ret;
3186
3187 @@ -1385,6 +1389,9 @@ int event_enable_trigger_func(struct event_command *cmd_ops,
3188 goto out;
3189 }
3190
3191 + /* Up the trigger_data count to make sure nothing frees it on failure */
3192 + event_trigger_init(trigger_ops, trigger_data);
3193 +
3194 if (trigger) {
3195 number = strsep(&trigger, ":");
3196
3197 @@ -1435,6 +1442,7 @@ int event_enable_trigger_func(struct event_command *cmd_ops,
3198 goto out_disable;
3199 /* Just return zero, not the number of enabled functions */
3200 ret = 0;
3201 + event_trigger_free(trigger_ops, trigger_data);
3202 out:
3203 return ret;
3204
3205 @@ -1445,7 +1453,7 @@ int event_enable_trigger_func(struct event_command *cmd_ops,
3206 out_free:
3207 if (cmd_ops->set_filter)
3208 cmd_ops->set_filter(NULL, trigger_data, NULL);
3209 - kfree(trigger_data);
3210 + event_trigger_free(trigger_ops, trigger_data);
3211 kfree(enable_data);
3212 goto out;
3213 }
3214 diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
3215 index ea3ed03fed7e..3b4cd44ad323 100644
3216 --- a/kernel/trace/trace_kprobe.c
3217 +++ b/kernel/trace/trace_kprobe.c
3218 @@ -359,11 +359,10 @@ static struct trace_kprobe *find_trace_kprobe(const char *event,
3219 static int
3220 enable_trace_kprobe(struct trace_kprobe *tk, struct trace_event_file *file)
3221 {
3222 + struct event_file_link *link = NULL;
3223 int ret = 0;
3224
3225 if (file) {
3226 - struct event_file_link *link;
3227 -
3228 link = kmalloc(sizeof(*link), GFP_KERNEL);
3229 if (!link) {
3230 ret = -ENOMEM;
3231 @@ -383,6 +382,18 @@ enable_trace_kprobe(struct trace_kprobe *tk, struct trace_event_file *file)
3232 else
3233 ret = enable_kprobe(&tk->rp.kp);
3234 }
3235 +
3236 + if (ret) {
3237 + if (file) {
3238 + /* Notice the if is true on not WARN() */
3239 + if (!WARN_ON_ONCE(!link))
3240 + list_del_rcu(&link->list);
3241 + kfree(link);
3242 + tk->tp.flags &= ~TP_FLAG_TRACE;
3243 + } else {
3244 + tk->tp.flags &= ~TP_FLAG_PROFILE;
3245 + }
3246 + }
3247 out:
3248 return ret;
3249 }
3250 diff --git a/mm/slub.c b/mm/slub.c
3251 index edc79ca3c6d5..e0ce5dec84ba 100644
3252 --- a/mm/slub.c
3253 +++ b/mm/slub.c
3254 @@ -673,7 +673,7 @@ void object_err(struct kmem_cache *s, struct page *page,
3255 print_trailer(s, page, object);
3256 }
3257
3258 -static void slab_err(struct kmem_cache *s, struct page *page,
3259 +static __printf(3, 4) void slab_err(struct kmem_cache *s, struct page *page,
3260 const char *fmt, ...)
3261 {
3262 va_list args;
3263 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
3264 index 195de42bea1f..fa598162dbf0 100644
3265 --- a/mm/vmalloc.c
3266 +++ b/mm/vmalloc.c
3267 @@ -1494,7 +1494,7 @@ static void __vunmap(const void *addr, int deallocate_pages)
3268 addr))
3269 return;
3270
3271 - area = remove_vm_area(addr);
3272 + area = find_vmap_area((unsigned long)addr)->vm;
3273 if (unlikely(!area)) {
3274 WARN(1, KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n",
3275 addr);
3276 @@ -1504,6 +1504,7 @@ static void __vunmap(const void *addr, int deallocate_pages)
3277 debug_check_no_locks_freed(addr, get_vm_area_size(area));
3278 debug_check_no_obj_freed(addr, get_vm_area_size(area));
3279
3280 + remove_vm_area(addr);
3281 if (deallocate_pages) {
3282 int i;
3283
3284 diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
3285 index b23464d9c538..d278b06459ac 100644
3286 --- a/net/ipv4/ipconfig.c
3287 +++ b/net/ipv4/ipconfig.c
3288 @@ -779,6 +779,11 @@ static void __init ic_bootp_init_ext(u8 *e)
3289 */
3290 static inline void __init ic_bootp_init(void)
3291 {
3292 + /* Re-initialise all name servers to NONE, in case any were set via the
3293 + * "ip=" or "nfsaddrs=" kernel command line parameters: any IP addresses
3294 + * specified there will already have been decoded but are no longer
3295 + * needed
3296 + */
3297 ic_nameservers_predef();
3298
3299 dev_add_pack(&bootp_packet_type);
3300 @@ -1401,6 +1406,13 @@ static int __init ip_auto_config(void)
3301 int err;
3302 unsigned int i;
3303
3304 + /* Initialise all name servers to NONE (but only if the "ip=" or
3305 + * "nfsaddrs=" kernel command line parameters weren't decoded, otherwise
3306 + * we'll overwrite the IP addresses specified there)
3307 + */
3308 + if (ic_set_manually == 0)
3309 + ic_nameservers_predef();
3310 +
3311 #ifdef CONFIG_PROC_FS
3312 proc_create("pnp", S_IRUGO, init_net.proc_net, &pnp_seq_fops);
3313 #endif /* CONFIG_PROC_FS */
3314 @@ -1621,6 +1633,7 @@ static int __init ip_auto_config_setup(char *addrs)
3315 return 1;
3316 }
3317
3318 + /* Initialise all name servers to NONE */
3319 ic_nameservers_predef();
3320
3321 /* Parse string for static IP assignment. */
3322 diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
3323 index 762f31fb5b67..a3fb30f5a1a9 100644
3324 --- a/net/netfilter/nf_tables_api.c
3325 +++ b/net/netfilter/nf_tables_api.c
3326 @@ -2476,12 +2476,13 @@ struct nft_set *nf_tables_set_lookup_byid(const struct net *net,
3327 u32 id = ntohl(nla_get_be32(nla));
3328
3329 list_for_each_entry(trans, &net->nft.commit_list, list) {
3330 - struct nft_set *set = nft_trans_set(trans);
3331 + if (trans->msg_type == NFT_MSG_NEWSET) {
3332 + struct nft_set *set = nft_trans_set(trans);
3333
3334 - if (trans->msg_type == NFT_MSG_NEWSET &&
3335 - id == nft_trans_set_id(trans) &&
3336 - nft_active_genmask(set, genmask))
3337 - return set;
3338 + if (id == nft_trans_set_id(trans) &&
3339 + nft_active_genmask(set, genmask))
3340 + return set;
3341 + }
3342 }
3343 return ERR_PTR(-ENOENT);
3344 }
3345 diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
3346 index a71f906b4f7a..9652541c4d43 100644
3347 --- a/security/integrity/ima/ima_main.c
3348 +++ b/security/integrity/ima/ima_main.c
3349 @@ -379,6 +379,7 @@ int ima_read_file(struct file *file, enum kernel_read_file_id read_id)
3350
3351 static int read_idmap[READING_MAX_ID] = {
3352 [READING_FIRMWARE] = FIRMWARE_CHECK,
3353 + [READING_FIRMWARE_PREALLOC_BUFFER] = FIRMWARE_CHECK,
3354 [READING_MODULE] = MODULE_CHECK,
3355 [READING_KEXEC_IMAGE] = KEXEC_KERNEL_CHECK,
3356 [READING_KEXEC_INITRAMFS] = KEXEC_INITRAMFS_CHECK,
3357 diff --git a/sound/pci/emu10k1/emupcm.c b/sound/pci/emu10k1/emupcm.c
3358 index 37be1e14d756..0d2bb30d9f7e 100644
3359 --- a/sound/pci/emu10k1/emupcm.c
3360 +++ b/sound/pci/emu10k1/emupcm.c
3361 @@ -1850,7 +1850,9 @@ int snd_emu10k1_pcm_efx(struct snd_emu10k1 *emu, int device)
3362 if (!kctl)
3363 return -ENOMEM;
3364 kctl->id.device = device;
3365 - snd_ctl_add(emu->card, kctl);
3366 + err = snd_ctl_add(emu->card, kctl);
3367 + if (err < 0)
3368 + return err;
3369
3370 snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(emu->pci), 64*1024, 64*1024);
3371
3372 diff --git a/sound/pci/emu10k1/memory.c b/sound/pci/emu10k1/memory.c
3373 index 4f1f69be1865..8c778fa33031 100644
3374 --- a/sound/pci/emu10k1/memory.c
3375 +++ b/sound/pci/emu10k1/memory.c
3376 @@ -237,13 +237,13 @@ __found_pages:
3377 static int is_valid_page(struct snd_emu10k1 *emu, dma_addr_t addr)
3378 {
3379 if (addr & ~emu->dma_mask) {
3380 - dev_err(emu->card->dev,
3381 + dev_err_ratelimited(emu->card->dev,
3382 "max memory size is 0x%lx (addr = 0x%lx)!!\n",
3383 emu->dma_mask, (unsigned long)addr);
3384 return 0;
3385 }
3386 if (addr & (EMUPAGESIZE-1)) {
3387 - dev_err(emu->card->dev, "page is not aligned\n");
3388 + dev_err_ratelimited(emu->card->dev, "page is not aligned\n");
3389 return 0;
3390 }
3391 return 1;
3392 @@ -334,7 +334,7 @@ snd_emu10k1_alloc_pages(struct snd_emu10k1 *emu, struct snd_pcm_substream *subst
3393 else
3394 addr = snd_pcm_sgbuf_get_addr(substream, ofs);
3395 if (! is_valid_page(emu, addr)) {
3396 - dev_err(emu->card->dev,
3397 + dev_err_ratelimited(emu->card->dev,
3398 "emu: failure page = %d\n", idx);
3399 mutex_unlock(&hdr->block_mutex);
3400 return NULL;
3401 diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
3402 index a178e0d03088..8561f60b4284 100644
3403 --- a/sound/pci/fm801.c
3404 +++ b/sound/pci/fm801.c
3405 @@ -1068,11 +1068,19 @@ static int snd_fm801_mixer(struct fm801 *chip)
3406 if ((err = snd_ac97_mixer(chip->ac97_bus, &ac97, &chip->ac97_sec)) < 0)
3407 return err;
3408 }
3409 - for (i = 0; i < FM801_CONTROLS; i++)
3410 - snd_ctl_add(chip->card, snd_ctl_new1(&snd_fm801_controls[i], chip));
3411 + for (i = 0; i < FM801_CONTROLS; i++) {
3412 + err = snd_ctl_add(chip->card,
3413 + snd_ctl_new1(&snd_fm801_controls[i], chip));
3414 + if (err < 0)
3415 + return err;
3416 + }
3417 if (chip->multichannel) {
3418 - for (i = 0; i < FM801_CONTROLS_MULTI; i++)
3419 - snd_ctl_add(chip->card, snd_ctl_new1(&snd_fm801_controls_multi[i], chip));
3420 + for (i = 0; i < FM801_CONTROLS_MULTI; i++) {
3421 + err = snd_ctl_add(chip->card,
3422 + snd_ctl_new1(&snd_fm801_controls_multi[i], chip));
3423 + if (err < 0)
3424 + return err;
3425 + }
3426 }
3427 return 0;
3428 }
3429 diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c
3430 index 9ec4dba8a793..280999961226 100644
3431 --- a/sound/pci/hda/patch_ca0132.c
3432 +++ b/sound/pci/hda/patch_ca0132.c
3433 @@ -38,6 +38,10 @@
3434 /* Enable this to see controls for tuning purpose. */
3435 /*#define ENABLE_TUNING_CONTROLS*/
3436
3437 +#ifdef ENABLE_TUNING_CONTROLS
3438 +#include <sound/tlv.h>
3439 +#endif
3440 +
3441 #define FLOAT_ZERO 0x00000000
3442 #define FLOAT_ONE 0x3f800000
3443 #define FLOAT_TWO 0x40000000
3444 @@ -3067,8 +3071,8 @@ static int equalizer_ctl_put(struct snd_kcontrol *kcontrol,
3445 return 1;
3446 }
3447
3448 -static const DECLARE_TLV_DB_SCALE(voice_focus_db_scale, 2000, 100, 0);
3449 -static const DECLARE_TLV_DB_SCALE(eq_db_scale, -2400, 100, 0);
3450 +static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(voice_focus_db_scale, 2000, 100, 0);
3451 +static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(eq_db_scale, -2400, 100, 0);
3452
3453 static int add_tuning_control(struct hda_codec *codec,
3454 hda_nid_t pnid, hda_nid_t nid,
3455 diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
3456 index 80088c98ce27..20680a490897 100644
3457 --- a/sound/soc/soc-pcm.c
3458 +++ b/sound/soc/soc-pcm.c
3459 @@ -1793,8 +1793,10 @@ int dpcm_be_dai_shutdown(struct snd_soc_pcm_runtime *fe, int stream)
3460 continue;
3461
3462 if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_FREE) &&
3463 - (be->dpcm[stream].state != SND_SOC_DPCM_STATE_OPEN))
3464 - continue;
3465 + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_OPEN)) {
3466 + soc_pcm_hw_free(be_substream);
3467 + be->dpcm[stream].state = SND_SOC_DPCM_STATE_HW_FREE;
3468 + }
3469
3470 dev_dbg(be->dev, "ASoC: close BE %s\n",
3471 be->dai_link->name);
3472 diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
3473 index c5dfe82beb24..e6ac7b9b4648 100644
3474 --- a/sound/usb/pcm.c
3475 +++ b/sound/usb/pcm.c
3476 @@ -1310,7 +1310,7 @@ static void retire_capture_urb(struct snd_usb_substream *subs,
3477 if (bytes % (runtime->sample_bits >> 3) != 0) {
3478 int oldbytes = bytes;
3479 bytes = frames * stride;
3480 - dev_warn(&subs->dev->dev,
3481 + dev_warn_ratelimited(&subs->dev->dev,
3482 "Corrected urb data len. %d->%d\n",
3483 oldbytes, bytes);
3484 }
3485 diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
3486 index 879115f93edc..98a4205a5f8a 100644
3487 --- a/tools/perf/util/parse-events.y
3488 +++ b/tools/perf/util/parse-events.y
3489 @@ -68,6 +68,7 @@ static void inc_group_count(struct list_head *list,
3490 %type <num> value_sym
3491 %type <head> event_config
3492 %type <head> opt_event_config
3493 +%type <head> opt_pmu_config
3494 %type <term> event_term
3495 %type <head> event_pmu
3496 %type <head> event_legacy_symbol
3497 @@ -219,7 +220,7 @@ event_def: event_pmu |
3498 event_bpf_file
3499
3500 event_pmu:
3501 -PE_NAME opt_event_config
3502 +PE_NAME opt_pmu_config
3503 {
3504 struct parse_events_evlist *data = _data;
3505 struct list_head *list;
3506 @@ -482,6 +483,17 @@ opt_event_config:
3507 $$ = NULL;
3508 }
3509
3510 +opt_pmu_config:
3511 +'/' event_config '/'
3512 +{
3513 + $$ = $2;
3514 +}
3515 +|
3516 +'/' '/'
3517 +{
3518 + $$ = NULL;
3519 +}
3520 +
3521 start_terms: event_config
3522 {
3523 struct parse_events_terms *data = _data;
3524 diff --git a/tools/testing/selftests/intel_pstate/run.sh b/tools/testing/selftests/intel_pstate/run.sh
3525 index 7868c106b8b1..b62876f41eca 100755
3526 --- a/tools/testing/selftests/intel_pstate/run.sh
3527 +++ b/tools/testing/selftests/intel_pstate/run.sh
3528 @@ -48,11 +48,12 @@ function run_test () {
3529
3530 echo "sleeping for 5 seconds"
3531 sleep 5
3532 - num_freqs=$(cat /proc/cpuinfo | grep MHz | sort -u | wc -l)
3533 - if [ $num_freqs -le 2 ]; then
3534 - cat /proc/cpuinfo | grep MHz | sort -u | tail -1 > /tmp/result.$1
3535 + grep MHz /proc/cpuinfo | sort -u > /tmp/result.freqs
3536 + num_freqs=$(wc -l /tmp/result.freqs | awk ' { print $1 } ')
3537 + if [ $num_freqs -ge 2 ]; then
3538 + tail -n 1 /tmp/result.freqs > /tmp/result.$1
3539 else
3540 - cat /proc/cpuinfo | grep MHz | sort -u > /tmp/result.$1
3541 + cp /tmp/result.freqs /tmp/result.$1
3542 fi
3543 ./msr 0 >> /tmp/result.$1
3544
3545 @@ -82,21 +83,20 @@ _max_freq=$(cpupower frequency-info -l | tail -1 | awk ' { print $2 } ')
3546 max_freq=$(($_max_freq / 1000))
3547
3548
3549 -for freq in `seq $max_freq -100 $min_freq`
3550 +[ $EVALUATE_ONLY -eq 0 ] && for freq in `seq $max_freq -100 $min_freq`
3551 do
3552 echo "Setting maximum frequency to $freq"
3553 cpupower frequency-set -g powersave --max=${freq}MHz >& /dev/null
3554 - [ $EVALUATE_ONLY -eq 0 ] && run_test $freq
3555 + run_test $freq
3556 done
3557
3558 -echo "=============================================================================="
3559 +[ $EVALUATE_ONLY -eq 0 ] && cpupower frequency-set -g powersave --max=${max_freq}MHz >& /dev/null
3560
3561 +echo "=============================================================================="
3562 echo "The marketing frequency of the cpu is $mkt_freq MHz"
3563 echo "The maximum frequency of the cpu is $max_freq MHz"
3564 echo "The minimum frequency of the cpu is $min_freq MHz"
3565
3566 -cpupower frequency-set -g powersave --max=${max_freq}MHz >& /dev/null
3567 -
3568 # make a pretty table
3569 echo "Target Actual Difference MSR(0x199) max_perf_pct"
3570 for freq in `seq $max_freq -100 $min_freq`
3571 @@ -104,10 +104,6 @@ do
3572 result_freq=$(cat /tmp/result.${freq} | grep "cpu MHz" | awk ' { print $4 } ' | awk -F "." ' { print $1 } ')
3573 msr=$(cat /tmp/result.${freq} | grep "msr" | awk ' { print $3 } ')
3574 max_perf_pct=$(cat /tmp/result.${freq} | grep "max_perf_pct" | awk ' { print $2 } ' )
3575 - if [ $result_freq -eq $freq ]; then
3576 - echo " $freq $result_freq 0 $msr $(($max_perf_pct*3300))"
3577 - else
3578 - echo " $freq $result_freq $(($result_freq-$freq)) $msr $(($max_perf_pct*$max_freq))"
3579 - fi
3580 + echo " $freq $result_freq $(($result_freq-$freq)) $msr $(($max_perf_pct*$max_freq))"
3581 done
3582 exit 0
3583 diff --git a/tools/usb/usbip/src/usbip_detach.c b/tools/usb/usbip/src/usbip_detach.c
3584 index 9db9d21bb2ec..6a8db858caa5 100644
3585 --- a/tools/usb/usbip/src/usbip_detach.c
3586 +++ b/tools/usb/usbip/src/usbip_detach.c
3587 @@ -43,7 +43,7 @@ void usbip_detach_usage(void)
3588
3589 static int detach_port(char *port)
3590 {
3591 - int ret;
3592 + int ret = 0;
3593 uint8_t portnum;
3594 char path[PATH_MAX+1];
3595
3596 @@ -73,9 +73,12 @@ static int detach_port(char *port)
3597 }
3598
3599 ret = usbip_vhci_detach_device(portnum);
3600 - if (ret < 0)
3601 - return -1;
3602 + if (ret < 0) {
3603 + ret = -1;
3604 + goto call_driver_close;
3605 + }
3606
3607 +call_driver_close:
3608 usbip_vhci_driver_close();
3609
3610 return ret;