Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3094 - (hide 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 niro 3094 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;