Magellan Linux

Contents of /trunk/kernel-magellan/patches-4.15/0110-4.15.11-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3094 - (show annotations) (download)
Wed Mar 21 14:52:56 2018 UTC (6 years, 1 month ago) by niro
File size: 129898 byte(s)
-linux-4.15.11
1 diff --git a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
2 index 860a9559839a..89b92c1314cf 100644
3 --- a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
4 +++ b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
5 @@ -9,7 +9,8 @@ Optional properties:
6 - fsl,irda-mode : Indicate the uart supports irda mode
7 - fsl,dte-mode : Indicate the uart works in DTE mode. The uart works
8 in DCE mode by default.
9 -- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
10 +- rs485-rts-delay, rs485-rts-active-low, rs485-rx-during-tx,
11 + linux,rs485-enabled-at-boot-time: see rs485.txt
12
13 Please check Documentation/devicetree/bindings/serial/serial.txt
14 for the complete list of generic properties.
15 diff --git a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt
16 index 59567b51cf09..6bd3f2e93d61 100644
17 --- a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt
18 +++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt
19 @@ -16,7 +16,8 @@ Required properties:
20 Optional properties:
21 - dmas: A list of two dma specifiers, one for each entry in dma-names.
22 - dma-names: should contain "tx" and "rx".
23 -- rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
24 +- rs485-rts-delay, rs485-rts-active-low, rs485-rx-during-tx,
25 + linux,rs485-enabled-at-boot-time: see rs485.txt
26
27 Note: Optional properties for DMA support. Write them both or both not.
28
29 diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
30 index 43eac675f21f..4b0f05adb228 100644
31 --- a/Documentation/devicetree/bindings/serial/omap_serial.txt
32 +++ b/Documentation/devicetree/bindings/serial/omap_serial.txt
33 @@ -20,6 +20,7 @@ Optional properties:
34 node and a DMA channel number.
35 - dma-names : "rx" for receive channel, "tx" for transmit channel.
36 - rs485-rts-delay, rs485-rx-during-tx, linux,rs485-enabled-at-boot-time: see rs485.txt
37 +- rs485-rts-active-high: drive RTS high when sending (default is low).
38
39 Example:
40
41 diff --git a/Documentation/devicetree/bindings/serial/rs485.txt b/Documentation/devicetree/bindings/serial/rs485.txt
42 index b8415936dfdb..b7c29f74ebb2 100644
43 --- a/Documentation/devicetree/bindings/serial/rs485.txt
44 +++ b/Documentation/devicetree/bindings/serial/rs485.txt
45 @@ -12,6 +12,7 @@ Optional properties:
46 * b is the delay between end of data sent and rts signal in milliseconds
47 it corresponds to the delay after sending data and actual release of the line.
48 If this property is not specified, <0 0> is assumed.
49 +- rs485-rts-active-low: drive RTS low when sending (default is high).
50 - linux,rs485-enabled-at-boot-time: empty property telling to enable the rs485
51 feature at boot time. It can be disabled later with proper ioctl.
52 - rs485-rx-during-tx: empty property that enables the receiving of data even
53 diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt
54 index ae6e484a8d7c..4143ef222540 100644
55 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt
56 +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt
57 @@ -12,6 +12,7 @@ Required properties:
58 - "renesas,xhci-r8a7793" for r8a7793 SoC
59 - "renesas,xhci-r8a7795" for r8a7795 SoC
60 - "renesas,xhci-r8a7796" for r8a7796 SoC
61 + - "renesas,xhci-r8a77965" for r8a77965 SoC
62 - "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 compatible device
63 - "renesas,rcar-gen3-xhci" for a generic R-Car Gen3 compatible device
64 - "xhci-platform" (deprecated)
65 diff --git a/Makefile b/Makefile
66 index 7eed0f168b13..74c0f5e8dd55 100644
67 --- a/Makefile
68 +++ b/Makefile
69 @@ -1,7 +1,7 @@
70 # SPDX-License-Identifier: GPL-2.0
71 VERSION = 4
72 PATCHLEVEL = 15
73 -SUBLEVEL = 10
74 +SUBLEVEL = 11
75 EXTRAVERSION =
76 NAME = Fearless Coyote
77
78 diff --git a/arch/arm/boot/dts/am335x-pepper.dts b/arch/arm/boot/dts/am335x-pepper.dts
79 index 03c7d77023c6..9fb7426070ce 100644
80 --- a/arch/arm/boot/dts/am335x-pepper.dts
81 +++ b/arch/arm/boot/dts/am335x-pepper.dts
82 @@ -139,7 +139,7 @@
83 &audio_codec {
84 status = "okay";
85
86 - gpio-reset = <&gpio1 16 GPIO_ACTIVE_LOW>;
87 + reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
88 AVDD-supply = <&ldo3_reg>;
89 IOVDD-supply = <&ldo3_reg>;
90 DRVDD-supply = <&ldo3_reg>;
91 diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
92 index 220cdf109405..9f4672ba9943 100644
93 --- a/arch/arm/boot/dts/exynos4412-trats2.dts
94 +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
95 @@ -454,7 +454,7 @@
96 reg = <0>;
97 vdd3-supply = <&lcd_vdd3_reg>;
98 vci-supply = <&ldo25_reg>;
99 - reset-gpios = <&gpy4 5 GPIO_ACTIVE_HIGH>;
100 + reset-gpios = <&gpf2 1 GPIO_ACTIVE_HIGH>;
101 power-on-delay= <50>;
102 reset-delay = <100>;
103 init-delay = <100>;
104 diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
105 index 669c51c00c00..5362139d5312 100644
106 --- a/arch/arm/boot/dts/omap3-n900.dts
107 +++ b/arch/arm/boot/dts/omap3-n900.dts
108 @@ -558,7 +558,7 @@
109 tlv320aic3x: tlv320aic3x@18 {
110 compatible = "ti,tlv320aic3x";
111 reg = <0x18>;
112 - gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
113 + reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
114 ai3x-gpio-func = <
115 0 /* AIC3X_GPIO1_FUNC_DISABLED */
116 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
117 @@ -575,7 +575,7 @@
118 tlv320aic3x_aux: tlv320aic3x@19 {
119 compatible = "ti,tlv320aic3x";
120 reg = <0x19>;
121 - gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
122 + reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
123
124 AVDD-supply = <&vmmc2>;
125 DRVDD-supply = <&vmmc2>;
126 diff --git a/arch/arm/boot/dts/r8a7791-koelsch.dts b/arch/arm/boot/dts/r8a7791-koelsch.dts
127 index e164eda69baf..4126de417922 100644
128 --- a/arch/arm/boot/dts/r8a7791-koelsch.dts
129 +++ b/arch/arm/boot/dts/r8a7791-koelsch.dts
130 @@ -278,6 +278,12 @@
131 };
132 };
133
134 + cec_clock: cec-clock {
135 + compatible = "fixed-clock";
136 + #clock-cells = <0>;
137 + clock-frequency = <12000000>;
138 + };
139 +
140 hdmi-out {
141 compatible = "hdmi-connector";
142 type = "a";
143 @@ -640,12 +646,6 @@
144 };
145 };
146
147 - cec_clock: cec-clock {
148 - compatible = "fixed-clock";
149 - #clock-cells = <0>;
150 - clock-frequency = <12000000>;
151 - };
152 -
153 hdmi@39 {
154 compatible = "adi,adv7511w";
155 reg = <0x39>;
156 diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
157 index dbe2648649db..7c49b3e8c8fb 100644
158 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
159 +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
160 @@ -263,6 +263,7 @@
161 reg = <0>;
162 interrupt-parent = <&gpio2>;
163 interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
164 + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
165 };
166 };
167
168 diff --git a/arch/powerpc/include/asm/code-patching.h b/arch/powerpc/include/asm/code-patching.h
169 index abef812de7f8..2c895e8d07f7 100644
170 --- a/arch/powerpc/include/asm/code-patching.h
171 +++ b/arch/powerpc/include/asm/code-patching.h
172 @@ -33,6 +33,7 @@ int patch_branch(unsigned int *addr, unsigned long target, int flags);
173 int patch_instruction(unsigned int *addr, unsigned int instr);
174
175 int instr_is_relative_branch(unsigned int instr);
176 +int instr_is_relative_link_branch(unsigned int instr);
177 int instr_is_branch_to_addr(const unsigned int *instr, unsigned long addr);
178 unsigned long branch_target(const unsigned int *instr);
179 unsigned int translate_branch(const unsigned int *dest,
180 diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h
181 index 735cfa35298a..998f7b7aaa9e 100644
182 --- a/arch/powerpc/include/asm/kvm_book3s_64.h
183 +++ b/arch/powerpc/include/asm/kvm_book3s_64.h
184 @@ -122,13 +122,13 @@ static inline int kvmppc_hpte_page_shifts(unsigned long h, unsigned long l)
185 lphi = (l >> 16) & 0xf;
186 switch ((l >> 12) & 0xf) {
187 case 0:
188 - return !lphi ? 24 : -1; /* 16MB */
189 + return !lphi ? 24 : 0; /* 16MB */
190 break;
191 case 1:
192 return 16; /* 64kB */
193 break;
194 case 3:
195 - return !lphi ? 34 : -1; /* 16GB */
196 + return !lphi ? 34 : 0; /* 16GB */
197 break;
198 case 7:
199 return (16 << 8) + 12; /* 64kB in 4kB */
200 @@ -140,7 +140,7 @@ static inline int kvmppc_hpte_page_shifts(unsigned long h, unsigned long l)
201 return (24 << 8) + 12; /* 16MB in 4kB */
202 break;
203 }
204 - return -1;
205 + return 0;
206 }
207
208 static inline int kvmppc_hpte_base_page_shift(unsigned long h, unsigned long l)
209 @@ -159,7 +159,11 @@ static inline int kvmppc_hpte_actual_page_shift(unsigned long h, unsigned long l
210
211 static inline unsigned long kvmppc_actual_pgsz(unsigned long v, unsigned long r)
212 {
213 - return 1ul << kvmppc_hpte_actual_page_shift(v, r);
214 + int shift = kvmppc_hpte_actual_page_shift(v, r);
215 +
216 + if (shift)
217 + return 1ul << shift;
218 + return 0;
219 }
220
221 static inline int kvmppc_pgsize_lp_encoding(int base_shift, int actual_shift)
222 @@ -232,7 +236,7 @@ static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r,
223 va_low ^= v >> (SID_SHIFT_1T - 16);
224 va_low &= 0x7ff;
225
226 - if (b_pgshift == 12) {
227 + if (b_pgshift <= 12) {
228 if (a_pgshift > 12) {
229 sllp = (a_pgshift == 16) ? 5 : 4;
230 rb |= sllp << 5; /* AP field */
231 diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
232 index 2748584b767d..fde89f04f276 100644
233 --- a/arch/powerpc/kernel/entry_64.S
234 +++ b/arch/powerpc/kernel/entry_64.S
235 @@ -939,9 +939,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
236 beq 1f
237 rlwinm r7,r7,0,~PACA_IRQ_HARD_DIS
238 stb r7,PACAIRQHAPPENED(r13)
239 -1: li r0,0
240 - stb r0,PACASOFTIRQEN(r13);
241 - TRACE_DISABLE_INTS
242 +1:
243 +#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_BUG)
244 + /* The interrupt should not have soft enabled. */
245 + lbz r7,PACASOFTIRQEN(r13)
246 +1: tdnei r7,0
247 + EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
248 +#endif
249 b .Ldo_restore
250
251 /*
252 diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
253 index 759104b99f9f..180c16f04063 100644
254 --- a/arch/powerpc/kernel/module_64.c
255 +++ b/arch/powerpc/kernel/module_64.c
256 @@ -487,7 +487,17 @@ static bool is_early_mcount_callsite(u32 *instruction)
257 restore r2. */
258 static int restore_r2(u32 *instruction, struct module *me)
259 {
260 - if (is_early_mcount_callsite(instruction - 1))
261 + u32 *prev_insn = instruction - 1;
262 +
263 + if (is_early_mcount_callsite(prev_insn))
264 + return 1;
265 +
266 + /*
267 + * Make sure the branch isn't a sibling call. Sibling calls aren't
268 + * "link" branches and they don't return, so they don't need the r2
269 + * restore afterwards.
270 + */
271 + if (!instr_is_relative_link_branch(*prev_insn))
272 return 1;
273
274 if (*instruction != PPC_INST_NOP) {
275 diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c
276 index 58618f644c56..0c854816e653 100644
277 --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c
278 +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c
279 @@ -573,7 +573,7 @@ long kvmppc_hv_get_dirty_log_radix(struct kvm *kvm,
280 j = i + 1;
281 if (npages) {
282 set_dirty_bits(map, i, npages);
283 - i = j + npages;
284 + j = i + npages;
285 }
286 }
287 return 0;
288 diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c
289 index d469224c4ada..096d4e4d31e6 100644
290 --- a/arch/powerpc/lib/code-patching.c
291 +++ b/arch/powerpc/lib/code-patching.c
292 @@ -302,6 +302,11 @@ int instr_is_relative_branch(unsigned int instr)
293 return instr_is_branch_iform(instr) || instr_is_branch_bform(instr);
294 }
295
296 +int instr_is_relative_link_branch(unsigned int instr)
297 +{
298 + return instr_is_relative_branch(instr) && (instr & BRANCH_SET_LINK);
299 +}
300 +
301 static unsigned long branch_iform_target(const unsigned int *instr)
302 {
303 signed long imm;
304 diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
305 index 1f790cf9d38f..3b7427aa7d85 100644
306 --- a/arch/x86/kernel/machine_kexec_64.c
307 +++ b/arch/x86/kernel/machine_kexec_64.c
308 @@ -542,6 +542,7 @@ int arch_kexec_apply_relocations_add(const Elf64_Ehdr *ehdr,
309 goto overflow;
310 break;
311 case R_X86_64_PC32:
312 + case R_X86_64_PLT32:
313 value -= (u64)address;
314 *(u32 *)location = value;
315 break;
316 diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
317 index da0c160e5589..f58336af095c 100644
318 --- a/arch/x86/kernel/module.c
319 +++ b/arch/x86/kernel/module.c
320 @@ -191,6 +191,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
321 goto overflow;
322 break;
323 case R_X86_64_PC32:
324 + case R_X86_64_PLT32:
325 if (*(u32 *)loc != 0)
326 goto invalid_relocation;
327 val -= (u64)loc;
328 diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
329 index e080dbe55360..fe2cb4cfa75b 100644
330 --- a/arch/x86/kvm/mmu.c
331 +++ b/arch/x86/kvm/mmu.c
332 @@ -4951,6 +4951,16 @@ int kvm_mmu_page_fault(struct kvm_vcpu *vcpu, gva_t cr2, u64 error_code,
333 if (mmio_info_in_cache(vcpu, cr2, direct))
334 emulation_type = 0;
335 emulate:
336 + /*
337 + * On AMD platforms, under certain conditions insn_len may be zero on #NPF.
338 + * This can happen if a guest gets a page-fault on data access but the HW
339 + * table walker is not able to read the instruction page (e.g instruction
340 + * page is not present in memory). In those cases we simply restart the
341 + * guest.
342 + */
343 + if (unlikely(insn && !insn_len))
344 + return 1;
345 +
346 er = x86_emulate_instruction(vcpu, cr2, emulation_type, insn, insn_len);
347
348 switch (er) {
349 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
350 index 3505afabce5d..76bbca2c8159 100644
351 --- a/arch/x86/kvm/svm.c
352 +++ b/arch/x86/kvm/svm.c
353 @@ -2178,7 +2178,8 @@ static int pf_interception(struct vcpu_svm *svm)
354 u64 error_code = svm->vmcb->control.exit_info_1;
355
356 return kvm_handle_page_fault(&svm->vcpu, error_code, fault_address,
357 - svm->vmcb->control.insn_bytes,
358 + static_cpu_has(X86_FEATURE_DECODEASSISTS) ?
359 + svm->vmcb->control.insn_bytes : NULL,
360 svm->vmcb->control.insn_len);
361 }
362
363 @@ -2189,7 +2190,8 @@ static int npf_interception(struct vcpu_svm *svm)
364
365 trace_kvm_page_fault(fault_address, error_code);
366 return kvm_mmu_page_fault(&svm->vcpu, fault_address, error_code,
367 - svm->vmcb->control.insn_bytes,
368 + static_cpu_has(X86_FEATURE_DECODEASSISTS) ?
369 + svm->vmcb->control.insn_bytes : NULL,
370 svm->vmcb->control.insn_len);
371 }
372
373 diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
374 index 5d73c443e778..220e97841e49 100644
375 --- a/arch/x86/tools/relocs.c
376 +++ b/arch/x86/tools/relocs.c
377 @@ -770,9 +770,12 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,
378 break;
379
380 case R_X86_64_PC32:
381 + case R_X86_64_PLT32:
382 /*
383 * PC relative relocations don't need to be adjusted unless
384 * referencing a percpu symbol.
385 + *
386 + * NB: R_X86_64_PLT32 can be treated as R_X86_64_PC32.
387 */
388 if (is_percpu_sym(sym, symname))
389 add_reloc(&relocs32neg, offset);
390 diff --git a/crypto/ecc.c b/crypto/ecc.c
391 index 633a9bcdc574..18f32f2a5e1c 100644
392 --- a/crypto/ecc.c
393 +++ b/crypto/ecc.c
394 @@ -964,7 +964,7 @@ int ecc_gen_privkey(unsigned int curve_id, unsigned int ndigits, u64 *privkey)
395 * DRBG with a security strength of 256.
396 */
397 if (crypto_get_default_rng())
398 - err = -EFAULT;
399 + return -EFAULT;
400
401 err = crypto_rng_get_bytes(crypto_default_rng, (u8 *)priv, nbytes);
402 crypto_put_default_rng();
403 diff --git a/crypto/keywrap.c b/crypto/keywrap.c
404 index 744e35134c45..ec5c6a087c90 100644
405 --- a/crypto/keywrap.c
406 +++ b/crypto/keywrap.c
407 @@ -188,7 +188,7 @@ static int crypto_kw_decrypt(struct blkcipher_desc *desc,
408 }
409
410 /* Perform authentication check */
411 - if (block.A != cpu_to_be64(0xa6a6a6a6a6a6a6a6))
412 + if (block.A != cpu_to_be64(0xa6a6a6a6a6a6a6a6ULL))
413 ret = -EBADMSG;
414
415 memzero_explicit(&block, sizeof(struct crypto_kw_block));
416 @@ -221,7 +221,7 @@ static int crypto_kw_encrypt(struct blkcipher_desc *desc,
417 * Place the predefined IV into block A -- for encrypt, the caller
418 * does not need to provide an IV, but he needs to fetch the final IV.
419 */
420 - block.A = cpu_to_be64(0xa6a6a6a6a6a6a6a6);
421 + block.A = cpu_to_be64(0xa6a6a6a6a6a6a6a6ULL);
422
423 /*
424 * src scatterlist is read-only. dst scatterlist is r/w. During the
425 diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
426 index 2415ad9f6dd4..49fd50fccd48 100644
427 --- a/drivers/base/Kconfig
428 +++ b/drivers/base/Kconfig
429 @@ -249,6 +249,7 @@ config DMA_SHARED_BUFFER
430 bool
431 default n
432 select ANON_INODES
433 + select IRQ_WORK
434 help
435 This option enables the framework for buffer-sharing between
436 multiple drivers. A buffer is associated with a file using driver
437 diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
438 index 9b6b6023193b..dde7caac7f9f 100644
439 --- a/drivers/char/agp/intel-gtt.c
440 +++ b/drivers/char/agp/intel-gtt.c
441 @@ -872,6 +872,8 @@ void intel_gtt_insert_sg_entries(struct sg_table *st,
442 }
443 }
444 wmb();
445 + if (intel_private.driver->chipset_flush)
446 + intel_private.driver->chipset_flush();
447 }
448 EXPORT_SYMBOL(intel_gtt_insert_sg_entries);
449
450 diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
451 index ae385310e980..2ac9f3fa9578 100644
452 --- a/drivers/clk/meson/gxbb.c
453 +++ b/drivers/clk/meson/gxbb.c
454 @@ -1386,7 +1386,7 @@ static MESON_GATE(gxbb_pl301, HHI_GCLK_MPEG0, 6);
455 static MESON_GATE(gxbb_periphs, HHI_GCLK_MPEG0, 7);
456 static MESON_GATE(gxbb_spicc, HHI_GCLK_MPEG0, 8);
457 static MESON_GATE(gxbb_i2c, HHI_GCLK_MPEG0, 9);
458 -static MESON_GATE(gxbb_sar_adc, HHI_GCLK_MPEG0, 10);
459 +static MESON_GATE(gxbb_sana, HHI_GCLK_MPEG0, 10);
460 static MESON_GATE(gxbb_smart_card, HHI_GCLK_MPEG0, 11);
461 static MESON_GATE(gxbb_rng0, HHI_GCLK_MPEG0, 12);
462 static MESON_GATE(gxbb_uart0, HHI_GCLK_MPEG0, 13);
463 @@ -1437,7 +1437,7 @@ static MESON_GATE(gxbb_usb0_ddr_bridge, HHI_GCLK_MPEG2, 9);
464 static MESON_GATE(gxbb_mmc_pclk, HHI_GCLK_MPEG2, 11);
465 static MESON_GATE(gxbb_dvin, HHI_GCLK_MPEG2, 12);
466 static MESON_GATE(gxbb_uart2, HHI_GCLK_MPEG2, 15);
467 -static MESON_GATE(gxbb_sana, HHI_GCLK_MPEG2, 22);
468 +static MESON_GATE(gxbb_sar_adc, HHI_GCLK_MPEG2, 22);
469 static MESON_GATE(gxbb_vpu_intr, HHI_GCLK_MPEG2, 25);
470 static MESON_GATE(gxbb_sec_ahb_ahb3_bridge, HHI_GCLK_MPEG2, 26);
471 static MESON_GATE(gxbb_clk81_a53, HHI_GCLK_MPEG2, 29);
472 diff --git a/drivers/clk/qcom/gcc-msm8916.c b/drivers/clk/qcom/gcc-msm8916.c
473 index 3410ee68d4bc..2057809219f4 100644
474 --- a/drivers/clk/qcom/gcc-msm8916.c
475 +++ b/drivers/clk/qcom/gcc-msm8916.c
476 @@ -1438,6 +1438,7 @@ static const struct freq_tbl ftbl_codec_clk[] = {
477
478 static struct clk_rcg2 codec_digcodec_clk_src = {
479 .cmd_rcgr = 0x1c09c,
480 + .mnd_width = 8,
481 .hid_width = 5,
482 .parent_map = gcc_xo_gpll1_emclk_sleep_map,
483 .freq_tbl = ftbl_codec_clk,
484 diff --git a/drivers/clk/renesas/r8a77970-cpg-mssr.c b/drivers/clk/renesas/r8a77970-cpg-mssr.c
485 index 72f98527473a..f55842917e8d 100644
486 --- a/drivers/clk/renesas/r8a77970-cpg-mssr.c
487 +++ b/drivers/clk/renesas/r8a77970-cpg-mssr.c
488 @@ -105,6 +105,7 @@ static const struct mssr_mod_clk r8a77970_mod_clks[] __initconst = {
489 DEF_MOD("vspd0", 623, R8A77970_CLK_S2D1),
490 DEF_MOD("csi40", 716, R8A77970_CLK_CSI0),
491 DEF_MOD("du0", 724, R8A77970_CLK_S2D1),
492 + DEF_MOD("lvds", 727, R8A77970_CLK_S2D1),
493 DEF_MOD("vin3", 808, R8A77970_CLK_S2D1),
494 DEF_MOD("vin2", 809, R8A77970_CLK_S2D1),
495 DEF_MOD("vin1", 810, R8A77970_CLK_S2D1),
496 diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
497 index 41d148af7748..d6a3038a128d 100644
498 --- a/drivers/cpufreq/cpufreq.c
499 +++ b/drivers/cpufreq/cpufreq.c
500 @@ -637,6 +637,8 @@ static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
501 *governor = t;
502 err = 0;
503 }
504 + if (t && !try_module_get(t->owner))
505 + t = NULL;
506
507 mutex_unlock(&cpufreq_governor_mutex);
508 }
509 @@ -765,6 +767,10 @@ static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
510 return -EINVAL;
511
512 ret = cpufreq_set_policy(policy, &new_policy);
513 +
514 + if (new_policy.governor)
515 + module_put(new_policy.governor->owner);
516 +
517 return ret ? ret : count;
518 }
519
520 diff --git a/drivers/crypto/caam/caamalg_qi.c b/drivers/crypto/caam/caamalg_qi.c
521 index f9f08fce4356..ad14b69a052e 100644
522 --- a/drivers/crypto/caam/caamalg_qi.c
523 +++ b/drivers/crypto/caam/caamalg_qi.c
524 @@ -668,7 +668,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req,
525 qm_sg_ents = 1 + !!ivsize + mapped_src_nents +
526 (mapped_dst_nents > 1 ? mapped_dst_nents : 0);
527 if (unlikely(qm_sg_ents > CAAM_QI_MAX_AEAD_SG)) {
528 - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
529 + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
530 qm_sg_ents, CAAM_QI_MAX_AEAD_SG);
531 caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
532 iv_dma, ivsize, op_type, 0, 0);
533 @@ -905,7 +905,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request
534
535 qm_sg_ents += mapped_dst_nents > 1 ? mapped_dst_nents : 0;
536 if (unlikely(qm_sg_ents > CAAM_QI_MAX_ABLKCIPHER_SG)) {
537 - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
538 + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
539 qm_sg_ents, CAAM_QI_MAX_ABLKCIPHER_SG);
540 caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
541 iv_dma, ivsize, op_type, 0, 0);
542 @@ -1058,7 +1058,7 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc(
543 }
544
545 if (unlikely(qm_sg_ents > CAAM_QI_MAX_ABLKCIPHER_SG)) {
546 - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
547 + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
548 qm_sg_ents, CAAM_QI_MAX_ABLKCIPHER_SG);
549 caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
550 iv_dma, ivsize, GIVENCRYPT, 0, 0);
551 diff --git a/drivers/crypto/cavium/cpt/cptvf_reqmanager.c b/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
552 index 169e66231bcf..b0ba4331944b 100644
553 --- a/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
554 +++ b/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
555 @@ -459,7 +459,8 @@ int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req)
556 info->completion_addr = kzalloc(sizeof(union cpt_res_s), GFP_KERNEL);
557 if (unlikely(!info->completion_addr)) {
558 dev_err(&pdev->dev, "Unable to allocate memory for completion_addr\n");
559 - return -ENOMEM;
560 + ret = -ENOMEM;
561 + goto request_cleanup;
562 }
563
564 result = (union cpt_res_s *)info->completion_addr;
565 diff --git a/drivers/crypto/chelsio/chcr_algo.c b/drivers/crypto/chelsio/chcr_algo.c
566 index 4eed7171e2ae..38fe59b5c689 100644
567 --- a/drivers/crypto/chelsio/chcr_algo.c
568 +++ b/drivers/crypto/chelsio/chcr_algo.c
569 @@ -2414,7 +2414,7 @@ static inline int chcr_hash_dma_map(struct device *dev,
570 error = dma_map_sg(dev, req->src, sg_nents(req->src),
571 DMA_TO_DEVICE);
572 if (!error)
573 - return error;
574 + return -ENOMEM;
575 req_ctx->is_sg_map = 1;
576 return 0;
577 }
578 diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c
579 index 0350829ba62e..dd1edfb27b61 100644
580 --- a/drivers/dma-buf/dma-fence-array.c
581 +++ b/drivers/dma-buf/dma-fence-array.c
582 @@ -31,6 +31,14 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence)
583 return "unbound";
584 }
585
586 +static void irq_dma_fence_array_work(struct irq_work *wrk)
587 +{
588 + struct dma_fence_array *array = container_of(wrk, typeof(*array), work);
589 +
590 + dma_fence_signal(&array->base);
591 + dma_fence_put(&array->base);
592 +}
593 +
594 static void dma_fence_array_cb_func(struct dma_fence *f,
595 struct dma_fence_cb *cb)
596 {
597 @@ -39,8 +47,9 @@ static void dma_fence_array_cb_func(struct dma_fence *f,
598 struct dma_fence_array *array = array_cb->array;
599
600 if (atomic_dec_and_test(&array->num_pending))
601 - dma_fence_signal(&array->base);
602 - dma_fence_put(&array->base);
603 + irq_work_queue(&array->work);
604 + else
605 + dma_fence_put(&array->base);
606 }
607
608 static bool dma_fence_array_enable_signaling(struct dma_fence *fence)
609 @@ -136,6 +145,7 @@ struct dma_fence_array *dma_fence_array_create(int num_fences,
610 spin_lock_init(&array->lock);
611 dma_fence_init(&array->base, &dma_fence_array_ops, &array->lock,
612 context, seqno);
613 + init_irq_work(&array->work, irq_dma_fence_array_work);
614
615 array->num_fences = num_fences;
616 atomic_set(&array->num_pending, signal_on_any ? 1 : num_fences);
617 diff --git a/drivers/dma/qcom/hidma_ll.c b/drivers/dma/qcom/hidma_ll.c
618 index 4999e266b2de..7c6e2ff212a2 100644
619 --- a/drivers/dma/qcom/hidma_ll.c
620 +++ b/drivers/dma/qcom/hidma_ll.c
621 @@ -393,6 +393,8 @@ static int hidma_ll_reset(struct hidma_lldev *lldev)
622 */
623 static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
624 {
625 + unsigned long irqflags;
626 +
627 if (cause & HIDMA_ERR_INT_MASK) {
628 dev_err(lldev->dev, "error 0x%x, disabling...\n",
629 cause);
630 @@ -410,6 +412,10 @@ static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
631 return;
632 }
633
634 + spin_lock_irqsave(&lldev->lock, irqflags);
635 + writel_relaxed(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG);
636 + spin_unlock_irqrestore(&lldev->lock, irqflags);
637 +
638 /*
639 * Fine tuned for this HW...
640 *
641 @@ -421,9 +427,6 @@ static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
642 * Try to consume as many EVREs as possible.
643 */
644 hidma_handle_tre_completion(lldev);
645 -
646 - /* We consumed TREs or there are pending TREs or EVREs. */
647 - writel_relaxed(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG);
648 }
649
650 irqreturn_t hidma_ll_inthandler(int chirq, void *arg)
651 diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
652 index f6efcf94f6ad..7a5cf5b08c54 100644
653 --- a/drivers/gpio/gpiolib.c
654 +++ b/drivers/gpio/gpiolib.c
655 @@ -460,6 +460,15 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
656 if (lflags & ~GPIOHANDLE_REQUEST_VALID_FLAGS)
657 return -EINVAL;
658
659 + /*
660 + * Do not allow OPEN_SOURCE & OPEN_DRAIN flags in a single request. If
661 + * the hardware actually supports enabling both at the same time the
662 + * electrical result would be disastrous.
663 + */
664 + if ((lflags & GPIOHANDLE_REQUEST_OPEN_DRAIN) &&
665 + (lflags & GPIOHANDLE_REQUEST_OPEN_SOURCE))
666 + return -EINVAL;
667 +
668 /* OPEN_DRAIN and OPEN_SOURCE flags only make sense for output mode. */
669 if (!(lflags & GPIOHANDLE_REQUEST_OUTPUT) &&
670 ((lflags & GPIOHANDLE_REQUEST_OPEN_DRAIN) ||
671 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
672 index 5432af39a674..f7fa7675215c 100644
673 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
674 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
675 @@ -265,6 +265,9 @@ uint32_t get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
676 {
677 struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
678
679 - /* The sclk is in quantas of 10kHz */
680 - return adev->pm.dpm.dyn_state.max_clock_voltage_on_ac.sclk / 100;
681 + /* the sclk is in quantas of 10kHz */
682 + if (amdgpu_sriov_vf(adev))
683 + return adev->clock.default_sclk / 100;
684 +
685 + return amdgpu_dpm_get_sclk(adev, false) / 100;
686 }
687 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
688 index a4bf21f8f1c1..bbbc40d630a0 100644
689 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
690 +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
691 @@ -191,9 +191,6 @@ int amdgpu_sync_resv(struct amdgpu_device *adev,
692 f = reservation_object_get_excl(resv);
693 r = amdgpu_sync_fence(adev, sync, f);
694
695 - if (explicit_sync)
696 - return r;
697 -
698 flist = reservation_object_get_list(resv);
699 if (!flist || r)
700 return r;
701 @@ -212,11 +209,11 @@ int amdgpu_sync_resv(struct amdgpu_device *adev,
702 (fence_owner == AMDGPU_FENCE_OWNER_VM)))
703 continue;
704
705 - /* Ignore fence from the same owner as
706 + /* Ignore fence from the same owner and explicit one as
707 * long as it isn't undefined.
708 */
709 if (owner != AMDGPU_FENCE_OWNER_UNDEFINED &&
710 - fence_owner == owner)
711 + (fence_owner == owner || explicit_sync))
712 continue;
713 }
714
715 diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
716 index a8829af120c1..39460eb1e71a 100644
717 --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
718 +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
719 @@ -437,6 +437,8 @@ static int dce_virtual_sw_fini(void *handle)
720 drm_kms_helper_poll_fini(adev->ddev);
721
722 drm_mode_config_cleanup(adev->ddev);
723 + /* clear crtcs pointer to avoid dce irq finish routine access freed data */
724 + memset(adev->mode_info.crtcs, 0, sizeof(adev->mode_info.crtcs[0]) * AMDGPU_MAX_CRTCS);
725 adev->mode_info.mode_config_initialized = false;
726 return 0;
727 }
728 @@ -723,7 +725,7 @@ static void dce_virtual_set_crtc_vblank_interrupt_state(struct amdgpu_device *ad
729 int crtc,
730 enum amdgpu_interrupt_state state)
731 {
732 - if (crtc >= adev->mode_info.num_crtc) {
733 + if (crtc >= adev->mode_info.num_crtc || !adev->mode_info.crtcs[crtc]) {
734 DRM_DEBUG("invalid crtc %d\n", crtc);
735 return;
736 }
737 diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
738 index b4906d2f30d3..0031f8f34db5 100644
739 --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
740 +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
741 @@ -282,9 +282,17 @@ static int xgpu_ai_mailbox_rcv_irq(struct amdgpu_device *adev,
742 /* see what event we get */
743 r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
744
745 - /* only handle FLR_NOTIFY now */
746 - if (!r)
747 - schedule_work(&adev->virt.flr_work);
748 + /* sometimes the interrupt is delayed to inject to VM, so under such case
749 + * the IDH_FLR_NOTIFICATION is overwritten by VF FLR from GIM side, thus
750 + * above recieve message could be failed, we should schedule the flr_work
751 + * anyway
752 + */
753 + if (r) {
754 + DRM_ERROR("FLR_NOTIFICATION is missed\n");
755 + xgpu_ai_mailbox_send_ack(adev);
756 + }
757 +
758 + schedule_work(&adev->virt.flr_work);
759 }
760
761 return 0;
762 diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
763 index 19ce59028d6b..e0b78fd9804d 100644
764 --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
765 +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
766 @@ -501,11 +501,17 @@ static ssize_t sysprops_show(struct kobject *kobj, struct attribute *attr,
767 return ret;
768 }
769
770 +static void kfd_topology_kobj_release(struct kobject *kobj)
771 +{
772 + kfree(kobj);
773 +}
774 +
775 static const struct sysfs_ops sysprops_ops = {
776 .show = sysprops_show,
777 };
778
779 static struct kobj_type sysprops_type = {
780 + .release = kfd_topology_kobj_release,
781 .sysfs_ops = &sysprops_ops,
782 };
783
784 @@ -541,6 +547,7 @@ static const struct sysfs_ops iolink_ops = {
785 };
786
787 static struct kobj_type iolink_type = {
788 + .release = kfd_topology_kobj_release,
789 .sysfs_ops = &iolink_ops,
790 };
791
792 @@ -568,6 +575,7 @@ static const struct sysfs_ops mem_ops = {
793 };
794
795 static struct kobj_type mem_type = {
796 + .release = kfd_topology_kobj_release,
797 .sysfs_ops = &mem_ops,
798 };
799
800 @@ -607,6 +615,7 @@ static const struct sysfs_ops cache_ops = {
801 };
802
803 static struct kobj_type cache_type = {
804 + .release = kfd_topology_kobj_release,
805 .sysfs_ops = &cache_ops,
806 };
807
808 @@ -729,6 +738,7 @@ static const struct sysfs_ops node_ops = {
809 };
810
811 static struct kobj_type node_type = {
812 + .release = kfd_topology_kobj_release,
813 .sysfs_ops = &node_ops,
814 };
815
816 diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
817 index 16fb76ba6509..96afdb4d3ecf 100644
818 --- a/drivers/gpu/drm/drm_edid.c
819 +++ b/drivers/gpu/drm/drm_edid.c
820 @@ -3843,8 +3843,7 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name);
821 * @edid: EDID to parse
822 *
823 * Fill the ELD (EDID-Like Data) buffer for passing to the audio driver. The
824 - * Conn_Type, HDCP and Port_ID ELD fields are left for the graphics driver to
825 - * fill in.
826 + * HDCP and Port_ID ELD fields are left for the graphics driver to fill in.
827 */
828 void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
829 {
830 @@ -3925,6 +3924,12 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
831 }
832 eld[5] |= total_sad_count << 4;
833
834 + if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
835 + connector->connector_type == DRM_MODE_CONNECTOR_eDP)
836 + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_DP;
837 + else
838 + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_HDMI;
839 +
840 eld[DRM_ELD_BASELINE_ELD_LEN] =
841 DIV_ROUND_UP(drm_eld_calc_baseline_block_size(eld), 4);
842
843 diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
844 index 3717b3df34a4..32d9bcf5be7f 100644
845 --- a/drivers/gpu/drm/drm_vblank.c
846 +++ b/drivers/gpu/drm/drm_vblank.c
847 @@ -663,14 +663,16 @@ bool drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
848 delta_ns = div_s64(1000000LL * (vpos * mode->crtc_htotal + hpos),
849 mode->crtc_clock);
850
851 - /* save this only for debugging purposes */
852 - ts_etime = ktime_to_timespec64(etime);
853 - ts_vblank_time = ktime_to_timespec64(*vblank_time);
854 /* Subtract time delta from raw timestamp to get final
855 * vblank_time timestamp for end of vblank.
856 */
857 - etime = ktime_sub_ns(etime, delta_ns);
858 - *vblank_time = etime;
859 + *vblank_time = ktime_sub_ns(etime, delta_ns);
860 +
861 + if ((drm_debug & DRM_UT_VBL) == 0)
862 + return true;
863 +
864 + ts_etime = ktime_to_timespec64(etime);
865 + ts_vblank_time = ktime_to_timespec64(*vblank_time);
866
867 DRM_DEBUG_VBL("crtc %u : v p(%d,%d)@ %lld.%06ld -> %lld.%06ld [e %d us, %d rep]\n",
868 pipe, hpos, vpos,
869 diff --git a/drivers/gpu/drm/etnaviv/Kconfig b/drivers/gpu/drm/etnaviv/Kconfig
870 index a29b8f59eb15..3f58b4077767 100644
871 --- a/drivers/gpu/drm/etnaviv/Kconfig
872 +++ b/drivers/gpu/drm/etnaviv/Kconfig
873 @@ -6,6 +6,7 @@ config DRM_ETNAVIV
874 depends on MMU
875 select SHMEM
876 select SYNC_FILE
877 + select THERMAL if DRM_ETNAVIV_THERMAL
878 select TMPFS
879 select WANT_DEV_COREDUMP
880 select CMA if HAVE_DMA_CONTIGUOUS
881 @@ -13,6 +14,14 @@ config DRM_ETNAVIV
882 help
883 DRM driver for Vivante GPUs.
884
885 +config DRM_ETNAVIV_THERMAL
886 + bool "enable ETNAVIV thermal throttling"
887 + depends on DRM_ETNAVIV
888 + default y
889 + help
890 + Compile in support for thermal throttling.
891 + Say Y unless you want to risk burning your SoC.
892 +
893 config DRM_ETNAVIV_REGISTER_LOGGING
894 bool "enable ETNAVIV register logging"
895 depends on DRM_ETNAVIV
896 diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
897 index e19cbe05da2a..968cbc2be9c4 100644
898 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
899 +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
900 @@ -1738,7 +1738,7 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
901 struct etnaviv_gpu *gpu = dev_get_drvdata(dev);
902 int ret;
903
904 - if (IS_ENABLED(CONFIG_THERMAL)) {
905 + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL)) {
906 gpu->cooling = thermal_of_cooling_device_register(dev->of_node,
907 (char *)dev_name(dev), gpu, &cooling_ops);
908 if (IS_ERR(gpu->cooling))
909 @@ -1751,7 +1751,8 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
910 ret = etnaviv_gpu_clk_enable(gpu);
911 #endif
912 if (ret < 0) {
913 - thermal_cooling_device_unregister(gpu->cooling);
914 + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL))
915 + thermal_cooling_device_unregister(gpu->cooling);
916 return ret;
917 }
918
919 @@ -1808,7 +1809,8 @@ static void etnaviv_gpu_unbind(struct device *dev, struct device *master,
920
921 gpu->drm = NULL;
922
923 - thermal_cooling_device_unregister(gpu->cooling);
924 + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL))
925 + thermal_cooling_device_unregister(gpu->cooling);
926 gpu->cooling = NULL;
927 }
928
929 diff --git a/drivers/gpu/drm/i915/intel_guc_fw.c b/drivers/gpu/drm/i915/intel_guc_fw.c
930 index ef67a36354c5..cd05bdea46d3 100644
931 --- a/drivers/gpu/drm/i915/intel_guc_fw.c
932 +++ b/drivers/gpu/drm/i915/intel_guc_fw.c
933 @@ -39,9 +39,6 @@
934 #define KBL_FW_MAJOR 9
935 #define KBL_FW_MINOR 14
936
937 -#define GLK_FW_MAJOR 10
938 -#define GLK_FW_MINOR 56
939 -
940 #define GUC_FW_PATH(platform, major, minor) \
941 "i915/" __stringify(platform) "_guc_ver" __stringify(major) "_" __stringify(minor) ".bin"
942
943 @@ -54,8 +51,6 @@ MODULE_FIRMWARE(I915_BXT_GUC_UCODE);
944 #define I915_KBL_GUC_UCODE GUC_FW_PATH(kbl, KBL_FW_MAJOR, KBL_FW_MINOR)
945 MODULE_FIRMWARE(I915_KBL_GUC_UCODE);
946
947 -#define I915_GLK_GUC_UCODE GUC_FW_PATH(glk, GLK_FW_MAJOR, GLK_FW_MINOR)
948 -
949 /**
950 * intel_guc_fw_select() - selects GuC firmware for uploading
951 *
952 @@ -85,10 +80,6 @@ int intel_guc_fw_select(struct intel_guc *guc)
953 guc->fw.path = I915_KBL_GUC_UCODE;
954 guc->fw.major_ver_wanted = KBL_FW_MAJOR;
955 guc->fw.minor_ver_wanted = KBL_FW_MINOR;
956 - } else if (IS_GEMINILAKE(dev_priv)) {
957 - guc->fw.path = I915_GLK_GUC_UCODE;
958 - guc->fw.major_ver_wanted = GLK_FW_MAJOR;
959 - guc->fw.minor_ver_wanted = GLK_FW_MINOR;
960 } else {
961 DRM_ERROR("No GuC firmware known for platform with GuC!\n");
962 return -ENOENT;
963 diff --git a/drivers/gpu/drm/i915/intel_huc.c b/drivers/gpu/drm/i915/intel_huc.c
964 index c8a48cbc2b7d..c3460c4a7b54 100644
965 --- a/drivers/gpu/drm/i915/intel_huc.c
966 +++ b/drivers/gpu/drm/i915/intel_huc.c
967 @@ -54,10 +54,6 @@
968 #define KBL_HUC_FW_MINOR 00
969 #define KBL_BLD_NUM 1810
970
971 -#define GLK_HUC_FW_MAJOR 02
972 -#define GLK_HUC_FW_MINOR 00
973 -#define GLK_BLD_NUM 1748
974 -
975 #define HUC_FW_PATH(platform, major, minor, bld_num) \
976 "i915/" __stringify(platform) "_huc_ver" __stringify(major) "_" \
977 __stringify(minor) "_" __stringify(bld_num) ".bin"
978 @@ -74,9 +70,6 @@ MODULE_FIRMWARE(I915_BXT_HUC_UCODE);
979 KBL_HUC_FW_MINOR, KBL_BLD_NUM)
980 MODULE_FIRMWARE(I915_KBL_HUC_UCODE);
981
982 -#define I915_GLK_HUC_UCODE HUC_FW_PATH(glk, GLK_HUC_FW_MAJOR, \
983 - GLK_HUC_FW_MINOR, GLK_BLD_NUM)
984 -
985 /**
986 * intel_huc_select_fw() - selects HuC firmware for loading
987 * @huc: intel_huc struct
988 @@ -103,10 +96,6 @@ void intel_huc_select_fw(struct intel_huc *huc)
989 huc->fw.path = I915_KBL_HUC_UCODE;
990 huc->fw.major_ver_wanted = KBL_HUC_FW_MAJOR;
991 huc->fw.minor_ver_wanted = KBL_HUC_FW_MINOR;
992 - } else if (IS_GEMINILAKE(dev_priv)) {
993 - huc->fw.path = I915_GLK_HUC_UCODE;
994 - huc->fw.major_ver_wanted = GLK_HUC_FW_MAJOR;
995 - huc->fw.minor_ver_wanted = GLK_HUC_FW_MINOR;
996 } else {
997 DRM_ERROR("No HuC firmware known for platform with HuC!\n");
998 return;
999 diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
1000 index 890fd6ff397c..d964d454e4ae 100644
1001 --- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
1002 +++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
1003 @@ -221,7 +221,7 @@ static struct rpi_touchscreen *panel_to_ts(struct drm_panel *panel)
1004 return container_of(panel, struct rpi_touchscreen, base);
1005 }
1006
1007 -static u8 rpi_touchscreen_i2c_read(struct rpi_touchscreen *ts, u8 reg)
1008 +static int rpi_touchscreen_i2c_read(struct rpi_touchscreen *ts, u8 reg)
1009 {
1010 return i2c_smbus_read_byte_data(ts->i2c, reg);
1011 }
1012 diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h
1013 index 4785ac090b8c..c142fbb8661e 100644
1014 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h
1015 +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h
1016 @@ -80,7 +80,7 @@
1017
1018 #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN BIT(0)
1019 #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_MASK GENMASK(2, 1)
1020 -#define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK GENMASK(11, 8)
1021 +#define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK GENMASK(12, 8)
1022 #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MASK GENMASK(31, 24)
1023 #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_DEF (1 << 1)
1024 #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_ARGB8888 (0 << 8)
1025 diff --git a/drivers/hid/hid-elo.c b/drivers/hid/hid-elo.c
1026 index 0cd4f7216239..5eea6fe0d7bd 100644
1027 --- a/drivers/hid/hid-elo.c
1028 +++ b/drivers/hid/hid-elo.c
1029 @@ -42,6 +42,12 @@ static int elo_input_configured(struct hid_device *hdev,
1030 {
1031 struct input_dev *input = hidinput->input;
1032
1033 + /*
1034 + * ELO devices have one Button usage in GenDesk field, which makes
1035 + * hid-input map it to BTN_LEFT; that confuses userspace, which then
1036 + * considers the device to be a mouse/touchpad instead of touchscreen.
1037 + */
1038 + clear_bit(BTN_LEFT, input->keybit);
1039 set_bit(BTN_TOUCH, input->keybit);
1040 set_bit(ABS_PRESSURE, input->absbit);
1041 input_set_abs_params(input, ABS_PRESSURE, 0, 256, 0, 0);
1042 diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
1043 index 65ea23be9677..397592959238 100644
1044 --- a/drivers/hid/hid-multitouch.c
1045 +++ b/drivers/hid/hid-multitouch.c
1046 @@ -778,9 +778,11 @@ static int mt_touch_event(struct hid_device *hid, struct hid_field *field,
1047 }
1048
1049 static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
1050 - struct hid_usage *usage, __s32 value)
1051 + struct hid_usage *usage, __s32 value,
1052 + bool first_packet)
1053 {
1054 struct mt_device *td = hid_get_drvdata(hid);
1055 + __s32 cls = td->mtclass.name;
1056 __s32 quirks = td->mtclass.quirks;
1057 struct input_dev *input = field->hidinput->input;
1058
1059 @@ -837,6 +839,15 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
1060 break;
1061
1062 default:
1063 + /*
1064 + * For Win8 PTP touchpads we should only look at
1065 + * non finger/touch events in the first_packet of
1066 + * a (possible) multi-packet frame.
1067 + */
1068 + if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
1069 + !first_packet)
1070 + return;
1071 +
1072 if (usage->type)
1073 input_event(input, usage->type, usage->code,
1074 value);
1075 @@ -856,6 +867,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
1076 {
1077 struct mt_device *td = hid_get_drvdata(hid);
1078 struct hid_field *field;
1079 + bool first_packet;
1080 unsigned count;
1081 int r, n;
1082
1083 @@ -874,6 +886,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
1084 td->num_expected = value;
1085 }
1086
1087 + first_packet = td->num_received == 0;
1088 for (r = 0; r < report->maxfield; r++) {
1089 field = report->field[r];
1090 count = field->report_count;
1091 @@ -883,7 +896,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
1092
1093 for (n = 0; n < count; n++)
1094 mt_process_mt_event(hid, field, &field->usage[n],
1095 - field->value[n]);
1096 + field->value[n], first_packet);
1097 }
1098
1099 if (td->num_received >= td->num_expected)
1100 diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx-adc.c
1101 index 84a43871f7dc..651dc9df2a7b 100644
1102 --- a/drivers/iio/adc/ina2xx-adc.c
1103 +++ b/drivers/iio/adc/ina2xx-adc.c
1104 @@ -44,7 +44,6 @@
1105
1106 #define INA226_MASK_ENABLE 0x06
1107 #define INA226_CVRF BIT(3)
1108 -#define INA219_CNVR BIT(1)
1109
1110 #define INA2XX_MAX_REGISTERS 8
1111
1112 @@ -79,6 +78,11 @@
1113 #define INA226_ITS_MASK GENMASK(5, 3)
1114 #define INA226_SHIFT_ITS(val) ((val) << 3)
1115
1116 +/* INA219 Bus voltage register, low bits are flags */
1117 +#define INA219_OVF BIT(0)
1118 +#define INA219_CNVR BIT(1)
1119 +#define INA219_BUS_VOLTAGE_SHIFT 3
1120 +
1121 /* Cosmetic macro giving the sampling period for a full P=UxI cycle */
1122 #define SAMPLING_PERIOD(c) ((c->int_time_vbus + c->int_time_vshunt) \
1123 * c->avg)
1124 @@ -112,7 +116,7 @@ struct ina2xx_config {
1125 u16 config_default;
1126 int calibration_factor;
1127 int shunt_div;
1128 - int bus_voltage_shift;
1129 + int bus_voltage_shift; /* position of lsb */
1130 int bus_voltage_lsb; /* uV */
1131 int power_lsb; /* uW */
1132 enum ina2xx_ids chip_id;
1133 @@ -135,7 +139,7 @@ static const struct ina2xx_config ina2xx_config[] = {
1134 .config_default = INA219_CONFIG_DEFAULT,
1135 .calibration_factor = 40960000,
1136 .shunt_div = 100,
1137 - .bus_voltage_shift = 3,
1138 + .bus_voltage_shift = INA219_BUS_VOLTAGE_SHIFT,
1139 .bus_voltage_lsb = 4000,
1140 .power_lsb = 20000,
1141 .chip_id = ina219,
1142 @@ -170,6 +174,9 @@ static int ina2xx_read_raw(struct iio_dev *indio_dev,
1143 else
1144 *val = regval;
1145
1146 + if (chan->address == INA2XX_BUS_VOLTAGE)
1147 + *val >>= chip->config->bus_voltage_shift;
1148 +
1149 return IIO_VAL_INT;
1150
1151 case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
1152 @@ -203,9 +210,9 @@ static int ina2xx_read_raw(struct iio_dev *indio_dev,
1153 return IIO_VAL_FRACTIONAL;
1154
1155 case INA2XX_BUS_VOLTAGE:
1156 - /* processed (mV) = raw*lsb (uV) / (1000 << shift) */
1157 + /* processed (mV) = raw * lsb (uV) / 1000 */
1158 *val = chip->config->bus_voltage_lsb;
1159 - *val2 = 1000 << chip->config->bus_voltage_shift;
1160 + *val2 = 1000;
1161 return IIO_VAL_FRACTIONAL;
1162
1163 case INA2XX_POWER:
1164 @@ -532,7 +539,7 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
1165 * Sampling Freq is a consequence of the integration times of
1166 * the Voltage channels.
1167 */
1168 -#define INA219_CHAN_VOLTAGE(_index, _address) { \
1169 +#define INA219_CHAN_VOLTAGE(_index, _address, _shift) { \
1170 .type = IIO_VOLTAGE, \
1171 .address = (_address), \
1172 .indexed = 1, \
1173 @@ -544,7 +551,8 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
1174 .scan_index = (_index), \
1175 .scan_type = { \
1176 .sign = 'u', \
1177 - .realbits = 16, \
1178 + .shift = _shift, \
1179 + .realbits = 16 - _shift, \
1180 .storagebits = 16, \
1181 .endianness = IIO_LE, \
1182 } \
1183 @@ -579,8 +587,8 @@ static const struct iio_chan_spec ina226_channels[] = {
1184 };
1185
1186 static const struct iio_chan_spec ina219_channels[] = {
1187 - INA219_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE),
1188 - INA219_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE),
1189 + INA219_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE, 0),
1190 + INA219_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE, INA219_BUS_VOLTAGE_SHIFT),
1191 INA219_CHAN(IIO_POWER, 2, INA2XX_POWER),
1192 INA219_CHAN(IIO_CURRENT, 3, INA2XX_CURRENT),
1193 IIO_CHAN_SOFT_TIMESTAMP(4),
1194 diff --git a/drivers/iio/health/max30102.c b/drivers/iio/health/max30102.c
1195 index 147a8c14235f..a14fc2eb1fe9 100644
1196 --- a/drivers/iio/health/max30102.c
1197 +++ b/drivers/iio/health/max30102.c
1198 @@ -329,20 +329,31 @@ static int max30102_read_temp(struct max30102_data *data, int *val)
1199 return 0;
1200 }
1201
1202 -static int max30102_get_temp(struct max30102_data *data, int *val)
1203 +static int max30102_get_temp(struct max30102_data *data, int *val, bool en)
1204 {
1205 int ret;
1206
1207 + if (en) {
1208 + ret = max30102_set_powermode(data, true);
1209 + if (ret)
1210 + return ret;
1211 + }
1212 +
1213 /* start acquisition */
1214 ret = regmap_update_bits(data->regmap, MAX30102_REG_TEMP_CONFIG,
1215 MAX30102_REG_TEMP_CONFIG_TEMP_EN,
1216 MAX30102_REG_TEMP_CONFIG_TEMP_EN);
1217 if (ret)
1218 - return ret;
1219 + goto out;
1220
1221 msleep(35);
1222 + ret = max30102_read_temp(data, val);
1223 +
1224 +out:
1225 + if (en)
1226 + max30102_set_powermode(data, false);
1227
1228 - return max30102_read_temp(data, val);
1229 + return ret;
1230 }
1231
1232 static int max30102_read_raw(struct iio_dev *indio_dev,
1233 @@ -355,20 +366,19 @@ static int max30102_read_raw(struct iio_dev *indio_dev,
1234 switch (mask) {
1235 case IIO_CHAN_INFO_RAW:
1236 /*
1237 - * Temperature reading can only be acquired while engine
1238 - * is running
1239 + * Temperature reading can only be acquired when not in
1240 + * shutdown; leave shutdown briefly when buffer not running
1241 */
1242 mutex_lock(&indio_dev->mlock);
1243 -
1244 if (!iio_buffer_enabled(indio_dev))
1245 - ret = -EBUSY;
1246 - else {
1247 - ret = max30102_get_temp(data, val);
1248 - if (!ret)
1249 - ret = IIO_VAL_INT;
1250 - }
1251 -
1252 + ret = max30102_get_temp(data, val, true);
1253 + else
1254 + ret = max30102_get_temp(data, val, false);
1255 mutex_unlock(&indio_dev->mlock);
1256 + if (ret)
1257 + return ret;
1258 +
1259 + ret = IIO_VAL_INT;
1260 break;
1261 case IIO_CHAN_INFO_SCALE:
1262 *val = 1000; /* 62.5 */
1263 diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
1264 index 3832edd867ed..1961c6a45437 100644
1265 --- a/drivers/infiniband/hw/mlx5/mr.c
1266 +++ b/drivers/infiniband/hw/mlx5/mr.c
1267 @@ -1206,6 +1206,9 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
1268 int err;
1269 bool use_umr = true;
1270
1271 + if (!IS_ENABLED(CONFIG_INFINIBAND_USER_MEM))
1272 + return ERR_PTR(-EINVAL);
1273 +
1274 mlx5_ib_dbg(dev, "start 0x%llx, virt_addr 0x%llx, length 0x%llx, access_flags 0x%x\n",
1275 start, virt_addr, length, access_flags);
1276
1277 diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c
1278 index a52674327857..8988ba3b2d65 100644
1279 --- a/drivers/leds/leds-pm8058.c
1280 +++ b/drivers/leds/leds-pm8058.c
1281 @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device *pdev)
1282 if (!led)
1283 return -ENOMEM;
1284
1285 - led->ledtype = (u32)of_device_get_match_data(&pdev->dev);
1286 + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev);
1287
1288 map = dev_get_regmap(pdev->dev.parent, NULL);
1289 if (!map) {
1290 diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
1291 index f7810cc869ac..025e033ecb78 100644
1292 --- a/drivers/md/dm-mpath.c
1293 +++ b/drivers/md/dm-mpath.c
1294 @@ -1968,8 +1968,9 @@ static int multipath_busy(struct dm_target *ti)
1295 *---------------------------------------------------------------*/
1296 static struct target_type multipath_target = {
1297 .name = "multipath",
1298 - .version = {1, 12, 0},
1299 - .features = DM_TARGET_SINGLETON | DM_TARGET_IMMUTABLE,
1300 + .version = {1, 13, 0},
1301 + .features = DM_TARGET_SINGLETON | DM_TARGET_IMMUTABLE |
1302 + DM_TARGET_PASSES_INTEGRITY,
1303 .module = THIS_MODULE,
1304 .ctr = multipath_ctr,
1305 .dtr = multipath_dtr,
1306 diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
1307 index 6319d846e0ad..d0f330a5d0cb 100644
1308 --- a/drivers/md/dm-raid.c
1309 +++ b/drivers/md/dm-raid.c
1310 @@ -675,15 +675,11 @@ static struct raid_type *get_raid_type_by_ll(const int level, const int layout)
1311 return NULL;
1312 }
1313
1314 -/*
1315 - * Conditionally change bdev capacity of @rs
1316 - * in case of a disk add/remove reshape
1317 - */
1318 -static void rs_set_capacity(struct raid_set *rs)
1319 +/* Adjust rdev sectors */
1320 +static void rs_set_rdev_sectors(struct raid_set *rs)
1321 {
1322 struct mddev *mddev = &rs->md;
1323 struct md_rdev *rdev;
1324 - struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
1325
1326 /*
1327 * raid10 sets rdev->sector to the device size, which
1328 @@ -692,8 +688,16 @@ static void rs_set_capacity(struct raid_set *rs)
1329 rdev_for_each(rdev, mddev)
1330 if (!test_bit(Journal, &rdev->flags))
1331 rdev->sectors = mddev->dev_sectors;
1332 +}
1333
1334 - set_capacity(gendisk, mddev->array_sectors);
1335 +/*
1336 + * Change bdev capacity of @rs in case of a disk add/remove reshape
1337 + */
1338 +static void rs_set_capacity(struct raid_set *rs)
1339 +{
1340 + struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
1341 +
1342 + set_capacity(gendisk, rs->md.array_sectors);
1343 revalidate_disk(gendisk);
1344 }
1345
1346 @@ -1674,8 +1678,11 @@ static void do_table_event(struct work_struct *ws)
1347 struct raid_set *rs = container_of(ws, struct raid_set, md.event_work);
1348
1349 smp_rmb(); /* Make sure we access most actual mddev properties */
1350 - if (!rs_is_reshaping(rs))
1351 + if (!rs_is_reshaping(rs)) {
1352 + if (rs_is_raid10(rs))
1353 + rs_set_rdev_sectors(rs);
1354 rs_set_capacity(rs);
1355 + }
1356 dm_table_event(rs->ti->table);
1357 }
1358
1359 @@ -3842,11 +3849,10 @@ static int raid_preresume(struct dm_target *ti)
1360 mddev->resync_min = mddev->recovery_cp;
1361 }
1362
1363 - rs_set_capacity(rs);
1364 -
1365 /* Check for any reshape request unless new raid set */
1366 if (test_and_clear_bit(RT_FLAG_RESHAPE_RS, &rs->runtime_flags)) {
1367 /* Initiate a reshape. */
1368 + rs_set_rdev_sectors(rs);
1369 mddev_lock_nointr(mddev);
1370 r = rs_start_reshape(rs);
1371 mddev_unlock(mddev);
1372 @@ -3875,6 +3881,10 @@ static void raid_resume(struct dm_target *ti)
1373 mddev->ro = 0;
1374 mddev->in_sync = 0;
1375
1376 + /* Only reduce raid set size before running a disk removing reshape. */
1377 + if (mddev->delta_disks < 0)
1378 + rs_set_capacity(rs);
1379 +
1380 /*
1381 * Keep the RAID set frozen if reshape/rebuild flags are set.
1382 * The RAID set is unfrozen once the next table load/resume,
1383 diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
1384 index fca4dc829f73..e45916f69def 100644
1385 --- a/drivers/media/platform/davinci/vpif_capture.c
1386 +++ b/drivers/media/platform/davinci/vpif_capture.c
1387 @@ -1550,6 +1550,8 @@ vpif_capture_get_pdata(struct platform_device *pdev)
1388 sizeof(*chan->inputs) *
1389 VPIF_CAPTURE_NUM_CHANNELS,
1390 GFP_KERNEL);
1391 + if (!chan->inputs)
1392 + return NULL;
1393
1394 chan->input_count++;
1395 chan->inputs[i].input.type = V4L2_INPUT_TYPE_CAMERA;
1396 diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
1397 index 962e4c304076..eed9516e25e1 100644
1398 --- a/drivers/media/platform/vsp1/vsp1_drv.c
1399 +++ b/drivers/media/platform/vsp1/vsp1_drv.c
1400 @@ -571,7 +571,13 @@ static int __maybe_unused vsp1_pm_suspend(struct device *dev)
1401 {
1402 struct vsp1_device *vsp1 = dev_get_drvdata(dev);
1403
1404 - vsp1_pipelines_suspend(vsp1);
1405 + /*
1406 + * When used as part of a display pipeline, the VSP is stopped and
1407 + * restarted explicitly by the DU.
1408 + */
1409 + if (!vsp1->drm)
1410 + vsp1_pipelines_suspend(vsp1);
1411 +
1412 pm_runtime_force_suspend(vsp1->dev);
1413
1414 return 0;
1415 @@ -582,7 +588,13 @@ static int __maybe_unused vsp1_pm_resume(struct device *dev)
1416 struct vsp1_device *vsp1 = dev_get_drvdata(dev);
1417
1418 pm_runtime_force_resume(vsp1->dev);
1419 - vsp1_pipelines_resume(vsp1);
1420 +
1421 + /*
1422 + * When used as part of a display pipeline, the VSP is stopped and
1423 + * restarted explicitly by the DU.
1424 + */
1425 + if (!vsp1->drm)
1426 + vsp1_pipelines_resume(vsp1);
1427
1428 return 0;
1429 }
1430 diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c b/drivers/media/usb/cpia2/cpia2_v4l.c
1431 index 3dedd83f0b19..a1c59f19cf2d 100644
1432 --- a/drivers/media/usb/cpia2/cpia2_v4l.c
1433 +++ b/drivers/media/usb/cpia2/cpia2_v4l.c
1434 @@ -808,7 +808,7 @@ static int cpia2_querybuf(struct file *file, void *fh, struct v4l2_buffer *buf)
1435 struct camera_data *cam = video_drvdata(file);
1436
1437 if(buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
1438 - buf->index > cam->num_frames)
1439 + buf->index >= cam->num_frames)
1440 return -EINVAL;
1441
1442 buf->m.offset = cam->buffers[buf->index].data - cam->frame_buffer;
1443 @@ -859,7 +859,7 @@ static int cpia2_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
1444
1445 if(buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
1446 buf->memory != V4L2_MEMORY_MMAP ||
1447 - buf->index > cam->num_frames)
1448 + buf->index >= cam->num_frames)
1449 return -EINVAL;
1450
1451 DBG("QBUF #%d\n", buf->index);
1452 diff --git a/drivers/mmc/core/mmc_test.c b/drivers/mmc/core/mmc_test.c
1453 index 478869805b96..789afef66fce 100644
1454 --- a/drivers/mmc/core/mmc_test.c
1455 +++ b/drivers/mmc/core/mmc_test.c
1456 @@ -2328,10 +2328,17 @@ static int mmc_test_reset(struct mmc_test_card *test)
1457 int err;
1458
1459 err = mmc_hw_reset(host);
1460 - if (!err)
1461 + if (!err) {
1462 + /*
1463 + * Reset will re-enable the card's command queue, but tests
1464 + * expect it to be disabled.
1465 + */
1466 + if (card->ext_csd.cmdq_en)
1467 + mmc_cmdq_disable(card);
1468 return RESULT_OK;
1469 - else if (err == -EOPNOTSUPP)
1470 + } else if (err == -EOPNOTSUPP) {
1471 return RESULT_UNSUP_HOST;
1472 + }
1473
1474 return RESULT_FAIL;
1475 }
1476 diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
1477 index 9e03bac7f34c..bbdd68a54d68 100644
1478 --- a/drivers/mtd/nand/fsl_ifc_nand.c
1479 +++ b/drivers/mtd/nand/fsl_ifc_nand.c
1480 @@ -916,6 +916,13 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
1481 if (ctrl->version >= FSL_IFC_VERSION_1_1_0)
1482 fsl_ifc_sram_init(priv);
1483
1484 + /*
1485 + * As IFC version 2.0.0 has 16KB of internal SRAM as compared to older
1486 + * versions which had 8KB. Hence bufnum mask needs to be updated.
1487 + */
1488 + if (ctrl->version >= FSL_IFC_VERSION_2_0_0)
1489 + priv->bufnum_mask = (priv->bufnum_mask * 2) + 1;
1490 +
1491 return 0;
1492 }
1493
1494 diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
1495 index 9c702b46c6ee..e38edfa766f2 100644
1496 --- a/drivers/mtd/nand/nand_base.c
1497 +++ b/drivers/mtd/nand/nand_base.c
1498 @@ -710,7 +710,8 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
1499 chip->cmd_ctrl(mtd, readcmd, ctrl);
1500 ctrl &= ~NAND_CTRL_CHANGE;
1501 }
1502 - chip->cmd_ctrl(mtd, command, ctrl);
1503 + if (command != NAND_CMD_NONE)
1504 + chip->cmd_ctrl(mtd, command, ctrl);
1505
1506 /* Address cycle, when necessary */
1507 ctrl = NAND_CTRL_ALE | NAND_CTRL_CHANGE;
1508 @@ -738,6 +739,7 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
1509 */
1510 switch (command) {
1511
1512 + case NAND_CMD_NONE:
1513 case NAND_CMD_PAGEPROG:
1514 case NAND_CMD_ERASE1:
1515 case NAND_CMD_ERASE2:
1516 @@ -831,7 +833,9 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
1517 }
1518
1519 /* Command latch cycle */
1520 - chip->cmd_ctrl(mtd, command, NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE);
1521 + if (command != NAND_CMD_NONE)
1522 + chip->cmd_ctrl(mtd, command,
1523 + NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE);
1524
1525 if (column != -1 || page_addr != -1) {
1526 int ctrl = NAND_CTRL_CHANGE | NAND_NCE | NAND_ALE;
1527 @@ -866,6 +870,7 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
1528 */
1529 switch (command) {
1530
1531 + case NAND_CMD_NONE:
1532 case NAND_CMD_CACHEDPROG:
1533 case NAND_CMD_PAGEPROG:
1534 case NAND_CMD_ERASE1:
1535 diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1536 index 61ca4eb7c6fa..6a9ee65099a6 100644
1537 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1538 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1539 @@ -1706,12 +1706,16 @@ static int bnxt_async_event_process(struct bnxt *bp,
1540
1541 if (BNXT_VF(bp))
1542 goto async_event_process_exit;
1543 - if (data1 & 0x20000) {
1544 +
1545 + /* print unsupported speed warning in forced speed mode only */
1546 + if (!(link_info->autoneg & BNXT_AUTONEG_SPEED) &&
1547 + (data1 & 0x20000)) {
1548 u16 fw_speed = link_info->force_link_speed;
1549 u32 speed = bnxt_fw_to_ethtool_speed(fw_speed);
1550
1551 - netdev_warn(bp->dev, "Link speed %d no longer supported\n",
1552 - speed);
1553 + if (speed != SPEED_UNKNOWN)
1554 + netdev_warn(bp->dev, "Link speed %d no longer supported\n",
1555 + speed);
1556 }
1557 set_bit(BNXT_LINK_SPEED_CHNG_SP_EVENT, &bp->sp_event);
1558 /* fall thru */
1559 diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1560 index d8fee26cd45e..aa484d72f38c 100644
1561 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1562 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
1563 @@ -148,9 +148,6 @@ static int bnxt_tc_parse_actions(struct bnxt *bp,
1564 }
1565 }
1566
1567 - if (rc)
1568 - return rc;
1569 -
1570 if (actions->flags & BNXT_TC_ACTION_FLAG_FWD) {
1571 if (actions->flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP) {
1572 /* dst_fid is PF's fid */
1573 @@ -164,7 +161,7 @@ static int bnxt_tc_parse_actions(struct bnxt *bp,
1574 }
1575 }
1576
1577 - return rc;
1578 + return 0;
1579 }
1580
1581 #define GET_KEY(flow_cmd, key_type) \
1582 diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1583 index a063c36c4c58..3e6286d402ef 100644
1584 --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1585 +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1586 @@ -1833,6 +1833,11 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1587 nic->pdev = pdev;
1588 nic->pnicvf = nic;
1589 nic->max_queues = qcount;
1590 + /* If no of CPUs are too low, there won't be any queues left
1591 + * for XDP_TX, hence double it.
1592 + */
1593 + if (!nic->t88)
1594 + nic->max_queues *= 2;
1595
1596 /* MAP VF's configuration registers */
1597 nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0);
1598 diff --git a/drivers/net/ieee802154/adf7242.c b/drivers/net/ieee802154/adf7242.c
1599 index 400fdbd3a120..8381f4279bc7 100644
1600 --- a/drivers/net/ieee802154/adf7242.c
1601 +++ b/drivers/net/ieee802154/adf7242.c
1602 @@ -888,7 +888,7 @@ static const struct ieee802154_ops adf7242_ops = {
1603 .set_cca_ed_level = adf7242_set_cca_ed_level,
1604 };
1605
1606 -static void adf7242_debug(u8 irq1)
1607 +static void adf7242_debug(struct adf7242_local *lp, u8 irq1)
1608 {
1609 #ifdef DEBUG
1610 u8 stat;
1611 @@ -932,7 +932,7 @@ static irqreturn_t adf7242_isr(int irq, void *data)
1612 dev_err(&lp->spi->dev, "%s :ERROR IRQ1 = 0x%X\n",
1613 __func__, irq1);
1614
1615 - adf7242_debug(irq1);
1616 + adf7242_debug(lp, irq1);
1617
1618 xmit = test_bit(FLAG_XMIT, &lp->flags);
1619
1620 diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
1621 index 77cc4fbaeace..e92f31a53339 100644
1622 --- a/drivers/net/ipvlan/ipvlan_core.c
1623 +++ b/drivers/net/ipvlan/ipvlan_core.c
1624 @@ -322,6 +322,10 @@ static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff **pskb,
1625 if (dev_forward_skb(ipvlan->dev, skb) == NET_RX_SUCCESS)
1626 success = true;
1627 } else {
1628 + if (!ether_addr_equal_64bits(eth_hdr(skb)->h_dest,
1629 + ipvlan->phy_dev->dev_addr))
1630 + skb->pkt_type = PACKET_OTHERHOST;
1631 +
1632 ret = RX_HANDLER_ANOTHER;
1633 success = true;
1634 }
1635 diff --git a/drivers/net/veth.c b/drivers/net/veth.c
1636 index f5438d0978ca..a69ad39ee57e 100644
1637 --- a/drivers/net/veth.c
1638 +++ b/drivers/net/veth.c
1639 @@ -410,6 +410,9 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
1640 if (ifmp && (dev->ifindex != 0))
1641 peer->ifindex = ifmp->ifi_index;
1642
1643 + peer->gso_max_size = dev->gso_max_size;
1644 + peer->gso_max_segs = dev->gso_max_segs;
1645 +
1646 err = register_netdevice(peer);
1647 put_net(net);
1648 net = NULL;
1649 diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
1650 index 5907a8d0e921..f42ee452072b 100644
1651 --- a/drivers/net/virtio_net.c
1652 +++ b/drivers/net/virtio_net.c
1653 @@ -261,9 +261,12 @@ static void virtqueue_napi_complete(struct napi_struct *napi,
1654 int opaque;
1655
1656 opaque = virtqueue_enable_cb_prepare(vq);
1657 - if (napi_complete_done(napi, processed) &&
1658 - unlikely(virtqueue_poll(vq, opaque)))
1659 - virtqueue_napi_schedule(napi, vq);
1660 + if (napi_complete_done(napi, processed)) {
1661 + if (unlikely(virtqueue_poll(vq, opaque)))
1662 + virtqueue_napi_schedule(napi, vq);
1663 + } else {
1664 + virtqueue_disable_cb(vq);
1665 + }
1666 }
1667
1668 static void skb_xmit_done(struct virtqueue *vq)
1669 diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
1670 index 0a947eef348d..c6460e7f6d78 100644
1671 --- a/drivers/net/wireless/ath/ath10k/mac.c
1672 +++ b/drivers/net/wireless/ath/ath10k/mac.c
1673 @@ -6201,6 +6201,16 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
1674 "mac vdev %d peer delete %pM sta %pK (sta gone)\n",
1675 arvif->vdev_id, sta->addr, sta);
1676
1677 + if (sta->tdls) {
1678 + ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id,
1679 + sta,
1680 + WMI_TDLS_PEER_STATE_TEARDOWN);
1681 + if (ret)
1682 + ath10k_warn(ar, "failed to update tdls peer state for %pM state %d: %i\n",
1683 + sta->addr,
1684 + WMI_TDLS_PEER_STATE_TEARDOWN, ret);
1685 + }
1686 +
1687 ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
1688 if (ret)
1689 ath10k_warn(ar, "failed to delete peer %pM for vdev %d: %i\n",
1690 diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
1691 index c02b21cff38d..3cb8fe4374c5 100644
1692 --- a/drivers/net/wireless/ath/ath10k/wmi.h
1693 +++ b/drivers/net/wireless/ath/ath10k/wmi.h
1694 @@ -5236,7 +5236,8 @@ enum wmi_10_4_vdev_param {
1695 #define WMI_VDEV_PARAM_TXBF_MU_TX_BFER BIT(3)
1696
1697 #define WMI_TXBF_STS_CAP_OFFSET_LSB 4
1698 -#define WMI_TXBF_STS_CAP_OFFSET_MASK 0xf0
1699 +#define WMI_TXBF_STS_CAP_OFFSET_MASK 0x70
1700 +#define WMI_TXBF_CONF_IMPLICIT_BF BIT(7)
1701 #define WMI_BF_SOUND_DIM_OFFSET_LSB 8
1702 #define WMI_BF_SOUND_DIM_OFFSET_MASK 0xf00
1703
1704 diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1705 index c69515ed72df..fbfa5eafcc93 100644
1706 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1707 +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1708 @@ -1877,12 +1877,10 @@ static int rs_switch_to_column(struct iwl_mvm *mvm,
1709 struct rs_rate *rate = &search_tbl->rate;
1710 const struct rs_tx_column *column = &rs_tx_columns[col_id];
1711 const struct rs_tx_column *curr_column = &rs_tx_columns[tbl->column];
1712 - u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1713 - (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1714 unsigned long rate_mask = 0;
1715 u32 rate_idx = 0;
1716
1717 - memcpy(search_tbl, tbl, sz);
1718 + memcpy(search_tbl, tbl, offsetof(struct iwl_scale_tbl_info, win));
1719
1720 rate->sgi = column->sgi;
1721 rate->ant = column->ant;
1722 diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1723 index 03ffd84786ca..50255944525e 100644
1724 --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1725 +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1726 @@ -595,6 +595,12 @@ static void iwl_mvm_dump_lmac_error_log(struct iwl_mvm *mvm, u32 base)
1727
1728 void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
1729 {
1730 + if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) {
1731 + IWL_ERR(mvm,
1732 + "DEVICE_ENABLED bit is not set. Aborting dump.\n");
1733 + return;
1734 + }
1735 +
1736 iwl_mvm_dump_lmac_error_log(mvm, mvm->error_event_table[0]);
1737
1738 if (mvm->error_event_table[1])
1739 diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
1740 index 829ac22b72fc..731d59ee6efe 100644
1741 --- a/drivers/net/wireless/mac80211_hwsim.c
1742 +++ b/drivers/net/wireless/mac80211_hwsim.c
1743 @@ -729,16 +729,21 @@ static int hwsim_fops_ps_write(void *dat, u64 val)
1744 val != PS_MANUAL_POLL)
1745 return -EINVAL;
1746
1747 - old_ps = data->ps;
1748 - data->ps = val;
1749 -
1750 - local_bh_disable();
1751 if (val == PS_MANUAL_POLL) {
1752 + if (data->ps != PS_ENABLED)
1753 + return -EINVAL;
1754 + local_bh_disable();
1755 ieee80211_iterate_active_interfaces_atomic(
1756 data->hw, IEEE80211_IFACE_ITER_NORMAL,
1757 hwsim_send_ps_poll, data);
1758 - data->ps_poll_pending = true;
1759 - } else if (old_ps == PS_DISABLED && val != PS_DISABLED) {
1760 + local_bh_enable();
1761 + return 0;
1762 + }
1763 + old_ps = data->ps;
1764 + data->ps = val;
1765 +
1766 + local_bh_disable();
1767 + if (old_ps == PS_DISABLED && val != PS_DISABLED) {
1768 ieee80211_iterate_active_interfaces_atomic(
1769 data->hw, IEEE80211_IFACE_ITER_NORMAL,
1770 hwsim_send_nullfunc_ps, data);
1771 diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1772 index 6e0d9a9c5cfb..f32401197f7c 100644
1773 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1774 +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1775 @@ -1116,6 +1116,12 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
1776 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
1777 enum nl80211_iftype curr_iftype = dev->ieee80211_ptr->iftype;
1778
1779 + if (priv->scan_request) {
1780 + mwifiex_dbg(priv->adapter, ERROR,
1781 + "change virtual interface: scan in process\n");
1782 + return -EBUSY;
1783 + }
1784 +
1785 switch (curr_iftype) {
1786 case NL80211_IFTYPE_ADHOC:
1787 switch (type) {
1788 diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1789 index 10bd35f8c894..c01ef02d326b 100644
1790 --- a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1791 +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1792 @@ -4826,6 +4826,10 @@ static const char * const can0_groups[] = {
1793 "can0_data_d",
1794 "can0_data_e",
1795 "can0_data_f",
1796 + /*
1797 + * Retained for backwards compatibility, use can_clk_groups in new
1798 + * designs.
1799 + */
1800 "can_clk",
1801 "can_clk_b",
1802 "can_clk_c",
1803 @@ -4837,6 +4841,21 @@ static const char * const can1_groups[] = {
1804 "can1_data_b",
1805 "can1_data_c",
1806 "can1_data_d",
1807 + /*
1808 + * Retained for backwards compatibility, use can_clk_groups in new
1809 + * designs.
1810 + */
1811 + "can_clk",
1812 + "can_clk_b",
1813 + "can_clk_c",
1814 + "can_clk_d",
1815 +};
1816 +
1817 +/*
1818 + * can_clk_groups allows for independent configuration, use can_clk function
1819 + * in new designs.
1820 + */
1821 +static const char * const can_clk_groups[] = {
1822 "can_clk",
1823 "can_clk_b",
1824 "can_clk_c",
1825 @@ -5308,7 +5327,7 @@ static const char * const vin2_groups[] = {
1826 };
1827
1828 static const struct {
1829 - struct sh_pfc_function common[56];
1830 + struct sh_pfc_function common[57];
1831 struct sh_pfc_function r8a779x[2];
1832 } pinmux_functions = {
1833 .common = {
1834 @@ -5316,6 +5335,7 @@ static const struct {
1835 SH_PFC_FUNCTION(avb),
1836 SH_PFC_FUNCTION(can0),
1837 SH_PFC_FUNCTION(can1),
1838 + SH_PFC_FUNCTION(can_clk),
1839 SH_PFC_FUNCTION(du),
1840 SH_PFC_FUNCTION(du0),
1841 SH_PFC_FUNCTION(du1),
1842 diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1843 index 1d4d84f34d60..292e35d4d2f4 100644
1844 --- a/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1845 +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1846 @@ -1397,7 +1397,7 @@ static const u16 pinmux_data[] = {
1847 PINMUX_IPSR_MSEL(IP16_27_24, AUDIO_CLKOUT_B, SEL_ADG_1),
1848 PINMUX_IPSR_MSEL(IP16_27_24, SSI_SCK2_B, SEL_SSI_1),
1849 PINMUX_IPSR_MSEL(IP16_27_24, TS_SDEN1_D, SEL_TSIF1_3),
1850 - PINMUX_IPSR_MSEL(IP16_27_24, STP_ISEN_1_D, SEL_SSP1_1_2),
1851 + PINMUX_IPSR_MSEL(IP16_27_24, STP_ISEN_1_D, SEL_SSP1_1_3),
1852 PINMUX_IPSR_MSEL(IP16_27_24, STP_OPWM_0_E, SEL_SSP1_0_4),
1853 PINMUX_IPSR_MSEL(IP16_27_24, RIF3_D0_B, SEL_DRIF3_1),
1854 PINMUX_IPSR_MSEL(IP16_27_24, TCLK2_B, SEL_TIMER_TMU_1),
1855 diff --git a/drivers/power/supply/ab8500_charger.c b/drivers/power/supply/ab8500_charger.c
1856 index 4ebbcce45c48..5a76c6d343de 100644
1857 --- a/drivers/power/supply/ab8500_charger.c
1858 +++ b/drivers/power/supply/ab8500_charger.c
1859 @@ -3218,11 +3218,13 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
1860 }
1861
1862 /* Enable backup battery charging */
1863 - abx500_mask_and_set_register_interruptible(di->dev,
1864 + ret = abx500_mask_and_set_register_interruptible(di->dev,
1865 AB8500_RTC, AB8500_RTC_CTRL_REG,
1866 RTC_BUP_CH_ENA, RTC_BUP_CH_ENA);
1867 - if (ret < 0)
1868 + if (ret < 0) {
1869 dev_err(di->dev, "%s mask and set failed\n", __func__);
1870 + goto out;
1871 + }
1872
1873 if (is_ab8540(di->parent)) {
1874 ret = abx500_mask_and_set_register_interruptible(di->dev,
1875 diff --git a/drivers/power/supply/sbs-manager.c b/drivers/power/supply/sbs-manager.c
1876 index ccb4217b9638..cb6e8f66c7a2 100644
1877 --- a/drivers/power/supply/sbs-manager.c
1878 +++ b/drivers/power/supply/sbs-manager.c
1879 @@ -183,7 +183,7 @@ static int sbsm_select(struct i2c_mux_core *muxc, u32 chan)
1880 return ret;
1881
1882 /* chan goes from 1 ... 4 */
1883 - reg = 1 << BIT(SBSM_SMB_BAT_OFFSET + chan);
1884 + reg = BIT(SBSM_SMB_BAT_OFFSET + chan);
1885 ret = sbsm_write_word(data->client, SBSM_CMD_BATSYSSTATE, reg);
1886 if (ret)
1887 dev_err(dev, "Failed to select channel %i\n", chan);
1888 diff --git a/drivers/pwm/pwm-stmpe.c b/drivers/pwm/pwm-stmpe.c
1889 index e464582a390a..3439f1e902cb 100644
1890 --- a/drivers/pwm/pwm-stmpe.c
1891 +++ b/drivers/pwm/pwm-stmpe.c
1892 @@ -145,7 +145,7 @@ static int stmpe_24xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
1893 break;
1894
1895 case 2:
1896 - offset = STMPE24XX_PWMIC1;
1897 + offset = STMPE24XX_PWMIC2;
1898 break;
1899
1900 default:
1901 diff --git a/drivers/rtc/rtc-brcmstb-waketimer.c b/drivers/rtc/rtc-brcmstb-waketimer.c
1902 index 796ac792a381..6cee61201c30 100644
1903 --- a/drivers/rtc/rtc-brcmstb-waketimer.c
1904 +++ b/drivers/rtc/rtc-brcmstb-waketimer.c
1905 @@ -253,7 +253,7 @@ static int brcmstb_waketmr_probe(struct platform_device *pdev)
1906 ret = devm_request_irq(dev, timer->irq, brcmstb_waketmr_irq, 0,
1907 "brcmstb-waketimer", timer);
1908 if (ret < 0)
1909 - return ret;
1910 + goto err_clk;
1911
1912 timer->reboot_notifier.notifier_call = brcmstb_waketmr_reboot;
1913 register_reboot_notifier(&timer->reboot_notifier);
1914 @@ -262,12 +262,21 @@ static int brcmstb_waketmr_probe(struct platform_device *pdev)
1915 &brcmstb_waketmr_ops, THIS_MODULE);
1916 if (IS_ERR(timer->rtc)) {
1917 dev_err(dev, "unable to register device\n");
1918 - unregister_reboot_notifier(&timer->reboot_notifier);
1919 - return PTR_ERR(timer->rtc);
1920 + ret = PTR_ERR(timer->rtc);
1921 + goto err_notifier;
1922 }
1923
1924 dev_info(dev, "registered, with irq %d\n", timer->irq);
1925
1926 + return 0;
1927 +
1928 +err_notifier:
1929 + unregister_reboot_notifier(&timer->reboot_notifier);
1930 +
1931 +err_clk:
1932 + if (timer->clk)
1933 + clk_disable_unprepare(timer->clk);
1934 +
1935 return ret;
1936 }
1937
1938 diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
1939 index 517ae570e507..0e63c88441a3 100644
1940 --- a/drivers/scsi/lpfc/lpfc_nvme.c
1941 +++ b/drivers/scsi/lpfc/lpfc_nvme.c
1942 @@ -416,6 +416,9 @@ lpfc_nvme_ls_req(struct nvme_fc_local_port *pnvme_lport,
1943 lport = (struct lpfc_nvme_lport *)pnvme_lport->private;
1944 vport = lport->vport;
1945
1946 + if (vport->load_flag & FC_UNLOADING)
1947 + return -ENODEV;
1948 +
1949 if (vport->load_flag & FC_UNLOADING)
1950 return -ENODEV;
1951
1952 @@ -534,6 +537,9 @@ lpfc_nvme_ls_abort(struct nvme_fc_local_port *pnvme_lport,
1953 vport = lport->vport;
1954 phba = vport->phba;
1955
1956 + if (vport->load_flag & FC_UNLOADING)
1957 + return;
1958 +
1959 ndlp = lpfc_findnode_did(vport, pnvme_rport->port_id);
1960 if (!ndlp) {
1961 lpfc_printf_vlog(vport, KERN_ERR, LOG_NVME_ABTS,
1962 @@ -1260,6 +1266,11 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
1963 goto out_fail;
1964 }
1965
1966 + if (vport->load_flag & FC_UNLOADING) {
1967 + ret = -ENODEV;
1968 + goto out_fail;
1969 + }
1970 +
1971 /* Validate pointers. */
1972 if (!pnvme_lport || !pnvme_rport || !freqpriv) {
1973 lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_IOERR | LOG_NODE,
1974 @@ -1487,6 +1498,9 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
1975 vport = lport->vport;
1976 phba = vport->phba;
1977
1978 + if (vport->load_flag & FC_UNLOADING)
1979 + return;
1980 +
1981 /* Announce entry to new IO submit field. */
1982 lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_ABTS,
1983 "6002 Abort Request to rport DID x%06x "
1984 diff --git a/drivers/scsi/lpfc/lpfc_nvmet.c b/drivers/scsi/lpfc/lpfc_nvmet.c
1985 index 84cf1b9079f7..2b50aecc2722 100644
1986 --- a/drivers/scsi/lpfc/lpfc_nvmet.c
1987 +++ b/drivers/scsi/lpfc/lpfc_nvmet.c
1988 @@ -632,6 +632,9 @@ lpfc_nvmet_xmt_ls_rsp(struct nvmet_fc_target_port *tgtport,
1989 struct ulp_bde64 bpl;
1990 int rc;
1991
1992 + if (phba->pport->load_flag & FC_UNLOADING)
1993 + return -ENODEV;
1994 +
1995 if (phba->pport->load_flag & FC_UNLOADING)
1996 return -ENODEV;
1997
1998 @@ -721,6 +724,11 @@ lpfc_nvmet_xmt_fcp_op(struct nvmet_fc_target_port *tgtport,
1999 goto aerr;
2000 }
2001
2002 + if (phba->pport->load_flag & FC_UNLOADING) {
2003 + rc = -ENODEV;
2004 + goto aerr;
2005 + }
2006 +
2007 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
2008 if (ctxp->ts_cmd_nvme) {
2009 if (rsp->op == NVMET_FCOP_RSP)
2010 @@ -820,6 +828,9 @@ lpfc_nvmet_xmt_fcp_abort(struct nvmet_fc_target_port *tgtport,
2011 struct lpfc_hba *phba = ctxp->phba;
2012 unsigned long flags;
2013
2014 + if (phba->pport->load_flag & FC_UNLOADING)
2015 + return;
2016 +
2017 if (phba->pport->load_flag & FC_UNLOADING)
2018 return;
2019
2020 diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
2021 index dfb8da83fa50..0a17b9e5dc35 100644
2022 --- a/drivers/scsi/scsi_devinfo.c
2023 +++ b/drivers/scsi/scsi_devinfo.c
2024 @@ -181,7 +181,7 @@ static struct {
2025 {"HITACHI", "6586-", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
2026 {"HITACHI", "6588-", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
2027 {"HP", "A6189A", NULL, BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP VA7400 */
2028 - {"HP", "OPEN-", "*", BLIST_REPORTLUN2}, /* HP XP Arrays */
2029 + {"HP", "OPEN-", "*", BLIST_REPORTLUN2 | BLIST_TRY_VPD_PAGES}, /* HP XP Arrays */
2030 {"HP", "NetRAID-4M", NULL, BLIST_FORCELUN},
2031 {"HP", "HSV100", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD},
2032 {"HP", "C1557A", NULL, BLIST_FORCELUN},
2033 @@ -590,17 +590,12 @@ blist_flags_t scsi_get_device_flags_keyed(struct scsi_device *sdev,
2034 int key)
2035 {
2036 struct scsi_dev_info_list *devinfo;
2037 - int err;
2038
2039 devinfo = scsi_dev_info_list_find(vendor, model, key);
2040 if (!IS_ERR(devinfo))
2041 return devinfo->flags;
2042
2043 - err = PTR_ERR(devinfo);
2044 - if (err != -ENOENT)
2045 - return err;
2046 -
2047 - /* nothing found, return nothing */
2048 + /* key or device not found: return nothing */
2049 if (key != SCSI_DEVINFO_GLOBAL)
2050 return 0;
2051
2052 diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c
2053 index 2b785d09d5bd..b88b5dbbc444 100644
2054 --- a/drivers/scsi/scsi_dh.c
2055 +++ b/drivers/scsi/scsi_dh.c
2056 @@ -56,10 +56,13 @@ static const struct scsi_dh_blist scsi_dh_blist[] = {
2057 {"IBM", "1815", "rdac", },
2058 {"IBM", "1818", "rdac", },
2059 {"IBM", "3526", "rdac", },
2060 + {"IBM", "3542", "rdac", },
2061 + {"IBM", "3552", "rdac", },
2062 {"SGI", "TP9", "rdac", },
2063 {"SGI", "IS", "rdac", },
2064 - {"STK", "OPENstorage D280", "rdac", },
2065 + {"STK", "OPENstorage", "rdac", },
2066 {"STK", "FLEXLINE 380", "rdac", },
2067 + {"STK", "BladeCtlr", "rdac", },
2068 {"SUN", "CSM", "rdac", },
2069 {"SUN", "LCSM100", "rdac", },
2070 {"SUN", "STK6580_6780", "rdac", },
2071 diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c
2072 index 27793b9f54c0..9049a189c8e5 100644
2073 --- a/drivers/scsi/sd_zbc.c
2074 +++ b/drivers/scsi/sd_zbc.c
2075 @@ -486,7 +486,7 @@ static int sd_zbc_check_capacity(struct scsi_disk *sdkp, unsigned char *buf)
2076 */
2077 static int sd_zbc_check_zone_size(struct scsi_disk *sdkp)
2078 {
2079 - u64 zone_blocks;
2080 + u64 zone_blocks = 0;
2081 sector_t block = 0;
2082 unsigned char *buf;
2083 unsigned char *rec;
2084 @@ -504,10 +504,8 @@ static int sd_zbc_check_zone_size(struct scsi_disk *sdkp)
2085
2086 /* Do a report zone to get the same field */
2087 ret = sd_zbc_report_zones(sdkp, buf, SD_ZBC_BUF_SIZE, 0);
2088 - if (ret) {
2089 - zone_blocks = 0;
2090 - goto out;
2091 - }
2092 + if (ret)
2093 + goto out_free;
2094
2095 same = buf[4] & 0x0f;
2096 if (same > 0) {
2097 @@ -547,7 +545,7 @@ static int sd_zbc_check_zone_size(struct scsi_disk *sdkp)
2098 ret = sd_zbc_report_zones(sdkp, buf,
2099 SD_ZBC_BUF_SIZE, block);
2100 if (ret)
2101 - return ret;
2102 + goto out_free;
2103 }
2104
2105 } while (block < sdkp->capacity);
2106 @@ -555,35 +553,32 @@ static int sd_zbc_check_zone_size(struct scsi_disk *sdkp)
2107 zone_blocks = sdkp->zone_blocks;
2108
2109 out:
2110 - kfree(buf);
2111 -
2112 if (!zone_blocks) {
2113 if (sdkp->first_scan)
2114 sd_printk(KERN_NOTICE, sdkp,
2115 "Devices with non constant zone "
2116 "size are not supported\n");
2117 - return -ENODEV;
2118 - }
2119 -
2120 - if (!is_power_of_2(zone_blocks)) {
2121 + ret = -ENODEV;
2122 + } else if (!is_power_of_2(zone_blocks)) {
2123 if (sdkp->first_scan)
2124 sd_printk(KERN_NOTICE, sdkp,
2125 "Devices with non power of 2 zone "
2126 "size are not supported\n");
2127 - return -ENODEV;
2128 - }
2129 -
2130 - if (logical_to_sectors(sdkp->device, zone_blocks) > UINT_MAX) {
2131 + ret = -ENODEV;
2132 + } else if (logical_to_sectors(sdkp->device, zone_blocks) > UINT_MAX) {
2133 if (sdkp->first_scan)
2134 sd_printk(KERN_NOTICE, sdkp,
2135 "Zone size too large\n");
2136 - return -ENODEV;
2137 + ret = -ENODEV;
2138 + } else {
2139 + sdkp->zone_blocks = zone_blocks;
2140 + sdkp->zone_shift = ilog2(zone_blocks);
2141 }
2142
2143 - sdkp->zone_blocks = zone_blocks;
2144 - sdkp->zone_shift = ilog2(zone_blocks);
2145 +out_free:
2146 + kfree(buf);
2147
2148 - return 0;
2149 + return ret;
2150 }
2151
2152 static int sd_zbc_setup(struct scsi_disk *sdkp)
2153 diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
2154 index 11826c5c2dd4..62f04c0511cf 100644
2155 --- a/drivers/scsi/ses.c
2156 +++ b/drivers/scsi/ses.c
2157 @@ -615,13 +615,16 @@ static void ses_enclosure_data_process(struct enclosure_device *edev,
2158 }
2159
2160 static void ses_match_to_enclosure(struct enclosure_device *edev,
2161 - struct scsi_device *sdev)
2162 + struct scsi_device *sdev,
2163 + int refresh)
2164 {
2165 + struct scsi_device *edev_sdev = to_scsi_device(edev->edev.parent);
2166 struct efd efd = {
2167 .addr = 0,
2168 };
2169
2170 - ses_enclosure_data_process(edev, to_scsi_device(edev->edev.parent), 0);
2171 + if (refresh)
2172 + ses_enclosure_data_process(edev, edev_sdev, 0);
2173
2174 if (scsi_is_sas_rphy(sdev->sdev_target->dev.parent))
2175 efd.addr = sas_get_address(sdev);
2176 @@ -652,7 +655,7 @@ static int ses_intf_add(struct device *cdev,
2177 struct enclosure_device *prev = NULL;
2178
2179 while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) {
2180 - ses_match_to_enclosure(edev, sdev);
2181 + ses_match_to_enclosure(edev, sdev, 1);
2182 prev = edev;
2183 }
2184 return -ENODEV;
2185 @@ -768,7 +771,7 @@ static int ses_intf_add(struct device *cdev,
2186 shost_for_each_device(tmp_sdev, sdev->host) {
2187 if (tmp_sdev->lun != 0 || scsi_device_enclosure(tmp_sdev))
2188 continue;
2189 - ses_match_to_enclosure(edev, tmp_sdev);
2190 + ses_match_to_enclosure(edev, tmp_sdev, 0);
2191 }
2192
2193 return 0;
2194 diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
2195 index 40390d31a93b..6f57592a7f95 100644
2196 --- a/drivers/spi/spi-imx.c
2197 +++ b/drivers/spi/spi-imx.c
2198 @@ -1622,6 +1622,11 @@ static int spi_imx_probe(struct platform_device *pdev)
2199 spi_imx->devtype_data->intctrl(spi_imx, 0);
2200
2201 master->dev.of_node = pdev->dev.of_node;
2202 + ret = spi_bitbang_start(&spi_imx->bitbang);
2203 + if (ret) {
2204 + dev_err(&pdev->dev, "bitbang start failed with %d\n", ret);
2205 + goto out_clk_put;
2206 + }
2207
2208 /* Request GPIO CS lines, if any */
2209 if (!spi_imx->slave_mode && master->cs_gpios) {
2210 @@ -1640,12 +1645,6 @@ static int spi_imx_probe(struct platform_device *pdev)
2211 }
2212 }
2213
2214 - ret = spi_bitbang_start(&spi_imx->bitbang);
2215 - if (ret) {
2216 - dev_err(&pdev->dev, "bitbang start failed with %d\n", ret);
2217 - goto out_clk_put;
2218 - }
2219 -
2220 dev_info(&pdev->dev, "probed\n");
2221
2222 clk_disable(spi_imx->clk_ipg);
2223 diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
2224 index fb38234249a8..8533f4edd00a 100644
2225 --- a/drivers/spi/spi-sun6i.c
2226 +++ b/drivers/spi/spi-sun6i.c
2227 @@ -541,7 +541,7 @@ static int sun6i_spi_probe(struct platform_device *pdev)
2228
2229 static int sun6i_spi_remove(struct platform_device *pdev)
2230 {
2231 - pm_runtime_disable(&pdev->dev);
2232 + pm_runtime_force_suspend(&pdev->dev);
2233
2234 return 0;
2235 }
2236 diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
2237 index e7541dc90473..d9941b0c468d 100644
2238 --- a/drivers/staging/android/ashmem.c
2239 +++ b/drivers/staging/android/ashmem.c
2240 @@ -334,24 +334,23 @@ static loff_t ashmem_llseek(struct file *file, loff_t offset, int origin)
2241 mutex_lock(&ashmem_mutex);
2242
2243 if (asma->size == 0) {
2244 - ret = -EINVAL;
2245 - goto out;
2246 + mutex_unlock(&ashmem_mutex);
2247 + return -EINVAL;
2248 }
2249
2250 if (!asma->file) {
2251 - ret = -EBADF;
2252 - goto out;
2253 + mutex_unlock(&ashmem_mutex);
2254 + return -EBADF;
2255 }
2256
2257 + mutex_unlock(&ashmem_mutex);
2258 +
2259 ret = vfs_llseek(asma->file, offset, origin);
2260 if (ret < 0)
2261 - goto out;
2262 + return ret;
2263
2264 /** Copy f_pos from backing file, since f_ops->llseek() sets it */
2265 file->f_pos = asma->file->f_pos;
2266 -
2267 -out:
2268 - mutex_unlock(&ashmem_mutex);
2269 return ret;
2270 }
2271
2272 diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
2273 index 0b43db6371c6..c11c22bd6d13 100644
2274 --- a/drivers/staging/comedi/drivers.c
2275 +++ b/drivers/staging/comedi/drivers.c
2276 @@ -484,8 +484,7 @@ unsigned int comedi_nsamples_left(struct comedi_subdevice *s,
2277 struct comedi_cmd *cmd = &async->cmd;
2278
2279 if (cmd->stop_src == TRIG_COUNT) {
2280 - unsigned int nscans = nsamples / cmd->scan_end_arg;
2281 - unsigned int scans_left = __comedi_nscans_left(s, nscans);
2282 + unsigned int scans_left = __comedi_nscans_left(s, cmd->stop_arg);
2283 unsigned int scan_pos =
2284 comedi_bytes_to_samples(s, async->scan_progress);
2285 unsigned long long samples_left = 0;
2286 diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
2287 index 0d8ed002adcb..c8a8e3abfc3a 100644
2288 --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
2289 +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
2290 @@ -249,7 +249,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv,
2291 vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr);
2292 dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, DMA_FROM_DEVICE);
2293
2294 - fas = dpaa2_get_fas(vaddr);
2295 + fas = dpaa2_get_fas(vaddr, false);
2296 prefetch(fas);
2297 buf_data = vaddr + dpaa2_fd_get_offset(fd);
2298 prefetch(buf_data);
2299 @@ -385,7 +385,7 @@ static int build_sg_fd(struct dpaa2_eth_priv *priv,
2300 * on TX confirmation. We are clearing FAS (Frame Annotation Status)
2301 * field from the hardware annotation area
2302 */
2303 - fas = dpaa2_get_fas(sgt_buf);
2304 + fas = dpaa2_get_fas(sgt_buf, true);
2305 memset(fas, 0, DPAA2_FAS_SIZE);
2306
2307 sgt = (struct dpaa2_sg_entry *)(sgt_buf + priv->tx_data_offset);
2308 @@ -458,7 +458,7 @@ static int build_single_fd(struct dpaa2_eth_priv *priv,
2309 * on TX confirmation. We are clearing FAS (Frame Annotation Status)
2310 * field from the hardware annotation area
2311 */
2312 - fas = dpaa2_get_fas(buffer_start);
2313 + fas = dpaa2_get_fas(buffer_start, true);
2314 memset(fas, 0, DPAA2_FAS_SIZE);
2315
2316 /* Store a backpointer to the skb at the beginning of the buffer
2317 @@ -510,7 +510,7 @@ static void free_tx_fd(const struct dpaa2_eth_priv *priv,
2318
2319 fd_addr = dpaa2_fd_get_addr(fd);
2320 skbh = dpaa2_iova_to_virt(priv->iommu_domain, fd_addr);
2321 - fas = dpaa2_get_fas(skbh);
2322 + fas = dpaa2_get_fas(skbh, true);
2323
2324 if (fd_format == dpaa2_fd_single) {
2325 skb = *skbh;
2326 diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h
2327 index 5b3ab9f62d5e..3a4e9395acdc 100644
2328 --- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h
2329 +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h
2330 @@ -153,10 +153,15 @@ struct dpaa2_fas {
2331 #define DPAA2_FAS_SIZE (sizeof(struct dpaa2_fas))
2332
2333 /* Accessors for the hardware annotation fields that we use */
2334 -#define dpaa2_get_hwa(buf_addr) \
2335 - ((void *)(buf_addr) + DPAA2_ETH_SWA_SIZE)
2336 -#define dpaa2_get_fas(buf_addr) \
2337 - (struct dpaa2_fas *)(dpaa2_get_hwa(buf_addr) + DPAA2_FAS_OFFSET)
2338 +static inline void *dpaa2_get_hwa(void *buf_addr, bool swa)
2339 +{
2340 + return buf_addr + (swa ? DPAA2_ETH_SWA_SIZE : 0);
2341 +}
2342 +
2343 +static inline struct dpaa2_fas *dpaa2_get_fas(void *buf_addr, bool swa)
2344 +{
2345 + return dpaa2_get_hwa(buf_addr, swa) + DPAA2_FAS_OFFSET;
2346 +}
2347
2348 /* Error and status bits in the frame annotation status word */
2349 /* Debug frame, otherwise supposed to be discarded */
2350 diff --git a/drivers/staging/rtlwifi/rtl8822be/fw.c b/drivers/staging/rtlwifi/rtl8822be/fw.c
2351 index f45487122517..483ea85943c3 100644
2352 --- a/drivers/staging/rtlwifi/rtl8822be/fw.c
2353 +++ b/drivers/staging/rtlwifi/rtl8822be/fw.c
2354 @@ -464,6 +464,8 @@ bool rtl8822b_halmac_cb_write_data_rsvd_page(struct rtl_priv *rtlpriv, u8 *buf,
2355 int count;
2356
2357 skb = dev_alloc_skb(size);
2358 + if (!skb)
2359 + return false;
2360 memcpy((u8 *)skb_put(skb, size), buf, size);
2361
2362 if (!_rtl8822be_send_bcn_or_cmd_packet(rtlpriv->hw, skb, BEACON_QUEUE))
2363 diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
2364 index 54adf8d56350..38850672c57e 100644
2365 --- a/drivers/tty/serial/8250/8250_pci.c
2366 +++ b/drivers/tty/serial/8250/8250_pci.c
2367 @@ -4698,6 +4698,17 @@ static const struct pci_device_id serial_pci_tbl[] = {
2368 { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS400,
2369 PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0dc0 */
2370 pbn_b2_4_115200 },
2371 + /*
2372 + * BrainBoxes UC-260
2373 + */
2374 + { PCI_VENDOR_ID_INTASHIELD, 0x0D21,
2375 + PCI_ANY_ID, PCI_ANY_ID,
2376 + PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
2377 + pbn_b2_4_115200 },
2378 + { PCI_VENDOR_ID_INTASHIELD, 0x0E34,
2379 + PCI_ANY_ID, PCI_ANY_ID,
2380 + PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
2381 + pbn_b2_4_115200 },
2382 /*
2383 * Perle PCI-RAS cards
2384 */
2385 diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
2386 index efa25611ca0c..ae9f1dcbf3fc 100644
2387 --- a/drivers/tty/serial/atmel_serial.c
2388 +++ b/drivers/tty/serial/atmel_serial.c
2389 @@ -1734,6 +1734,7 @@ static void atmel_get_ip_name(struct uart_port *port)
2390 switch (version) {
2391 case 0x302:
2392 case 0x10213:
2393 + case 0x10302:
2394 dev_dbg(port->dev, "This version is usart\n");
2395 atmel_port->has_frac_baudrate = true;
2396 atmel_port->has_hw_timer = true;
2397 diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c
2398 index 4c8b80f1c688..ade1bbbeb9c9 100644
2399 --- a/drivers/tty/serial/earlycon.c
2400 +++ b/drivers/tty/serial/earlycon.c
2401 @@ -250,11 +250,12 @@ int __init of_setup_earlycon(const struct earlycon_id *match,
2402 }
2403 port->mapbase = addr;
2404 port->uartclk = BASE_BAUD * 16;
2405 - port->membase = earlycon_map(port->mapbase, SZ_4K);
2406
2407 val = of_get_flat_dt_prop(node, "reg-offset", NULL);
2408 if (val)
2409 port->mapbase += be32_to_cpu(*val);
2410 + port->membase = earlycon_map(port->mapbase, SZ_4K);
2411 +
2412 val = of_get_flat_dt_prop(node, "reg-shift", NULL);
2413 if (val)
2414 port->regshift = be32_to_cpu(*val);
2415 diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
2416 index 7e7e6eb95b0a..6e0ab3333f62 100644
2417 --- a/drivers/tty/serial/serial_core.c
2418 +++ b/drivers/tty/serial/serial_core.c
2419 @@ -1144,6 +1144,8 @@ static int uart_do_autoconfig(struct tty_struct *tty,struct uart_state *state)
2420 uport->ops->config_port(uport, flags);
2421
2422 ret = uart_startup(tty, state, 1);
2423 + if (ret == 0)
2424 + tty_port_set_initialized(port, true);
2425 if (ret > 0)
2426 ret = 0;
2427 }
2428 diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
2429 index d9f399c4e90c..db2ebeca7788 100644
2430 --- a/drivers/tty/serial/sh-sci.c
2431 +++ b/drivers/tty/serial/sh-sci.c
2432 @@ -885,6 +885,8 @@ static void sci_receive_chars(struct uart_port *port)
2433 /* Tell the rest of the system the news. New characters! */
2434 tty_flip_buffer_push(tport);
2435 } else {
2436 + /* TTY buffers full; read from RX reg to prevent lockup */
2437 + serial_port_in(port, SCxRDR);
2438 serial_port_in(port, SCxSR); /* dummy read */
2439 sci_clear_SCxSR(port, SCxSR_RDxF_CLEAR(port));
2440 }
2441 diff --git a/drivers/usb/core/ledtrig-usbport.c b/drivers/usb/core/ledtrig-usbport.c
2442 index 9dbb429cd471..f1fde5165068 100644
2443 --- a/drivers/usb/core/ledtrig-usbport.c
2444 +++ b/drivers/usb/core/ledtrig-usbport.c
2445 @@ -137,11 +137,17 @@ static bool usbport_trig_port_observed(struct usbport_trig_data *usbport_data,
2446 if (!led_np)
2447 return false;
2448
2449 - /* Get node of port being added */
2450 + /*
2451 + * Get node of port being added
2452 + *
2453 + * FIXME: This is really the device node of the connected device
2454 + */
2455 port_np = usb_of_get_child_node(usb_dev->dev.of_node, port1);
2456 if (!port_np)
2457 return false;
2458
2459 + of_node_put(port_np);
2460 +
2461 /* Amount of trigger sources for this LED */
2462 count = of_count_phandle_with_args(led_np, "trigger-sources",
2463 "#trigger-source-cells");
2464 diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
2465 index 77001bcfc504..a4025760dd84 100644
2466 --- a/drivers/usb/core/message.c
2467 +++ b/drivers/usb/core/message.c
2468 @@ -150,6 +150,10 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
2469
2470 ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
2471
2472 + /* Linger a bit, prior to the next control message. */
2473 + if (dev->quirks & USB_QUIRK_DELAY_CTRL_MSG)
2474 + msleep(200);
2475 +
2476 kfree(dr);
2477
2478 return ret;
2479 diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
2480 index f4a548471f0f..54b019e267c5 100644
2481 --- a/drivers/usb/core/quirks.c
2482 +++ b/drivers/usb/core/quirks.c
2483 @@ -230,7 +230,8 @@ static const struct usb_device_id usb_quirk_list[] = {
2484 { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT },
2485
2486 /* Corsair Strafe RGB */
2487 - { USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT },
2488 + { USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT |
2489 + USB_QUIRK_DELAY_CTRL_MSG },
2490
2491 /* Corsair K70 LUX */
2492 { USB_DEVICE(0x1b1c, 0x1b36), .driver_info = USB_QUIRK_DELAY_INIT },
2493 diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
2494 index 07832509584f..51de21ef3cdc 100644
2495 --- a/drivers/usb/dwc3/core.c
2496 +++ b/drivers/usb/dwc3/core.c
2497 @@ -174,7 +174,7 @@ void dwc3_set_mode(struct dwc3 *dwc, u32 mode)
2498 dwc->desired_dr_role = mode;
2499 spin_unlock_irqrestore(&dwc->lock, flags);
2500
2501 - queue_work(system_power_efficient_wq, &dwc->drd_work);
2502 + queue_work(system_freezable_wq, &dwc->drd_work);
2503 }
2504
2505 u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type)
2506 diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
2507 index 0ef08a909ba6..569882e04213 100644
2508 --- a/drivers/usb/gadget/function/f_fs.c
2509 +++ b/drivers/usb/gadget/function/f_fs.c
2510 @@ -1535,7 +1535,6 @@ ffs_fs_kill_sb(struct super_block *sb)
2511 if (sb->s_fs_info) {
2512 ffs_release_dev(sb->s_fs_info);
2513 ffs_data_closed(sb->s_fs_info);
2514 - ffs_data_put(sb->s_fs_info);
2515 }
2516 }
2517
2518 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
2519 index 1aad89b8aba0..f68f364c77d5 100644
2520 --- a/drivers/usb/host/xhci-pci.c
2521 +++ b/drivers/usb/host/xhci-pci.c
2522 @@ -122,6 +122,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
2523 if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())
2524 xhci->quirks |= XHCI_AMD_PLL_FIX;
2525
2526 + if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x43bb)
2527 + xhci->quirks |= XHCI_SUSPEND_DELAY;
2528 +
2529 if (pdev->vendor == PCI_VENDOR_ID_AMD)
2530 xhci->quirks |= XHCI_TRUST_TX_LENGTH;
2531
2532 diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
2533 index f0b559660007..f33ffc2bc4ed 100644
2534 --- a/drivers/usb/host/xhci-rcar.c
2535 +++ b/drivers/usb/host/xhci-rcar.c
2536 @@ -83,6 +83,10 @@ static const struct soc_device_attribute rcar_quirks_match[] = {
2537 .soc_id = "r8a7796",
2538 .data = (void *)RCAR_XHCI_FIRMWARE_V3,
2539 },
2540 + {
2541 + .soc_id = "r8a77965",
2542 + .data = (void *)RCAR_XHCI_FIRMWARE_V3,
2543 + },
2544 { /* sentinel */ },
2545 };
2546
2547 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
2548 index 5c1326154e66..a7c99e121cc6 100644
2549 --- a/drivers/usb/host/xhci.c
2550 +++ b/drivers/usb/host/xhci.c
2551 @@ -880,6 +880,9 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
2552 clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
2553 del_timer_sync(&xhci->shared_hcd->rh_timer);
2554
2555 + if (xhci->quirks & XHCI_SUSPEND_DELAY)
2556 + usleep_range(1000, 1500);
2557 +
2558 spin_lock_irq(&xhci->lock);
2559 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
2560 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
2561 diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
2562 index 99a014a920d3..6740448779fe 100644
2563 --- a/drivers/usb/host/xhci.h
2564 +++ b/drivers/usb/host/xhci.h
2565 @@ -718,11 +718,12 @@ struct xhci_ep_ctx {
2566 /* bits 10:14 are Max Primary Streams */
2567 /* bit 15 is Linear Stream Array */
2568 /* Interval - period between requests to an endpoint - 125u increments. */
2569 -#define EP_INTERVAL(p) (((p) & 0xff) << 16)
2570 -#define EP_INTERVAL_TO_UFRAMES(p) (1 << (((p) >> 16) & 0xff))
2571 -#define CTX_TO_EP_INTERVAL(p) (((p) >> 16) & 0xff)
2572 -#define EP_MAXPSTREAMS_MASK (0x1f << 10)
2573 -#define EP_MAXPSTREAMS(p) (((p) << 10) & EP_MAXPSTREAMS_MASK)
2574 +#define EP_INTERVAL(p) (((p) & 0xff) << 16)
2575 +#define EP_INTERVAL_TO_UFRAMES(p) (1 << (((p) >> 16) & 0xff))
2576 +#define CTX_TO_EP_INTERVAL(p) (((p) >> 16) & 0xff)
2577 +#define EP_MAXPSTREAMS_MASK (0x1f << 10)
2578 +#define EP_MAXPSTREAMS(p) (((p) << 10) & EP_MAXPSTREAMS_MASK)
2579 +#define CTX_TO_EP_MAXPSTREAMS(p) (((p) & EP_MAXPSTREAMS_MASK) >> 10)
2580 /* Endpoint is set up with a Linear Stream Array (vs. Secondary Stream Array) */
2581 #define EP_HAS_LSA (1 << 15)
2582 /* hosts with LEC=1 use bits 31:24 as ESIT high bits. */
2583 @@ -1823,6 +1824,7 @@ struct xhci_hcd {
2584 /* Reserved. It was XHCI_U2_DISABLE_WAKE */
2585 #define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
2586 #define XHCI_HW_LPM_DISABLE (1 << 29)
2587 +#define XHCI_SUSPEND_DELAY (1 << 30)
2588
2589 unsigned int num_active_eps;
2590 unsigned int limit_active_eps;
2591 @@ -2537,21 +2539,22 @@ static inline const char *xhci_decode_ep_context(u32 info, u32 info2, u64 deq,
2592 u8 burst;
2593 u8 cerr;
2594 u8 mult;
2595 - u8 lsa;
2596 - u8 hid;
2597 +
2598 + bool lsa;
2599 + bool hid;
2600
2601 esit = CTX_TO_MAX_ESIT_PAYLOAD_HI(info) << 16 |
2602 CTX_TO_MAX_ESIT_PAYLOAD(tx_info);
2603
2604 ep_state = info & EP_STATE_MASK;
2605 - max_pstr = info & EP_MAXPSTREAMS_MASK;
2606 + max_pstr = CTX_TO_EP_MAXPSTREAMS(info);
2607 interval = CTX_TO_EP_INTERVAL(info);
2608 mult = CTX_TO_EP_MULT(info) + 1;
2609 - lsa = info & EP_HAS_LSA;
2610 + lsa = !!(info & EP_HAS_LSA);
2611
2612 cerr = (info2 & (3 << 1)) >> 1;
2613 ep_type = CTX_TO_EP_TYPE(info2);
2614 - hid = info2 & (1 << 7);
2615 + hid = !!(info2 & (1 << 7));
2616 burst = CTX_TO_MAX_BURST(info2);
2617 maxp = MAX_PACKET_DECODED(info2);
2618
2619 diff --git a/drivers/usb/mon/mon_text.c b/drivers/usb/mon/mon_text.c
2620 index f5e1bb5e5217..984f7e12a6a5 100644
2621 --- a/drivers/usb/mon/mon_text.c
2622 +++ b/drivers/usb/mon/mon_text.c
2623 @@ -85,6 +85,8 @@ struct mon_reader_text {
2624
2625 wait_queue_head_t wait;
2626 int printf_size;
2627 + size_t printf_offset;
2628 + size_t printf_togo;
2629 char *printf_buf;
2630 struct mutex printf_lock;
2631
2632 @@ -376,75 +378,103 @@ static int mon_text_open(struct inode *inode, struct file *file)
2633 return rc;
2634 }
2635
2636 -/*
2637 - * For simplicity, we read one record in one system call and throw out
2638 - * what does not fit. This means that the following does not work:
2639 - * dd if=/dbg/usbmon/0t bs=10
2640 - * Also, we do not allow seeks and do not bother advancing the offset.
2641 - */
2642 +static ssize_t mon_text_copy_to_user(struct mon_reader_text *rp,
2643 + char __user * const buf, const size_t nbytes)
2644 +{
2645 + const size_t togo = min(nbytes, rp->printf_togo);
2646 +
2647 + if (copy_to_user(buf, &rp->printf_buf[rp->printf_offset], togo))
2648 + return -EFAULT;
2649 + rp->printf_togo -= togo;
2650 + rp->printf_offset += togo;
2651 + return togo;
2652 +}
2653 +
2654 +/* ppos is not advanced since the llseek operation is not permitted. */
2655 static ssize_t mon_text_read_t(struct file *file, char __user *buf,
2656 - size_t nbytes, loff_t *ppos)
2657 + size_t nbytes, loff_t *ppos)
2658 {
2659 struct mon_reader_text *rp = file->private_data;
2660 struct mon_event_text *ep;
2661 struct mon_text_ptr ptr;
2662 + ssize_t ret;
2663
2664 - ep = mon_text_read_wait(rp, file);
2665 - if (IS_ERR(ep))
2666 - return PTR_ERR(ep);
2667 mutex_lock(&rp->printf_lock);
2668 - ptr.cnt = 0;
2669 - ptr.pbuf = rp->printf_buf;
2670 - ptr.limit = rp->printf_size;
2671 -
2672 - mon_text_read_head_t(rp, &ptr, ep);
2673 - mon_text_read_statset(rp, &ptr, ep);
2674 - ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2675 - " %d", ep->length);
2676 - mon_text_read_data(rp, &ptr, ep);
2677 -
2678 - if (copy_to_user(buf, rp->printf_buf, ptr.cnt))
2679 - ptr.cnt = -EFAULT;
2680 +
2681 + if (rp->printf_togo == 0) {
2682 +
2683 + ep = mon_text_read_wait(rp, file);
2684 + if (IS_ERR(ep)) {
2685 + mutex_unlock(&rp->printf_lock);
2686 + return PTR_ERR(ep);
2687 + }
2688 + ptr.cnt = 0;
2689 + ptr.pbuf = rp->printf_buf;
2690 + ptr.limit = rp->printf_size;
2691 +
2692 + mon_text_read_head_t(rp, &ptr, ep);
2693 + mon_text_read_statset(rp, &ptr, ep);
2694 + ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2695 + " %d", ep->length);
2696 + mon_text_read_data(rp, &ptr, ep);
2697 +
2698 + rp->printf_togo = ptr.cnt;
2699 + rp->printf_offset = 0;
2700 +
2701 + kmem_cache_free(rp->e_slab, ep);
2702 + }
2703 +
2704 + ret = mon_text_copy_to_user(rp, buf, nbytes);
2705 mutex_unlock(&rp->printf_lock);
2706 - kmem_cache_free(rp->e_slab, ep);
2707 - return ptr.cnt;
2708 + return ret;
2709 }
2710
2711 +/* ppos is not advanced since the llseek operation is not permitted. */
2712 static ssize_t mon_text_read_u(struct file *file, char __user *buf,
2713 - size_t nbytes, loff_t *ppos)
2714 + size_t nbytes, loff_t *ppos)
2715 {
2716 struct mon_reader_text *rp = file->private_data;
2717 struct mon_event_text *ep;
2718 struct mon_text_ptr ptr;
2719 + ssize_t ret;
2720
2721 - ep = mon_text_read_wait(rp, file);
2722 - if (IS_ERR(ep))
2723 - return PTR_ERR(ep);
2724 mutex_lock(&rp->printf_lock);
2725 - ptr.cnt = 0;
2726 - ptr.pbuf = rp->printf_buf;
2727 - ptr.limit = rp->printf_size;
2728
2729 - mon_text_read_head_u(rp, &ptr, ep);
2730 - if (ep->type == 'E') {
2731 - mon_text_read_statset(rp, &ptr, ep);
2732 - } else if (ep->xfertype == USB_ENDPOINT_XFER_ISOC) {
2733 - mon_text_read_isostat(rp, &ptr, ep);
2734 - mon_text_read_isodesc(rp, &ptr, ep);
2735 - } else if (ep->xfertype == USB_ENDPOINT_XFER_INT) {
2736 - mon_text_read_intstat(rp, &ptr, ep);
2737 - } else {
2738 - mon_text_read_statset(rp, &ptr, ep);
2739 + if (rp->printf_togo == 0) {
2740 +
2741 + ep = mon_text_read_wait(rp, file);
2742 + if (IS_ERR(ep)) {
2743 + mutex_unlock(&rp->printf_lock);
2744 + return PTR_ERR(ep);
2745 + }
2746 + ptr.cnt = 0;
2747 + ptr.pbuf = rp->printf_buf;
2748 + ptr.limit = rp->printf_size;
2749 +
2750 + mon_text_read_head_u(rp, &ptr, ep);
2751 + if (ep->type == 'E') {
2752 + mon_text_read_statset(rp, &ptr, ep);
2753 + } else if (ep->xfertype == USB_ENDPOINT_XFER_ISOC) {
2754 + mon_text_read_isostat(rp, &ptr, ep);
2755 + mon_text_read_isodesc(rp, &ptr, ep);
2756 + } else if (ep->xfertype == USB_ENDPOINT_XFER_INT) {
2757 + mon_text_read_intstat(rp, &ptr, ep);
2758 + } else {
2759 + mon_text_read_statset(rp, &ptr, ep);
2760 + }
2761 + ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2762 + " %d", ep->length);
2763 + mon_text_read_data(rp, &ptr, ep);
2764 +
2765 + rp->printf_togo = ptr.cnt;
2766 + rp->printf_offset = 0;
2767 +
2768 + kmem_cache_free(rp->e_slab, ep);
2769 }
2770 - ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2771 - " %d", ep->length);
2772 - mon_text_read_data(rp, &ptr, ep);
2773
2774 - if (copy_to_user(buf, rp->printf_buf, ptr.cnt))
2775 - ptr.cnt = -EFAULT;
2776 + ret = mon_text_copy_to_user(rp, buf, nbytes);
2777 mutex_unlock(&rp->printf_lock);
2778 - kmem_cache_free(rp->e_slab, ep);
2779 - return ptr.cnt;
2780 + return ret;
2781 }
2782
2783 static struct mon_event_text *mon_text_read_wait(struct mon_reader_text *rp,
2784 diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
2785 index 3b1b9695177a..6034c39b67d1 100644
2786 --- a/drivers/usb/storage/uas.c
2787 +++ b/drivers/usb/storage/uas.c
2788 @@ -1076,7 +1076,7 @@ static int uas_post_reset(struct usb_interface *intf)
2789 return 0;
2790
2791 err = uas_configure_endpoints(devinfo);
2792 - if (err && err != ENODEV)
2793 + if (err && err != -ENODEV)
2794 shost_printk(KERN_ERR, shost,
2795 "%s: alloc streams error %d after reset",
2796 __func__, err);
2797 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
2798 index f72d045ee9ef..89e1c743e652 100644
2799 --- a/drivers/usb/storage/unusual_devs.h
2800 +++ b/drivers/usb/storage/unusual_devs.h
2801 @@ -2124,6 +2124,13 @@ UNUSUAL_DEV( 0x152d, 0x2566, 0x0114, 0x0114,
2802 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2803 US_FL_BROKEN_FUA ),
2804
2805 +/* Reported by Teijo Kinnunen <teijo.kinnunen@code-q.fi> */
2806 +UNUSUAL_DEV( 0x152d, 0x2567, 0x0117, 0x0117,
2807 + "JMicron",
2808 + "USB to ATA/ATAPI Bridge",
2809 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2810 + US_FL_BROKEN_FUA ),
2811 +
2812 /* Reported-by George Cherian <george.cherian@cavium.com> */
2813 UNUSUAL_DEV(0x152d, 0x9561, 0x0000, 0x9999,
2814 "JMicron",
2815 diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c
2816 index 72cb060b3fca..d20008576b8f 100644
2817 --- a/drivers/usb/typec/fusb302/fusb302.c
2818 +++ b/drivers/usb/typec/fusb302/fusb302.c
2819 @@ -1543,6 +1543,21 @@ static int fusb302_pd_read_message(struct fusb302_chip *chip,
2820 fusb302_log(chip, "PD message header: %x", msg->header);
2821 fusb302_log(chip, "PD message len: %d", len);
2822
2823 + /*
2824 + * Check if we've read off a GoodCRC message. If so then indicate to
2825 + * TCPM that the previous transmission has completed. Otherwise we pass
2826 + * the received message over to TCPM for processing.
2827 + *
2828 + * We make this check here instead of basing the reporting decision on
2829 + * the IRQ event type, as it's possible for the chip to report the
2830 + * TX_SUCCESS and GCRCSENT events out of order on occasion, so we need
2831 + * to check the message type to ensure correct reporting to TCPM.
2832 + */
2833 + if ((!len) && (pd_header_type_le(msg->header) == PD_CTRL_GOOD_CRC))
2834 + tcpm_pd_transmit_complete(chip->tcpm_port, TCPC_TX_SUCCESS);
2835 + else
2836 + tcpm_pd_receive(chip->tcpm_port, msg);
2837 +
2838 return ret;
2839 }
2840
2841 @@ -1650,13 +1665,12 @@ static irqreturn_t fusb302_irq_intn(int irq, void *dev_id)
2842
2843 if (interrupta & FUSB_REG_INTERRUPTA_TX_SUCCESS) {
2844 fusb302_log(chip, "IRQ: PD tx success");
2845 - /* read out the received good CRC */
2846 ret = fusb302_pd_read_message(chip, &pd_msg);
2847 if (ret < 0) {
2848 - fusb302_log(chip, "cannot read in GCRC, ret=%d", ret);
2849 + fusb302_log(chip,
2850 + "cannot read in PD message, ret=%d", ret);
2851 goto done;
2852 }
2853 - tcpm_pd_transmit_complete(chip->tcpm_port, TCPC_TX_SUCCESS);
2854 }
2855
2856 if (interrupta & FUSB_REG_INTERRUPTA_HARDRESET) {
2857 @@ -1677,7 +1691,6 @@ static irqreturn_t fusb302_irq_intn(int irq, void *dev_id)
2858 "cannot read in PD message, ret=%d", ret);
2859 goto done;
2860 }
2861 - tcpm_pd_receive(chip->tcpm_port, &pd_msg);
2862 }
2863 done:
2864 mutex_unlock(&chip->lock);
2865 diff --git a/drivers/usb/usbip/vudc_sysfs.c b/drivers/usb/usbip/vudc_sysfs.c
2866 index 1adc8af292ec..59a4d1bcda1e 100644
2867 --- a/drivers/usb/usbip/vudc_sysfs.c
2868 +++ b/drivers/usb/usbip/vudc_sysfs.c
2869 @@ -105,10 +105,14 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
2870 if (rv != 0)
2871 return -EINVAL;
2872
2873 + if (!udc) {
2874 + dev_err(dev, "no device");
2875 + return -ENODEV;
2876 + }
2877 spin_lock_irqsave(&udc->lock, flags);
2878 /* Don't export what we don't have */
2879 - if (!udc || !udc->driver || !udc->pullup) {
2880 - dev_err(dev, "no device or gadget not bound");
2881 + if (!udc->driver || !udc->pullup) {
2882 + dev_err(dev, "gadget not bound");
2883 ret = -ENODEV;
2884 goto unlock;
2885 }
2886 diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
2887 index 1cf907ecded4..111a0ab6280a 100644
2888 --- a/drivers/video/hdmi.c
2889 +++ b/drivers/video/hdmi.c
2890 @@ -321,6 +321,17 @@ int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame)
2891 }
2892 EXPORT_SYMBOL(hdmi_vendor_infoframe_init);
2893
2894 +static int hdmi_vendor_infoframe_length(const struct hdmi_vendor_infoframe *frame)
2895 +{
2896 + /* for side by side (half) we also need to provide 3D_Ext_Data */
2897 + if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2898 + return 6;
2899 + else if (frame->vic != 0 || frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID)
2900 + return 5;
2901 + else
2902 + return 4;
2903 +}
2904 +
2905 /**
2906 * hdmi_vendor_infoframe_pack() - write a HDMI vendor infoframe to binary buffer
2907 * @frame: HDMI infoframe
2908 @@ -341,19 +352,11 @@ ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
2909 u8 *ptr = buffer;
2910 size_t length;
2911
2912 - /* empty info frame */
2913 - if (frame->vic == 0 && frame->s3d_struct == HDMI_3D_STRUCTURE_INVALID)
2914 - return -EINVAL;
2915 -
2916 /* only one of those can be supplied */
2917 if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID)
2918 return -EINVAL;
2919
2920 - /* for side by side (half) we also need to provide 3D_Ext_Data */
2921 - if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2922 - frame->length = 6;
2923 - else
2924 - frame->length = 5;
2925 + frame->length = hdmi_vendor_infoframe_length(frame);
2926
2927 length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
2928
2929 @@ -372,14 +375,16 @@ ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
2930 ptr[5] = 0x0c;
2931 ptr[6] = 0x00;
2932
2933 - if (frame->vic) {
2934 - ptr[7] = 0x1 << 5; /* video format */
2935 - ptr[8] = frame->vic;
2936 - } else {
2937 + if (frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) {
2938 ptr[7] = 0x2 << 5; /* video format */
2939 ptr[8] = (frame->s3d_struct & 0xf) << 4;
2940 if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2941 ptr[9] = (frame->s3d_ext_data & 0xf) << 4;
2942 + } else if (frame->vic) {
2943 + ptr[7] = 0x1 << 5; /* video format */
2944 + ptr[8] = frame->vic;
2945 + } else {
2946 + ptr[7] = 0x0 << 5; /* video format */
2947 }
2948
2949 hdmi_infoframe_set_checksum(buffer, length);
2950 @@ -1165,7 +1170,7 @@ hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame,
2951
2952 if (ptr[0] != HDMI_INFOFRAME_TYPE_VENDOR ||
2953 ptr[1] != 1 ||
2954 - (ptr[2] != 5 && ptr[2] != 6))
2955 + (ptr[2] != 4 && ptr[2] != 5 && ptr[2] != 6))
2956 return -EINVAL;
2957
2958 length = ptr[2];
2959 @@ -1193,16 +1198,22 @@ hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame,
2960
2961 hvf->length = length;
2962
2963 - if (hdmi_video_format == 0x1) {
2964 - hvf->vic = ptr[4];
2965 - } else if (hdmi_video_format == 0x2) {
2966 + if (hdmi_video_format == 0x2) {
2967 + if (length != 5 && length != 6)
2968 + return -EINVAL;
2969 hvf->s3d_struct = ptr[4] >> 4;
2970 if (hvf->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) {
2971 - if (length == 6)
2972 - hvf->s3d_ext_data = ptr[5] >> 4;
2973 - else
2974 + if (length != 6)
2975 return -EINVAL;
2976 + hvf->s3d_ext_data = ptr[5] >> 4;
2977 }
2978 + } else if (hdmi_video_format == 0x1) {
2979 + if (length != 5)
2980 + return -EINVAL;
2981 + hvf->vic = ptr[4];
2982 + } else {
2983 + if (length != 4)
2984 + return -EINVAL;
2985 }
2986
2987 return 0;
2988 diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
2989 index 27baaff96880..a28bba801264 100644
2990 --- a/fs/btrfs/sysfs.c
2991 +++ b/fs/btrfs/sysfs.c
2992 @@ -423,7 +423,7 @@ static ssize_t btrfs_nodesize_show(struct kobject *kobj,
2993 {
2994 struct btrfs_fs_info *fs_info = to_fs_info(kobj);
2995
2996 - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->nodesize);
2997 + return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->nodesize);
2998 }
2999
3000 BTRFS_ATTR(, nodesize, btrfs_nodesize_show);
3001 @@ -433,7 +433,8 @@ static ssize_t btrfs_sectorsize_show(struct kobject *kobj,
3002 {
3003 struct btrfs_fs_info *fs_info = to_fs_info(kobj);
3004
3005 - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
3006 + return snprintf(buf, PAGE_SIZE, "%u\n",
3007 + fs_info->super_copy->sectorsize);
3008 }
3009
3010 BTRFS_ATTR(, sectorsize, btrfs_sectorsize_show);
3011 @@ -443,7 +444,8 @@ static ssize_t btrfs_clone_alignment_show(struct kobject *kobj,
3012 {
3013 struct btrfs_fs_info *fs_info = to_fs_info(kobj);
3014
3015 - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
3016 + return snprintf(buf, PAGE_SIZE, "%u\n",
3017 + fs_info->super_copy->sectorsize);
3018 }
3019
3020 BTRFS_ATTR(, clone_alignment, btrfs_clone_alignment_show);
3021 diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
3022 index 10d12b3de001..5a8c2649af2f 100644
3023 --- a/fs/btrfs/transaction.c
3024 +++ b/fs/btrfs/transaction.c
3025 @@ -1723,23 +1723,19 @@ static void update_super_roots(struct btrfs_fs_info *fs_info)
3026
3027 super = fs_info->super_copy;
3028
3029 - /* update latest btrfs_super_block::chunk_root refs */
3030 root_item = &fs_info->chunk_root->root_item;
3031 - btrfs_set_super_chunk_root(super, root_item->bytenr);
3032 - btrfs_set_super_chunk_root_generation(super, root_item->generation);
3033 - btrfs_set_super_chunk_root_level(super, root_item->level);
3034 + super->chunk_root = root_item->bytenr;
3035 + super->chunk_root_generation = root_item->generation;
3036 + super->chunk_root_level = root_item->level;
3037
3038 - /* update latest btrfs_super_block::root refs */
3039 root_item = &fs_info->tree_root->root_item;
3040 - btrfs_set_super_root(super, root_item->bytenr);
3041 - btrfs_set_super_generation(super, root_item->generation);
3042 - btrfs_set_super_root_level(super, root_item->level);
3043 -
3044 + super->root = root_item->bytenr;
3045 + super->generation = root_item->generation;
3046 + super->root_level = root_item->level;
3047 if (btrfs_test_opt(fs_info, SPACE_CACHE))
3048 - btrfs_set_super_cache_generation(super, root_item->generation);
3049 + super->cache_generation = root_item->generation;
3050 if (test_bit(BTRFS_FS_UPDATE_UUID_TREE_GEN, &fs_info->flags))
3051 - btrfs_set_super_uuid_tree_generation(super,
3052 - root_item->generation);
3053 + super->uuid_tree_generation = root_item->generation;
3054 }
3055
3056 int btrfs_transaction_in_commit(struct btrfs_fs_info *info)
3057 diff --git a/fs/gfs2/bmap.c b/fs/gfs2/bmap.c
3058 index 8c50d6878aa5..f13e986696f7 100644
3059 --- a/fs/gfs2/bmap.c
3060 +++ b/fs/gfs2/bmap.c
3061 @@ -305,21 +305,22 @@ static void gfs2_metapath_ra(struct gfs2_glock *gl,
3062 }
3063 }
3064
3065 -/**
3066 - * lookup_mp_height - helper function for lookup_metapath
3067 - * @ip: the inode
3068 - * @mp: the metapath
3069 - * @h: the height which needs looking up
3070 - */
3071 -static int lookup_mp_height(struct gfs2_inode *ip, struct metapath *mp, int h)
3072 +static int __fillup_metapath(struct gfs2_inode *ip, struct metapath *mp,
3073 + unsigned int x, unsigned int h)
3074 {
3075 - __be64 *ptr = metapointer(h, mp);
3076 - u64 dblock = be64_to_cpu(*ptr);
3077 -
3078 - if (!dblock)
3079 - return h + 1;
3080 + for (; x < h; x++) {
3081 + __be64 *ptr = metapointer(x, mp);
3082 + u64 dblock = be64_to_cpu(*ptr);
3083 + int ret;
3084
3085 - return gfs2_meta_indirect_buffer(ip, h + 1, dblock, &mp->mp_bh[h + 1]);
3086 + if (!dblock)
3087 + break;
3088 + ret = gfs2_meta_indirect_buffer(ip, x + 1, dblock, &mp->mp_bh[x + 1]);
3089 + if (ret)
3090 + return ret;
3091 + }
3092 + mp->mp_aheight = x + 1;
3093 + return 0;
3094 }
3095
3096 /**
3097 @@ -336,25 +337,12 @@ static int lookup_mp_height(struct gfs2_inode *ip, struct metapath *mp, int h)
3098 * at which it found the unallocated block. Blocks which are found are
3099 * added to the mp->mp_bh[] list.
3100 *
3101 - * Returns: error or height of metadata tree
3102 + * Returns: error
3103 */
3104
3105 static int lookup_metapath(struct gfs2_inode *ip, struct metapath *mp)
3106 {
3107 - unsigned int end_of_metadata = ip->i_height - 1;
3108 - unsigned int x;
3109 - int ret;
3110 -
3111 - for (x = 0; x < end_of_metadata; x++) {
3112 - ret = lookup_mp_height(ip, mp, x);
3113 - if (ret)
3114 - goto out;
3115 - }
3116 -
3117 - ret = ip->i_height;
3118 -out:
3119 - mp->mp_aheight = ret;
3120 - return ret;
3121 + return __fillup_metapath(ip, mp, 0, ip->i_height - 1);
3122 }
3123
3124 /**
3125 @@ -365,25 +353,21 @@ static int lookup_metapath(struct gfs2_inode *ip, struct metapath *mp)
3126 *
3127 * Similar to lookup_metapath, but does lookups for a range of heights
3128 *
3129 - * Returns: error or height of metadata tree
3130 + * Returns: error
3131 */
3132
3133 static int fillup_metapath(struct gfs2_inode *ip, struct metapath *mp, int h)
3134 {
3135 - unsigned int start_h = h - 1;
3136 - int ret;
3137 + unsigned int x = 0;
3138
3139 if (h) {
3140 /* find the first buffer we need to look up. */
3141 - while (start_h > 0 && mp->mp_bh[start_h] == NULL)
3142 - start_h--;
3143 - for (; start_h < h; start_h++) {
3144 - ret = lookup_mp_height(ip, mp, start_h);
3145 - if (ret)
3146 - return ret;
3147 + for (x = h - 1; x > 0; x--) {
3148 + if (mp->mp_bh[x])
3149 + break;
3150 }
3151 }
3152 - return ip->i_height;
3153 + return __fillup_metapath(ip, mp, x, h);
3154 }
3155
3156 static inline void release_metapath(struct metapath *mp)
3157 @@ -790,7 +774,7 @@ int gfs2_iomap_begin(struct inode *inode, loff_t pos, loff_t length,
3158 goto do_alloc;
3159
3160 ret = lookup_metapath(ip, &mp);
3161 - if (ret < 0)
3162 + if (ret)
3163 goto out_release;
3164
3165 if (mp.mp_aheight != ip->i_height)
3166 @@ -827,9 +811,6 @@ int gfs2_iomap_begin(struct inode *inode, loff_t pos, loff_t length,
3167 iomap->length = hole_size(inode, lblock, &mp);
3168 else
3169 iomap->length = size - pos;
3170 - } else {
3171 - if (height <= ip->i_height)
3172 - iomap->length = hole_size(inode, lblock, &mp);
3173 }
3174 goto out_release;
3175 }
3176 @@ -1339,7 +1320,9 @@ static int trunc_dealloc(struct gfs2_inode *ip, u64 newsize)
3177
3178 mp.mp_bh[0] = dibh;
3179 ret = lookup_metapath(ip, &mp);
3180 - if (ret == ip->i_height)
3181 + if (ret)
3182 + goto out_metapath;
3183 + if (mp.mp_aheight == ip->i_height)
3184 state = DEALLOC_MP_FULL; /* We have a complete metapath */
3185 else
3186 state = DEALLOC_FILL_MP; /* deal with partial metapath */
3187 @@ -1435,16 +1418,16 @@ static int trunc_dealloc(struct gfs2_inode *ip, u64 newsize)
3188 case DEALLOC_FILL_MP:
3189 /* Fill the buffers out to the current height. */
3190 ret = fillup_metapath(ip, &mp, mp_h);
3191 - if (ret < 0)
3192 + if (ret)
3193 goto out;
3194
3195 /* If buffers found for the entire strip height */
3196 - if ((ret == ip->i_height) && (mp_h == strip_h)) {
3197 + if (mp.mp_aheight - 1 == strip_h) {
3198 state = DEALLOC_MP_FULL;
3199 break;
3200 }
3201 - if (ret < ip->i_height) /* We have a partial height */
3202 - mp_h = ret - 1;
3203 + if (mp.mp_aheight < ip->i_height) /* We have a partial height */
3204 + mp_h = mp.mp_aheight - 1;
3205
3206 /* If we find a non-null block pointer, crawl a bit
3207 higher up in the metapath and try again, otherwise
3208 diff --git a/fs/namei.c b/fs/namei.c
3209 index 9cc91fb7f156..4e3fc58dae72 100644
3210 --- a/fs/namei.c
3211 +++ b/fs/namei.c
3212 @@ -1133,9 +1133,6 @@ static int follow_automount(struct path *path, struct nameidata *nd,
3213 path->dentry->d_inode)
3214 return -EISDIR;
3215
3216 - if (path->dentry->d_sb->s_user_ns != &init_user_ns)
3217 - return -EACCES;
3218 -
3219 nd->total_link_count++;
3220 if (nd->total_link_count >= 40)
3221 return -ELOOP;
3222 diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h
3223 index 332a5420243c..bc8940ca280d 100644
3224 --- a/include/linux/dma-fence-array.h
3225 +++ b/include/linux/dma-fence-array.h
3226 @@ -21,6 +21,7 @@
3227 #define __LINUX_DMA_FENCE_ARRAY_H
3228
3229 #include <linux/dma-fence.h>
3230 +#include <linux/irq_work.h>
3231
3232 /**
3233 * struct dma_fence_array_cb - callback helper for fence array
3234 @@ -47,6 +48,8 @@ struct dma_fence_array {
3235 unsigned num_fences;
3236 atomic_t num_pending;
3237 struct dma_fence **fences;
3238 +
3239 + struct irq_work work;
3240 };
3241
3242 extern const struct dma_fence_ops dma_fence_array_ops;
3243 diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h
3244 index f1fcec2fd5f8..b7a99ce56bc9 100644
3245 --- a/include/linux/usb/quirks.h
3246 +++ b/include/linux/usb/quirks.h
3247 @@ -63,4 +63,7 @@
3248 */
3249 #define USB_QUIRK_DISCONNECT_SUSPEND BIT(12)
3250
3251 +/* Device needs a pause after every control message. */
3252 +#define USB_QUIRK_DELAY_CTRL_MSG BIT(13)
3253 +
3254 #endif /* __LINUX_USB_QUIRKS_H */
3255 diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
3256 index 7125ddbb24df..6b4a72e5f874 100644
3257 --- a/kernel/bpf/verifier.c
3258 +++ b/kernel/bpf/verifier.c
3259 @@ -279,7 +279,7 @@ static void print_verifier_state(struct bpf_verifier_env *env,
3260 for (i = 0; i < state->allocated_stack / BPF_REG_SIZE; i++) {
3261 if (state->stack[i].slot_type[0] == STACK_SPILL)
3262 verbose(env, " fp%d=%s",
3263 - -MAX_BPF_STACK + i * BPF_REG_SIZE,
3264 + (-i - 1) * BPF_REG_SIZE,
3265 reg_type_str[state->stack[i].spilled_ptr.type]);
3266 }
3267 verbose(env, "\n");
3268 diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c
3269 index f24582d4dad3..6dca260eeccf 100644
3270 --- a/kernel/locking/locktorture.c
3271 +++ b/kernel/locking/locktorture.c
3272 @@ -715,8 +715,7 @@ static void __torture_print_stats(char *page,
3273 {
3274 bool fail = 0;
3275 int i, n_stress;
3276 - long max = 0;
3277 - long min = statp[0].n_lock_acquired;
3278 + long max = 0, min = statp ? statp[0].n_lock_acquired : 0;
3279 long long sum = 0;
3280
3281 n_stress = write ? cxt.nrealwriters_stress : cxt.nrealreaders_stress;
3282 @@ -823,7 +822,7 @@ static void lock_torture_cleanup(void)
3283 * such, only perform the underlying torture-specific cleanups,
3284 * and avoid anything related to locktorture.
3285 */
3286 - if (!cxt.lwsa)
3287 + if (!cxt.lwsa && !cxt.lrsa)
3288 goto end;
3289
3290 if (writer_tasks) {
3291 @@ -898,6 +897,13 @@ static int __init lock_torture_init(void)
3292 firsterr = -EINVAL;
3293 goto unwind;
3294 }
3295 +
3296 + if (nwriters_stress == 0 && nreaders_stress == 0) {
3297 + pr_alert("lock-torture: must run at least one locking thread\n");
3298 + firsterr = -EINVAL;
3299 + goto unwind;
3300 + }
3301 +
3302 if (cxt.cur_ops->init)
3303 cxt.cur_ops->init();
3304
3305 @@ -921,17 +927,19 @@ static int __init lock_torture_init(void)
3306 #endif
3307
3308 /* Initialize the statistics so that each run gets its own numbers. */
3309 + if (nwriters_stress) {
3310 + lock_is_write_held = 0;
3311 + cxt.lwsa = kmalloc(sizeof(*cxt.lwsa) * cxt.nrealwriters_stress, GFP_KERNEL);
3312 + if (cxt.lwsa == NULL) {
3313 + VERBOSE_TOROUT_STRING("cxt.lwsa: Out of memory");
3314 + firsterr = -ENOMEM;
3315 + goto unwind;
3316 + }
3317
3318 - lock_is_write_held = 0;
3319 - cxt.lwsa = kmalloc(sizeof(*cxt.lwsa) * cxt.nrealwriters_stress, GFP_KERNEL);
3320 - if (cxt.lwsa == NULL) {
3321 - VERBOSE_TOROUT_STRING("cxt.lwsa: Out of memory");
3322 - firsterr = -ENOMEM;
3323 - goto unwind;
3324 - }
3325 - for (i = 0; i < cxt.nrealwriters_stress; i++) {
3326 - cxt.lwsa[i].n_lock_fail = 0;
3327 - cxt.lwsa[i].n_lock_acquired = 0;
3328 + for (i = 0; i < cxt.nrealwriters_stress; i++) {
3329 + cxt.lwsa[i].n_lock_fail = 0;
3330 + cxt.lwsa[i].n_lock_acquired = 0;
3331 + }
3332 }
3333
3334 if (cxt.cur_ops->readlock) {
3335 @@ -948,19 +956,21 @@ static int __init lock_torture_init(void)
3336 cxt.nrealreaders_stress = cxt.nrealwriters_stress;
3337 }
3338
3339 - lock_is_read_held = 0;
3340 - cxt.lrsa = kmalloc(sizeof(*cxt.lrsa) * cxt.nrealreaders_stress, GFP_KERNEL);
3341 - if (cxt.lrsa == NULL) {
3342 - VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory");
3343 - firsterr = -ENOMEM;
3344 - kfree(cxt.lwsa);
3345 - cxt.lwsa = NULL;
3346 - goto unwind;
3347 - }
3348 -
3349 - for (i = 0; i < cxt.nrealreaders_stress; i++) {
3350 - cxt.lrsa[i].n_lock_fail = 0;
3351 - cxt.lrsa[i].n_lock_acquired = 0;
3352 + if (nreaders_stress) {
3353 + lock_is_read_held = 0;
3354 + cxt.lrsa = kmalloc(sizeof(*cxt.lrsa) * cxt.nrealreaders_stress, GFP_KERNEL);
3355 + if (cxt.lrsa == NULL) {
3356 + VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory");
3357 + firsterr = -ENOMEM;
3358 + kfree(cxt.lwsa);
3359 + cxt.lwsa = NULL;
3360 + goto unwind;
3361 + }
3362 +
3363 + for (i = 0; i < cxt.nrealreaders_stress; i++) {
3364 + cxt.lrsa[i].n_lock_fail = 0;
3365 + cxt.lrsa[i].n_lock_acquired = 0;
3366 + }
3367 }
3368 }
3369
3370 @@ -990,12 +1000,14 @@ static int __init lock_torture_init(void)
3371 goto unwind;
3372 }
3373
3374 - writer_tasks = kzalloc(cxt.nrealwriters_stress * sizeof(writer_tasks[0]),
3375 - GFP_KERNEL);
3376 - if (writer_tasks == NULL) {
3377 - VERBOSE_TOROUT_ERRSTRING("writer_tasks: Out of memory");
3378 - firsterr = -ENOMEM;
3379 - goto unwind;
3380 + if (nwriters_stress) {
3381 + writer_tasks = kzalloc(cxt.nrealwriters_stress * sizeof(writer_tasks[0]),
3382 + GFP_KERNEL);
3383 + if (writer_tasks == NULL) {
3384 + VERBOSE_TOROUT_ERRSTRING("writer_tasks: Out of memory");
3385 + firsterr = -ENOMEM;
3386 + goto unwind;
3387 + }
3388 }
3389
3390 if (cxt.cur_ops->readlock) {
3391 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
3392 index a7bf32aabfda..5a31a85bbd84 100644
3393 --- a/kernel/sched/core.c
3394 +++ b/kernel/sched/core.c
3395 @@ -508,7 +508,8 @@ void resched_cpu(int cpu)
3396 unsigned long flags;
3397
3398 raw_spin_lock_irqsave(&rq->lock, flags);
3399 - resched_curr(rq);
3400 + if (cpu_online(cpu) || cpu == smp_processor_id())
3401 + resched_curr(rq);
3402 raw_spin_unlock_irqrestore(&rq->lock, flags);
3403 }
3404
3405 diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
3406 index 3401f588c916..89a086ed2b16 100644
3407 --- a/kernel/sched/rt.c
3408 +++ b/kernel/sched/rt.c
3409 @@ -2218,7 +2218,7 @@ static void switched_to_rt(struct rq *rq, struct task_struct *p)
3410 if (p->nr_cpus_allowed > 1 && rq->rt.overloaded)
3411 queue_push_tasks(rq);
3412 #endif /* CONFIG_SMP */
3413 - if (p->prio < rq->curr->prio)
3414 + if (p->prio < rq->curr->prio && cpu_online(cpu_of(rq)))
3415 resched_curr(rq);
3416 }
3417 }
3418 diff --git a/lib/usercopy.c b/lib/usercopy.c
3419 index 15e2e6fb060e..3744b2a8e591 100644
3420 --- a/lib/usercopy.c
3421 +++ b/lib/usercopy.c
3422 @@ -20,7 +20,7 @@ EXPORT_SYMBOL(_copy_from_user);
3423 #endif
3424
3425 #ifndef INLINE_COPY_TO_USER
3426 -unsigned long _copy_to_user(void *to, const void __user *from, unsigned long n)
3427 +unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
3428 {
3429 might_fault();
3430 if (likely(access_ok(VERIFY_WRITE, to, n))) {
3431 diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
3432 index 13b16f90e1cf..0fa844293710 100644
3433 --- a/net/mac80211/iface.c
3434 +++ b/net/mac80211/iface.c
3435 @@ -1474,7 +1474,7 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
3436 break;
3437 case NL80211_IFTYPE_UNSPECIFIED:
3438 case NUM_NL80211_IFTYPES:
3439 - BUG();
3440 + WARN_ON(1);
3441 break;
3442 }
3443
3444 diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
3445 index cac003fddf3e..b8db13708370 100644
3446 --- a/net/sched/sch_generic.c
3447 +++ b/net/sched/sch_generic.c
3448 @@ -762,10 +762,6 @@ struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue,
3449 root_lock = qdisc_lock(oqdisc);
3450 spin_lock_bh(root_lock);
3451
3452 - /* Prune old scheduler */
3453 - if (oqdisc && refcount_read(&oqdisc->refcnt) <= 1)
3454 - qdisc_reset(oqdisc);
3455 -
3456 /* ... and graft new one */
3457 if (qdisc == NULL)
3458 qdisc = &noop_qdisc;
3459 @@ -916,6 +912,16 @@ static bool some_qdisc_is_busy(struct net_device *dev)
3460 return false;
3461 }
3462
3463 +static void dev_qdisc_reset(struct net_device *dev,
3464 + struct netdev_queue *dev_queue,
3465 + void *none)
3466 +{
3467 + struct Qdisc *qdisc = dev_queue->qdisc_sleeping;
3468 +
3469 + if (qdisc)
3470 + qdisc_reset(qdisc);
3471 +}
3472 +
3473 /**
3474 * dev_deactivate_many - deactivate transmissions on several devices
3475 * @head: list of devices to deactivate
3476 @@ -926,7 +932,6 @@ static bool some_qdisc_is_busy(struct net_device *dev)
3477 void dev_deactivate_many(struct list_head *head)
3478 {
3479 struct net_device *dev;
3480 - bool sync_needed = false;
3481
3482 list_for_each_entry(dev, head, close_list) {
3483 netdev_for_each_tx_queue(dev, dev_deactivate_queue,
3484 @@ -936,20 +941,25 @@ void dev_deactivate_many(struct list_head *head)
3485 &noop_qdisc);
3486
3487 dev_watchdog_down(dev);
3488 - sync_needed |= !dev->dismantle;
3489 }
3490
3491 /* Wait for outstanding qdisc-less dev_queue_xmit calls.
3492 * This is avoided if all devices are in dismantle phase :
3493 * Caller will call synchronize_net() for us
3494 */
3495 - if (sync_needed)
3496 - synchronize_net();
3497 + synchronize_net();
3498
3499 /* Wait for outstanding qdisc_run calls. */
3500 - list_for_each_entry(dev, head, close_list)
3501 + list_for_each_entry(dev, head, close_list) {
3502 while (some_qdisc_is_busy(dev))
3503 yield();
3504 + /* The new qdisc is assigned at this point so we can safely
3505 + * unwind stale skb lists and qdisc statistics
3506 + */
3507 + netdev_for_each_tx_queue(dev, dev_qdisc_reset, NULL);
3508 + if (dev_ingress_queue(dev))
3509 + dev_qdisc_reset(dev, dev_ingress_queue(dev), NULL);
3510 + }
3511 }
3512
3513 void dev_deactivate(struct net_device *dev)
3514 diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
3515 index bd6b0e7a0ee4..c135ed9bc8c4 100644
3516 --- a/net/xfrm/xfrm_policy.c
3517 +++ b/net/xfrm/xfrm_policy.c
3518 @@ -1256,7 +1256,7 @@ EXPORT_SYMBOL(xfrm_policy_delete);
3519
3520 int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol)
3521 {
3522 - struct net *net = xp_net(pol);
3523 + struct net *net = sock_net(sk);
3524 struct xfrm_policy *old_pol;
3525
3526 #ifdef CONFIG_XFRM_SUB_POLICY
3527 diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c
3528 index 8b23c5bcf8e8..02501817227b 100644
3529 --- a/net/xfrm/xfrm_replay.c
3530 +++ b/net/xfrm/xfrm_replay.c
3531 @@ -666,7 +666,7 @@ static int xfrm_replay_overflow_offload_esn(struct xfrm_state *x, struct sk_buff
3532 if (unlikely(oseq < replay_esn->oseq)) {
3533 XFRM_SKB_CB(skb)->seq.output.hi = ++oseq_hi;
3534 xo->seq.hi = oseq_hi;
3535 -
3536 + replay_esn->oseq_hi = oseq_hi;
3537 if (replay_esn->oseq_hi == 0) {
3538 replay_esn->oseq--;
3539 replay_esn->oseq_hi--;
3540 @@ -678,7 +678,6 @@ static int xfrm_replay_overflow_offload_esn(struct xfrm_state *x, struct sk_buff
3541 }
3542
3543 replay_esn->oseq = oseq;
3544 - replay_esn->oseq_hi = oseq_hi;
3545
3546 if (xfrm_aevent_is_on(net))
3547 x->repl->notify(x, XFRM_REPLAY_UPDATE);
3548 diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
3549 index a3785f538018..54e21f19d722 100644
3550 --- a/net/xfrm/xfrm_state.c
3551 +++ b/net/xfrm/xfrm_state.c
3552 @@ -2056,6 +2056,13 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen
3553 struct xfrm_mgr *km;
3554 struct xfrm_policy *pol = NULL;
3555
3556 + if (!optval && !optlen) {
3557 + xfrm_sk_policy_insert(sk, XFRM_POLICY_IN, NULL);
3558 + xfrm_sk_policy_insert(sk, XFRM_POLICY_OUT, NULL);
3559 + __sk_dst_reset(sk);
3560 + return 0;
3561 + }
3562 +
3563 if (optlen <= 0 || optlen > PAGE_SIZE)
3564 return -EMSGSIZE;
3565
3566 diff --git a/security/integrity/ima/ima_appraise.c b/security/integrity/ima/ima_appraise.c
3567 index 65fbcf3c32c7..d32e6a1d931a 100644
3568 --- a/security/integrity/ima/ima_appraise.c
3569 +++ b/security/integrity/ima/ima_appraise.c
3570 @@ -223,7 +223,8 @@ int ima_appraise_measurement(enum ima_hooks func,
3571 if (opened & FILE_CREATED)
3572 iint->flags |= IMA_NEW_FILE;
3573 if ((iint->flags & IMA_NEW_FILE) &&
3574 - !(iint->flags & IMA_DIGSIG_REQUIRED))
3575 + (!(iint->flags & IMA_DIGSIG_REQUIRED) ||
3576 + (inode->i_size == 0)))
3577 status = INTEGRITY_PASS;
3578 goto out;
3579 }
3580 diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
3581 index 831b297978a4..45a73049cf64 100644
3582 --- a/sound/soc/codecs/rt5651.c
3583 +++ b/sound/soc/codecs/rt5651.c
3584 @@ -1722,6 +1722,7 @@ static const struct regmap_config rt5651_regmap = {
3585 .num_reg_defaults = ARRAY_SIZE(rt5651_reg),
3586 .ranges = rt5651_ranges,
3587 .num_ranges = ARRAY_SIZE(rt5651_ranges),
3588 + .use_single_rw = true,
3589 };
3590
3591 #if defined(CONFIG_OF)
3592 diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
3593 index f2bb4feba3b6..0b11a2e01b2f 100644
3594 --- a/sound/soc/codecs/sgtl5000.c
3595 +++ b/sound/soc/codecs/sgtl5000.c
3596 @@ -871,15 +871,26 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream,
3597 static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
3598 enum snd_soc_bias_level level)
3599 {
3600 + struct sgtl5000_priv *sgtl = snd_soc_codec_get_drvdata(codec);
3601 + int ret;
3602 +
3603 switch (level) {
3604 case SND_SOC_BIAS_ON:
3605 case SND_SOC_BIAS_PREPARE:
3606 case SND_SOC_BIAS_STANDBY:
3607 + regcache_cache_only(sgtl->regmap, false);
3608 + ret = regcache_sync(sgtl->regmap);
3609 + if (ret) {
3610 + regcache_cache_only(sgtl->regmap, true);
3611 + return ret;
3612 + }
3613 +
3614 snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
3615 SGTL5000_REFTOP_POWERUP,
3616 SGTL5000_REFTOP_POWERUP);
3617 break;
3618 case SND_SOC_BIAS_OFF:
3619 + regcache_cache_only(sgtl->regmap, true);
3620 snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
3621 SGTL5000_REFTOP_POWERUP, 0);
3622 break;
3623 diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
3624 index 66e32f5d2917..989d093abda7 100644
3625 --- a/sound/soc/codecs/wm_adsp.c
3626 +++ b/sound/soc/codecs/wm_adsp.c
3627 @@ -1204,12 +1204,14 @@ static int wmfw_add_ctl(struct wm_adsp *dsp, struct wm_coeff_ctl *ctl)
3628 kcontrol->put = wm_coeff_put_acked;
3629 break;
3630 default:
3631 - kcontrol->get = wm_coeff_get;
3632 - kcontrol->put = wm_coeff_put;
3633 -
3634 - ctl->bytes_ext.max = ctl->len;
3635 - ctl->bytes_ext.get = wm_coeff_tlv_get;
3636 - ctl->bytes_ext.put = wm_coeff_tlv_put;
3637 + if (kcontrol->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
3638 + ctl->bytes_ext.max = ctl->len;
3639 + ctl->bytes_ext.get = wm_coeff_tlv_get;
3640 + ctl->bytes_ext.put = wm_coeff_tlv_put;
3641 + } else {
3642 + kcontrol->get = wm_coeff_get;
3643 + kcontrol->put = wm_coeff_put;
3644 + }
3645 break;
3646 }
3647
3648 diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c
3649 index b6615affe571..fde974d52bb2 100644
3650 --- a/sound/soc/nuc900/nuc900-ac97.c
3651 +++ b/sound/soc/nuc900/nuc900-ac97.c
3652 @@ -67,7 +67,7 @@ static unsigned short nuc900_ac97_read(struct snd_ac97 *ac97,
3653
3654 /* polling the AC_R_FINISH */
3655 while (!(AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON) & AC_R_FINISH)
3656 - && timeout--)
3657 + && --timeout)
3658 mdelay(1);
3659
3660 if (!timeout) {
3661 @@ -121,7 +121,7 @@ static void nuc900_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
3662
3663 /* polling the AC_W_FINISH */
3664 while ((AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON) & AC_W_FINISH)
3665 - && timeout--)
3666 + && --timeout)
3667 mdelay(1);
3668
3669 if (!timeout)
3670 diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
3671 index 04f92583a969..b4af5ce78ecb 100644
3672 --- a/sound/soc/sunxi/sun4i-i2s.c
3673 +++ b/sound/soc/sunxi/sun4i-i2s.c
3674 @@ -104,7 +104,7 @@
3675
3676 #define SUN8I_I2S_CHAN_CFG_REG 0x30
3677 #define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM_MASK GENMASK(6, 4)
3678 -#define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(chan) (chan - 1)
3679 +#define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(chan) ((chan - 1) << 4)
3680 #define SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM_MASK GENMASK(2, 0)
3681 #define SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM(chan) (chan - 1)
3682
3683 diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c
3684 index e0e466c650df..8c72b44444cb 100644
3685 --- a/tools/perf/arch/s390/annotate/instructions.c
3686 +++ b/tools/perf/arch/s390/annotate/instructions.c
3687 @@ -18,7 +18,8 @@ static struct ins_ops *s390__associate_ins_ops(struct arch *arch, const char *na
3688 if (!strcmp(name, "br"))
3689 ops = &ret_ops;
3690
3691 - arch__associate_ins_ops(arch, name, ops);
3692 + if (ops)
3693 + arch__associate_ins_ops(arch, name, ops);
3694 return ops;
3695 }
3696
3697 diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
3698 index 3369c7830260..6a631acf8bb7 100644
3699 --- a/tools/perf/util/annotate.c
3700 +++ b/tools/perf/util/annotate.c
3701 @@ -322,6 +322,8 @@ static int comment__symbol(char *raw, char *comment, u64 *addrp, char **namep)
3702 return 0;
3703
3704 *addrp = strtoull(comment, &endptr, 16);
3705 + if (endptr == comment)
3706 + return 0;
3707 name = strchr(endptr, '<');
3708 if (name == NULL)
3709 return -1;
3710 @@ -435,8 +437,8 @@ static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *m
3711 return 0;
3712
3713 comment = ltrim(comment);
3714 - comment__symbol(ops->source.raw, comment, &ops->source.addr, &ops->source.name);
3715 - comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
3716 + comment__symbol(ops->source.raw, comment + 1, &ops->source.addr, &ops->source.name);
3717 + comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name);
3718
3719 return 0;
3720
3721 @@ -480,7 +482,7 @@ static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops
3722 return 0;
3723
3724 comment = ltrim(comment);
3725 - comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
3726 + comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name);
3727
3728 return 0;
3729 }
3730 diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
3731 index 5c412310f266..1ea5b95ee93e 100644
3732 --- a/tools/perf/util/session.c
3733 +++ b/tools/perf/util/session.c
3734 @@ -1350,10 +1350,11 @@ static s64 perf_session__process_user_event(struct perf_session *session,
3735 {
3736 struct ordered_events *oe = &session->ordered_events;
3737 struct perf_tool *tool = session->tool;
3738 + struct perf_sample sample = { .time = 0, };
3739 int fd = perf_data__fd(session->data);
3740 int err;
3741
3742 - dump_event(session->evlist, event, file_offset, NULL);
3743 + dump_event(session->evlist, event, file_offset, &sample);
3744
3745 /* These events are processed right away */
3746 switch (event->header.type) {
3747 diff --git a/tools/testing/selftests/firmware/fw_filesystem.sh b/tools/testing/selftests/firmware/fw_filesystem.sh
3748 index b1f20fef36c7..f9508e1a4058 100755
3749 --- a/tools/testing/selftests/firmware/fw_filesystem.sh
3750 +++ b/tools/testing/selftests/firmware/fw_filesystem.sh
3751 @@ -45,7 +45,10 @@ test_finish()
3752 if [ "$HAS_FW_LOADER_USER_HELPER" = "yes" ]; then
3753 echo "$OLD_TIMEOUT" >/sys/class/firmware/timeout
3754 fi
3755 - echo -n "$OLD_PATH" >/sys/module/firmware_class/parameters/path
3756 + if [ "$OLD_FWPATH" = "" ]; then
3757 + OLD_FWPATH=" "
3758 + fi
3759 + echo -n "$OLD_FWPATH" >/sys/module/firmware_class/parameters/path
3760 rm -f "$FW"
3761 rmdir "$FWPATH"
3762 }
3763 diff --git a/tools/testing/selftests/rcutorture/bin/configinit.sh b/tools/testing/selftests/rcutorture/bin/configinit.sh
3764 index 51f66a7ce876..c15f270e121d 100755
3765 --- a/tools/testing/selftests/rcutorture/bin/configinit.sh
3766 +++ b/tools/testing/selftests/rcutorture/bin/configinit.sh
3767 @@ -51,7 +51,7 @@ then
3768 mkdir $builddir
3769 fi
3770 else
3771 - echo Bad build directory: \"$builddir\"
3772 + echo Bad build directory: \"$buildloc\"
3773 exit 2
3774 fi
3775 fi
3776 diff --git a/tools/usb/usbip/src/usbipd.c b/tools/usb/usbip/src/usbipd.c
3777 index 009afb4a3aae..c6dad2a13c80 100644
3778 --- a/tools/usb/usbip/src/usbipd.c
3779 +++ b/tools/usb/usbip/src/usbipd.c
3780 @@ -456,7 +456,7 @@ static void set_signal(void)
3781 sigaction(SIGTERM, &act, NULL);
3782 sigaction(SIGINT, &act, NULL);
3783 act.sa_handler = SIG_IGN;
3784 - sigaction(SIGCLD, &act, NULL);
3785 + sigaction(SIGCHLD, &act, NULL);
3786 }
3787
3788 static const char *pid_file;