Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.14/0127-4.14.28-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3238 - (hide annotations) (download)
Fri Nov 9 12:14:58 2018 UTC (5 years, 7 months ago) by niro
File size: 106502 byte(s)
-added up to patches-4.14.79
1 niro 3238 diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt
2     index 2d80b60eeabe..7a69b8b47b97 100644
3     --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt
4     +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt
5     @@ -12,6 +12,7 @@ Required properties:
6     - "renesas,xhci-r8a7793" for r8a7793 SoC
7     - "renesas,xhci-r8a7795" for r8a7795 SoC
8     - "renesas,xhci-r8a7796" for r8a7796 SoC
9     + - "renesas,xhci-r8a77965" for r8a77965 SoC
10     - "renesas,rcar-gen2-xhci" for a generic R-Car Gen2 compatible device
11     - "renesas,rcar-gen3-xhci" for a generic R-Car Gen3 compatible device
12     - "xhci-platform" (deprecated)
13     diff --git a/Makefile b/Makefile
14     index 00e969db94b8..9ae370a47ff9 100644
15     --- a/Makefile
16     +++ b/Makefile
17     @@ -1,7 +1,7 @@
18     # SPDX-License-Identifier: GPL-2.0
19     VERSION = 4
20     PATCHLEVEL = 14
21     -SUBLEVEL = 27
22     +SUBLEVEL = 28
23     EXTRAVERSION =
24     NAME = Petit Gorille
25    
26     diff --git a/arch/arm/boot/dts/am335x-pepper.dts b/arch/arm/boot/dts/am335x-pepper.dts
27     index 03c7d77023c6..9fb7426070ce 100644
28     --- a/arch/arm/boot/dts/am335x-pepper.dts
29     +++ b/arch/arm/boot/dts/am335x-pepper.dts
30     @@ -139,7 +139,7 @@
31     &audio_codec {
32     status = "okay";
33    
34     - gpio-reset = <&gpio1 16 GPIO_ACTIVE_LOW>;
35     + reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
36     AVDD-supply = <&ldo3_reg>;
37     IOVDD-supply = <&ldo3_reg>;
38     DRVDD-supply = <&ldo3_reg>;
39     diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts
40     index bceb919ac637..65602cd51a4e 100644
41     --- a/arch/arm/boot/dts/exynos4412-trats2.dts
42     +++ b/arch/arm/boot/dts/exynos4412-trats2.dts
43     @@ -395,7 +395,7 @@
44     reg = <0>;
45     vdd3-supply = <&lcd_vdd3_reg>;
46     vci-supply = <&ldo25_reg>;
47     - reset-gpios = <&gpy4 5 GPIO_ACTIVE_HIGH>;
48     + reset-gpios = <&gpf2 1 GPIO_ACTIVE_HIGH>;
49     power-on-delay= <50>;
50     reset-delay = <100>;
51     init-delay = <100>;
52     diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
53     index 4acd32a1c4ef..c66ee8432a85 100644
54     --- a/arch/arm/boot/dts/omap3-n900.dts
55     +++ b/arch/arm/boot/dts/omap3-n900.dts
56     @@ -558,7 +558,7 @@
57     tlv320aic3x: tlv320aic3x@18 {
58     compatible = "ti,tlv320aic3x";
59     reg = <0x18>;
60     - gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
61     + reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
62     ai3x-gpio-func = <
63     0 /* AIC3X_GPIO1_FUNC_DISABLED */
64     5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
65     @@ -575,7 +575,7 @@
66     tlv320aic3x_aux: tlv320aic3x@19 {
67     compatible = "ti,tlv320aic3x";
68     reg = <0x19>;
69     - gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
70     + reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>; /* 60 */
71    
72     AVDD-supply = <&vmmc2>;
73     DRVDD-supply = <&vmmc2>;
74     diff --git a/arch/arm/boot/dts/r8a7791-koelsch.dts b/arch/arm/boot/dts/r8a7791-koelsch.dts
75     index 0ce0b278e1cb..25c3a10d669c 100644
76     --- a/arch/arm/boot/dts/r8a7791-koelsch.dts
77     +++ b/arch/arm/boot/dts/r8a7791-koelsch.dts
78     @@ -278,6 +278,12 @@
79     };
80     };
81    
82     + cec_clock: cec-clock {
83     + compatible = "fixed-clock";
84     + #clock-cells = <0>;
85     + clock-frequency = <12000000>;
86     + };
87     +
88     hdmi-out {
89     compatible = "hdmi-connector";
90     type = "a";
91     @@ -642,12 +648,6 @@
92     };
93     };
94    
95     - cec_clock: cec-clock {
96     - compatible = "fixed-clock";
97     - #clock-cells = <0>;
98     - clock-frequency = <12000000>;
99     - };
100     -
101     hdmi@39 {
102     compatible = "adi,adv7511w";
103     reg = <0x39>;
104     diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
105     index d9d885006a8e..9eb11a8d9eda 100644
106     --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
107     +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
108     @@ -264,6 +264,7 @@
109     reg = <0>;
110     interrupt-parent = <&gpio2>;
111     interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
112     + reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
113     };
114     };
115    
116     diff --git a/arch/powerpc/include/asm/code-patching.h b/arch/powerpc/include/asm/code-patching.h
117     index abef812de7f8..2c895e8d07f7 100644
118     --- a/arch/powerpc/include/asm/code-patching.h
119     +++ b/arch/powerpc/include/asm/code-patching.h
120     @@ -33,6 +33,7 @@ int patch_branch(unsigned int *addr, unsigned long target, int flags);
121     int patch_instruction(unsigned int *addr, unsigned int instr);
122    
123     int instr_is_relative_branch(unsigned int instr);
124     +int instr_is_relative_link_branch(unsigned int instr);
125     int instr_is_branch_to_addr(const unsigned int *instr, unsigned long addr);
126     unsigned long branch_target(const unsigned int *instr);
127     unsigned int translate_branch(const unsigned int *dest,
128     diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
129     index 8a8a6d7ddcc6..6f07c687fc05 100644
130     --- a/arch/powerpc/kernel/entry_64.S
131     +++ b/arch/powerpc/kernel/entry_64.S
132     @@ -939,9 +939,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
133     beq 1f
134     rlwinm r7,r7,0,~PACA_IRQ_HARD_DIS
135     stb r7,PACAIRQHAPPENED(r13)
136     -1: li r0,0
137     - stb r0,PACASOFTIRQEN(r13);
138     - TRACE_DISABLE_INTS
139     +1:
140     +#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_BUG)
141     + /* The interrupt should not have soft enabled. */
142     + lbz r7,PACASOFTIRQEN(r13)
143     +1: tdnei r7,0
144     + EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
145     +#endif
146     b .Ldo_restore
147    
148     /*
149     diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
150     index 0b0f89685b67..2a1b1273a312 100644
151     --- a/arch/powerpc/kernel/module_64.c
152     +++ b/arch/powerpc/kernel/module_64.c
153     @@ -486,7 +486,17 @@ static bool is_early_mcount_callsite(u32 *instruction)
154     restore r2. */
155     static int restore_r2(u32 *instruction, struct module *me)
156     {
157     - if (is_early_mcount_callsite(instruction - 1))
158     + u32 *prev_insn = instruction - 1;
159     +
160     + if (is_early_mcount_callsite(prev_insn))
161     + return 1;
162     +
163     + /*
164     + * Make sure the branch isn't a sibling call. Sibling calls aren't
165     + * "link" branches and they don't return, so they don't need the r2
166     + * restore afterwards.
167     + */
168     + if (!instr_is_relative_link_branch(*prev_insn))
169     return 1;
170    
171     if (*instruction != PPC_INST_NOP) {
172     diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c
173     index d469224c4ada..096d4e4d31e6 100644
174     --- a/arch/powerpc/lib/code-patching.c
175     +++ b/arch/powerpc/lib/code-patching.c
176     @@ -302,6 +302,11 @@ int instr_is_relative_branch(unsigned int instr)
177     return instr_is_branch_iform(instr) || instr_is_branch_bform(instr);
178     }
179    
180     +int instr_is_relative_link_branch(unsigned int instr)
181     +{
182     + return instr_is_relative_branch(instr) && (instr & BRANCH_SET_LINK);
183     +}
184     +
185     static unsigned long branch_iform_target(const unsigned int *instr)
186     {
187     signed long imm;
188     diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c
189     index 1f790cf9d38f..3b7427aa7d85 100644
190     --- a/arch/x86/kernel/machine_kexec_64.c
191     +++ b/arch/x86/kernel/machine_kexec_64.c
192     @@ -542,6 +542,7 @@ int arch_kexec_apply_relocations_add(const Elf64_Ehdr *ehdr,
193     goto overflow;
194     break;
195     case R_X86_64_PC32:
196     + case R_X86_64_PLT32:
197     value -= (u64)address;
198     *(u32 *)location = value;
199     break;
200     diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c
201     index da0c160e5589..f58336af095c 100644
202     --- a/arch/x86/kernel/module.c
203     +++ b/arch/x86/kernel/module.c
204     @@ -191,6 +191,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
205     goto overflow;
206     break;
207     case R_X86_64_PC32:
208     + case R_X86_64_PLT32:
209     if (*(u32 *)loc != 0)
210     goto invalid_relocation;
211     val -= (u64)loc;
212     diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
213     index 5d73c443e778..220e97841e49 100644
214     --- a/arch/x86/tools/relocs.c
215     +++ b/arch/x86/tools/relocs.c
216     @@ -770,9 +770,12 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym,
217     break;
218    
219     case R_X86_64_PC32:
220     + case R_X86_64_PLT32:
221     /*
222     * PC relative relocations don't need to be adjusted unless
223     * referencing a percpu symbol.
224     + *
225     + * NB: R_X86_64_PLT32 can be treated as R_X86_64_PC32.
226     */
227     if (is_percpu_sym(sym, symname))
228     add_reloc(&relocs32neg, offset);
229     diff --git a/crypto/ecc.c b/crypto/ecc.c
230     index 633a9bcdc574..18f32f2a5e1c 100644
231     --- a/crypto/ecc.c
232     +++ b/crypto/ecc.c
233     @@ -964,7 +964,7 @@ int ecc_gen_privkey(unsigned int curve_id, unsigned int ndigits, u64 *privkey)
234     * DRBG with a security strength of 256.
235     */
236     if (crypto_get_default_rng())
237     - err = -EFAULT;
238     + return -EFAULT;
239    
240     err = crypto_rng_get_bytes(crypto_default_rng, (u8 *)priv, nbytes);
241     crypto_put_default_rng();
242     diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
243     index 2415ad9f6dd4..49fd50fccd48 100644
244     --- a/drivers/base/Kconfig
245     +++ b/drivers/base/Kconfig
246     @@ -249,6 +249,7 @@ config DMA_SHARED_BUFFER
247     bool
248     default n
249     select ANON_INODES
250     + select IRQ_WORK
251     help
252     This option enables the framework for buffer-sharing between
253     multiple drivers. A buffer is associated with a file using driver
254     diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
255     index 9b6b6023193b..dde7caac7f9f 100644
256     --- a/drivers/char/agp/intel-gtt.c
257     +++ b/drivers/char/agp/intel-gtt.c
258     @@ -872,6 +872,8 @@ void intel_gtt_insert_sg_entries(struct sg_table *st,
259     }
260     }
261     wmb();
262     + if (intel_private.driver->chipset_flush)
263     + intel_private.driver->chipset_flush();
264     }
265     EXPORT_SYMBOL(intel_gtt_insert_sg_entries);
266    
267     diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
268     index b2d1e8ed7152..92168348ffa6 100644
269     --- a/drivers/clk/meson/gxbb.c
270     +++ b/drivers/clk/meson/gxbb.c
271     @@ -1139,7 +1139,7 @@ static MESON_GATE(gxbb_pl301, HHI_GCLK_MPEG0, 6);
272     static MESON_GATE(gxbb_periphs, HHI_GCLK_MPEG0, 7);
273     static MESON_GATE(gxbb_spicc, HHI_GCLK_MPEG0, 8);
274     static MESON_GATE(gxbb_i2c, HHI_GCLK_MPEG0, 9);
275     -static MESON_GATE(gxbb_sar_adc, HHI_GCLK_MPEG0, 10);
276     +static MESON_GATE(gxbb_sana, HHI_GCLK_MPEG0, 10);
277     static MESON_GATE(gxbb_smart_card, HHI_GCLK_MPEG0, 11);
278     static MESON_GATE(gxbb_rng0, HHI_GCLK_MPEG0, 12);
279     static MESON_GATE(gxbb_uart0, HHI_GCLK_MPEG0, 13);
280     @@ -1190,7 +1190,7 @@ static MESON_GATE(gxbb_usb0_ddr_bridge, HHI_GCLK_MPEG2, 9);
281     static MESON_GATE(gxbb_mmc_pclk, HHI_GCLK_MPEG2, 11);
282     static MESON_GATE(gxbb_dvin, HHI_GCLK_MPEG2, 12);
283     static MESON_GATE(gxbb_uart2, HHI_GCLK_MPEG2, 15);
284     -static MESON_GATE(gxbb_sana, HHI_GCLK_MPEG2, 22);
285     +static MESON_GATE(gxbb_sar_adc, HHI_GCLK_MPEG2, 22);
286     static MESON_GATE(gxbb_vpu_intr, HHI_GCLK_MPEG2, 25);
287     static MESON_GATE(gxbb_sec_ahb_ahb3_bridge, HHI_GCLK_MPEG2, 26);
288     static MESON_GATE(gxbb_clk81_a53, HHI_GCLK_MPEG2, 29);
289     diff --git a/drivers/clk/qcom/gcc-msm8916.c b/drivers/clk/qcom/gcc-msm8916.c
290     index 3410ee68d4bc..2057809219f4 100644
291     --- a/drivers/clk/qcom/gcc-msm8916.c
292     +++ b/drivers/clk/qcom/gcc-msm8916.c
293     @@ -1438,6 +1438,7 @@ static const struct freq_tbl ftbl_codec_clk[] = {
294    
295     static struct clk_rcg2 codec_digcodec_clk_src = {
296     .cmd_rcgr = 0x1c09c,
297     + .mnd_width = 8,
298     .hid_width = 5,
299     .parent_map = gcc_xo_gpll1_emclk_sleep_map,
300     .freq_tbl = ftbl_codec_clk,
301     diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
302     index ea43b147a7fe..bb1e148ebfd4 100644
303     --- a/drivers/cpufreq/cpufreq.c
304     +++ b/drivers/cpufreq/cpufreq.c
305     @@ -631,6 +631,8 @@ static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
306     *governor = t;
307     err = 0;
308     }
309     + if (t && !try_module_get(t->owner))
310     + t = NULL;
311    
312     mutex_unlock(&cpufreq_governor_mutex);
313     }
314     @@ -759,6 +761,10 @@ static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
315     return -EINVAL;
316    
317     ret = cpufreq_set_policy(policy, &new_policy);
318     +
319     + if (new_policy.governor)
320     + module_put(new_policy.governor->owner);
321     +
322     return ret ? ret : count;
323     }
324    
325     diff --git a/drivers/crypto/caam/caamalg_qi.c b/drivers/crypto/caam/caamalg_qi.c
326     index 2eefc4a26bc2..b648e31673f9 100644
327     --- a/drivers/crypto/caam/caamalg_qi.c
328     +++ b/drivers/crypto/caam/caamalg_qi.c
329     @@ -668,7 +668,7 @@ static struct aead_edesc *aead_edesc_alloc(struct aead_request *req,
330     qm_sg_ents = 1 + !!ivsize + mapped_src_nents +
331     (mapped_dst_nents > 1 ? mapped_dst_nents : 0);
332     if (unlikely(qm_sg_ents > CAAM_QI_MAX_AEAD_SG)) {
333     - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
334     + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
335     qm_sg_ents, CAAM_QI_MAX_AEAD_SG);
336     caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
337     iv_dma, ivsize, op_type, 0, 0);
338     @@ -905,7 +905,7 @@ static struct ablkcipher_edesc *ablkcipher_edesc_alloc(struct ablkcipher_request
339    
340     qm_sg_ents += mapped_dst_nents > 1 ? mapped_dst_nents : 0;
341     if (unlikely(qm_sg_ents > CAAM_QI_MAX_ABLKCIPHER_SG)) {
342     - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
343     + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
344     qm_sg_ents, CAAM_QI_MAX_ABLKCIPHER_SG);
345     caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
346     iv_dma, ivsize, op_type, 0, 0);
347     @@ -1058,7 +1058,7 @@ static struct ablkcipher_edesc *ablkcipher_giv_edesc_alloc(
348     }
349    
350     if (unlikely(qm_sg_ents > CAAM_QI_MAX_ABLKCIPHER_SG)) {
351     - dev_err(qidev, "Insufficient S/G entries: %d > %lu\n",
352     + dev_err(qidev, "Insufficient S/G entries: %d > %zu\n",
353     qm_sg_ents, CAAM_QI_MAX_ABLKCIPHER_SG);
354     caam_unmap(qidev, req->src, req->dst, src_nents, dst_nents,
355     iv_dma, ivsize, GIVENCRYPT, 0, 0);
356     diff --git a/drivers/crypto/cavium/cpt/cptvf_reqmanager.c b/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
357     index 169e66231bcf..b0ba4331944b 100644
358     --- a/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
359     +++ b/drivers/crypto/cavium/cpt/cptvf_reqmanager.c
360     @@ -459,7 +459,8 @@ int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req)
361     info->completion_addr = kzalloc(sizeof(union cpt_res_s), GFP_KERNEL);
362     if (unlikely(!info->completion_addr)) {
363     dev_err(&pdev->dev, "Unable to allocate memory for completion_addr\n");
364     - return -ENOMEM;
365     + ret = -ENOMEM;
366     + goto request_cleanup;
367     }
368    
369     result = (union cpt_res_s *)info->completion_addr;
370     diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c
371     index 0350829ba62e..dd1edfb27b61 100644
372     --- a/drivers/dma-buf/dma-fence-array.c
373     +++ b/drivers/dma-buf/dma-fence-array.c
374     @@ -31,6 +31,14 @@ static const char *dma_fence_array_get_timeline_name(struct dma_fence *fence)
375     return "unbound";
376     }
377    
378     +static void irq_dma_fence_array_work(struct irq_work *wrk)
379     +{
380     + struct dma_fence_array *array = container_of(wrk, typeof(*array), work);
381     +
382     + dma_fence_signal(&array->base);
383     + dma_fence_put(&array->base);
384     +}
385     +
386     static void dma_fence_array_cb_func(struct dma_fence *f,
387     struct dma_fence_cb *cb)
388     {
389     @@ -39,8 +47,9 @@ static void dma_fence_array_cb_func(struct dma_fence *f,
390     struct dma_fence_array *array = array_cb->array;
391    
392     if (atomic_dec_and_test(&array->num_pending))
393     - dma_fence_signal(&array->base);
394     - dma_fence_put(&array->base);
395     + irq_work_queue(&array->work);
396     + else
397     + dma_fence_put(&array->base);
398     }
399    
400     static bool dma_fence_array_enable_signaling(struct dma_fence *fence)
401     @@ -136,6 +145,7 @@ struct dma_fence_array *dma_fence_array_create(int num_fences,
402     spin_lock_init(&array->lock);
403     dma_fence_init(&array->base, &dma_fence_array_ops, &array->lock,
404     context, seqno);
405     + init_irq_work(&array->work, irq_dma_fence_array_work);
406    
407     array->num_fences = num_fences;
408     atomic_set(&array->num_pending, signal_on_any ? 1 : num_fences);
409     diff --git a/drivers/dma/qcom/hidma_ll.c b/drivers/dma/qcom/hidma_ll.c
410     index 4999e266b2de..7c6e2ff212a2 100644
411     --- a/drivers/dma/qcom/hidma_ll.c
412     +++ b/drivers/dma/qcom/hidma_ll.c
413     @@ -393,6 +393,8 @@ static int hidma_ll_reset(struct hidma_lldev *lldev)
414     */
415     static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
416     {
417     + unsigned long irqflags;
418     +
419     if (cause & HIDMA_ERR_INT_MASK) {
420     dev_err(lldev->dev, "error 0x%x, disabling...\n",
421     cause);
422     @@ -410,6 +412,10 @@ static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
423     return;
424     }
425    
426     + spin_lock_irqsave(&lldev->lock, irqflags);
427     + writel_relaxed(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG);
428     + spin_unlock_irqrestore(&lldev->lock, irqflags);
429     +
430     /*
431     * Fine tuned for this HW...
432     *
433     @@ -421,9 +427,6 @@ static void hidma_ll_int_handler_internal(struct hidma_lldev *lldev, int cause)
434     * Try to consume as many EVREs as possible.
435     */
436     hidma_handle_tre_completion(lldev);
437     -
438     - /* We consumed TREs or there are pending TREs or EVREs. */
439     - writel_relaxed(cause, lldev->evca + HIDMA_EVCA_IRQ_CLR_REG);
440     }
441    
442     irqreturn_t hidma_ll_inthandler(int chirq, void *arg)
443     diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
444     index 5432af39a674..f7fa7675215c 100644
445     --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
446     +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
447     @@ -265,6 +265,9 @@ uint32_t get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
448     {
449     struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
450    
451     - /* The sclk is in quantas of 10kHz */
452     - return adev->pm.dpm.dyn_state.max_clock_voltage_on_ac.sclk / 100;
453     + /* the sclk is in quantas of 10kHz */
454     + if (amdgpu_sriov_vf(adev))
455     + return adev->clock.default_sclk / 100;
456     +
457     + return amdgpu_dpm_get_sclk(adev, false) / 100;
458     }
459     diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
460     index b9ee9073cb0d..f3f93b6b51ef 100644
461     --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
462     +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
463     @@ -437,6 +437,8 @@ static int dce_virtual_sw_fini(void *handle)
464     drm_kms_helper_poll_fini(adev->ddev);
465    
466     drm_mode_config_cleanup(adev->ddev);
467     + /* clear crtcs pointer to avoid dce irq finish routine access freed data */
468     + memset(adev->mode_info.crtcs, 0, sizeof(adev->mode_info.crtcs[0]) * AMDGPU_MAX_CRTCS);
469     adev->mode_info.mode_config_initialized = false;
470     return 0;
471     }
472     @@ -723,7 +725,7 @@ static void dce_virtual_set_crtc_vblank_interrupt_state(struct amdgpu_device *ad
473     int crtc,
474     enum amdgpu_interrupt_state state)
475     {
476     - if (crtc >= adev->mode_info.num_crtc) {
477     + if (crtc >= adev->mode_info.num_crtc || !adev->mode_info.crtcs[crtc]) {
478     DRM_DEBUG("invalid crtc %d\n", crtc);
479     return;
480     }
481     diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
482     index 2812d88a8bdd..9b7b01333fc0 100644
483     --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
484     +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c
485     @@ -276,9 +276,17 @@ static int xgpu_ai_mailbox_rcv_irq(struct amdgpu_device *adev,
486     /* see what event we get */
487     r = xgpu_ai_mailbox_rcv_msg(adev, IDH_FLR_NOTIFICATION);
488    
489     - /* only handle FLR_NOTIFY now */
490     - if (!r)
491     - schedule_work(&adev->virt.flr_work);
492     + /* sometimes the interrupt is delayed to inject to VM, so under such case
493     + * the IDH_FLR_NOTIFICATION is overwritten by VF FLR from GIM side, thus
494     + * above recieve message could be failed, we should schedule the flr_work
495     + * anyway
496     + */
497     + if (r) {
498     + DRM_ERROR("FLR_NOTIFICATION is missed\n");
499     + xgpu_ai_mailbox_send_ack(adev);
500     + }
501     +
502     + schedule_work(&adev->virt.flr_work);
503     }
504    
505     return 0;
506     diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
507     index 19ce59028d6b..e0b78fd9804d 100644
508     --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
509     +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
510     @@ -501,11 +501,17 @@ static ssize_t sysprops_show(struct kobject *kobj, struct attribute *attr,
511     return ret;
512     }
513    
514     +static void kfd_topology_kobj_release(struct kobject *kobj)
515     +{
516     + kfree(kobj);
517     +}
518     +
519     static const struct sysfs_ops sysprops_ops = {
520     .show = sysprops_show,
521     };
522    
523     static struct kobj_type sysprops_type = {
524     + .release = kfd_topology_kobj_release,
525     .sysfs_ops = &sysprops_ops,
526     };
527    
528     @@ -541,6 +547,7 @@ static const struct sysfs_ops iolink_ops = {
529     };
530    
531     static struct kobj_type iolink_type = {
532     + .release = kfd_topology_kobj_release,
533     .sysfs_ops = &iolink_ops,
534     };
535    
536     @@ -568,6 +575,7 @@ static const struct sysfs_ops mem_ops = {
537     };
538    
539     static struct kobj_type mem_type = {
540     + .release = kfd_topology_kobj_release,
541     .sysfs_ops = &mem_ops,
542     };
543    
544     @@ -607,6 +615,7 @@ static const struct sysfs_ops cache_ops = {
545     };
546    
547     static struct kobj_type cache_type = {
548     + .release = kfd_topology_kobj_release,
549     .sysfs_ops = &cache_ops,
550     };
551    
552     @@ -729,6 +738,7 @@ static const struct sysfs_ops node_ops = {
553     };
554    
555     static struct kobj_type node_type = {
556     + .release = kfd_topology_kobj_release,
557     .sysfs_ops = &node_ops,
558     };
559    
560     diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
561     index d52c9758d8cf..1f1fd3139c5b 100644
562     --- a/drivers/gpu/drm/drm_edid.c
563     +++ b/drivers/gpu/drm/drm_edid.c
564     @@ -3823,8 +3823,7 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name);
565     * @edid: EDID to parse
566     *
567     * Fill the ELD (EDID-Like Data) buffer for passing to the audio driver. The
568     - * Conn_Type, HDCP and Port_ID ELD fields are left for the graphics driver to
569     - * fill in.
570     + * HDCP and Port_ID ELD fields are left for the graphics driver to fill in.
571     */
572     void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
573     {
574     @@ -3905,6 +3904,12 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
575     }
576     eld[5] |= total_sad_count << 4;
577    
578     + if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
579     + connector->connector_type == DRM_MODE_CONNECTOR_eDP)
580     + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_DP;
581     + else
582     + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_HDMI;
583     +
584     eld[DRM_ELD_BASELINE_ELD_LEN] =
585     DIV_ROUND_UP(drm_eld_calc_baseline_block_size(eld), 4);
586    
587     diff --git a/drivers/gpu/drm/etnaviv/Kconfig b/drivers/gpu/drm/etnaviv/Kconfig
588     index 38b477b5fbf9..4df3c48adcec 100644
589     --- a/drivers/gpu/drm/etnaviv/Kconfig
590     +++ b/drivers/gpu/drm/etnaviv/Kconfig
591     @@ -6,6 +6,7 @@ config DRM_ETNAVIV
592     depends on MMU
593     select SHMEM
594     select SYNC_FILE
595     + select THERMAL if DRM_ETNAVIV_THERMAL
596     select TMPFS
597     select IOMMU_API
598     select IOMMU_SUPPORT
599     @@ -15,6 +16,14 @@ config DRM_ETNAVIV
600     help
601     DRM driver for Vivante GPUs.
602    
603     +config DRM_ETNAVIV_THERMAL
604     + bool "enable ETNAVIV thermal throttling"
605     + depends on DRM_ETNAVIV
606     + default y
607     + help
608     + Compile in support for thermal throttling.
609     + Say Y unless you want to risk burning your SoC.
610     +
611     config DRM_ETNAVIV_REGISTER_LOGGING
612     bool "enable ETNAVIV register logging"
613     depends on DRM_ETNAVIV
614     diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
615     index fc9a6a83dfc7..a1562f89c3d7 100644
616     --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
617     +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
618     @@ -1622,7 +1622,7 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
619     struct etnaviv_gpu *gpu = dev_get_drvdata(dev);
620     int ret;
621    
622     - if (IS_ENABLED(CONFIG_THERMAL)) {
623     + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL)) {
624     gpu->cooling = thermal_of_cooling_device_register(dev->of_node,
625     (char *)dev_name(dev), gpu, &cooling_ops);
626     if (IS_ERR(gpu->cooling))
627     @@ -1635,7 +1635,8 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
628     ret = etnaviv_gpu_clk_enable(gpu);
629     #endif
630     if (ret < 0) {
631     - thermal_cooling_device_unregister(gpu->cooling);
632     + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL))
633     + thermal_cooling_device_unregister(gpu->cooling);
634     return ret;
635     }
636    
637     @@ -1692,7 +1693,8 @@ static void etnaviv_gpu_unbind(struct device *dev, struct device *master,
638    
639     gpu->drm = NULL;
640    
641     - thermal_cooling_device_unregister(gpu->cooling);
642     + if (IS_ENABLED(CONFIG_DRM_ETNAVIV_THERMAL))
643     + thermal_cooling_device_unregister(gpu->cooling);
644     gpu->cooling = NULL;
645     }
646    
647     diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
648     index 8b0ae7fce7f2..67a7d6eafd31 100644
649     --- a/drivers/gpu/drm/i915/intel_guc_loader.c
650     +++ b/drivers/gpu/drm/i915/intel_guc_loader.c
651     @@ -61,9 +61,6 @@
652     #define KBL_FW_MAJOR 9
653     #define KBL_FW_MINOR 14
654    
655     -#define GLK_FW_MAJOR 10
656     -#define GLK_FW_MINOR 56
657     -
658     #define GUC_FW_PATH(platform, major, minor) \
659     "i915/" __stringify(platform) "_guc_ver" __stringify(major) "_" __stringify(minor) ".bin"
660    
661     @@ -76,8 +73,6 @@ MODULE_FIRMWARE(I915_BXT_GUC_UCODE);
662     #define I915_KBL_GUC_UCODE GUC_FW_PATH(kbl, KBL_FW_MAJOR, KBL_FW_MINOR)
663     MODULE_FIRMWARE(I915_KBL_GUC_UCODE);
664    
665     -#define I915_GLK_GUC_UCODE GUC_FW_PATH(glk, GLK_FW_MAJOR, GLK_FW_MINOR)
666     -
667    
668     static u32 get_gttype(struct drm_i915_private *dev_priv)
669     {
670     @@ -406,10 +401,6 @@ int intel_guc_select_fw(struct intel_guc *guc)
671     guc->fw.path = I915_KBL_GUC_UCODE;
672     guc->fw.major_ver_wanted = KBL_FW_MAJOR;
673     guc->fw.minor_ver_wanted = KBL_FW_MINOR;
674     - } else if (IS_GEMINILAKE(dev_priv)) {
675     - guc->fw.path = I915_GLK_GUC_UCODE;
676     - guc->fw.major_ver_wanted = GLK_FW_MAJOR;
677     - guc->fw.minor_ver_wanted = GLK_FW_MINOR;
678     } else {
679     DRM_ERROR("No GuC firmware known for platform with GuC!\n");
680     return -ENOENT;
681     diff --git a/drivers/gpu/drm/i915/intel_huc.c b/drivers/gpu/drm/i915/intel_huc.c
682     index 6145fa0d6773..82224efe1ad8 100644
683     --- a/drivers/gpu/drm/i915/intel_huc.c
684     +++ b/drivers/gpu/drm/i915/intel_huc.c
685     @@ -52,10 +52,6 @@
686     #define KBL_HUC_FW_MINOR 00
687     #define KBL_BLD_NUM 1810
688    
689     -#define GLK_HUC_FW_MAJOR 02
690     -#define GLK_HUC_FW_MINOR 00
691     -#define GLK_BLD_NUM 1748
692     -
693     #define HUC_FW_PATH(platform, major, minor, bld_num) \
694     "i915/" __stringify(platform) "_huc_ver" __stringify(major) "_" \
695     __stringify(minor) "_" __stringify(bld_num) ".bin"
696     @@ -72,9 +68,6 @@ MODULE_FIRMWARE(I915_BXT_HUC_UCODE);
697     KBL_HUC_FW_MINOR, KBL_BLD_NUM)
698     MODULE_FIRMWARE(I915_KBL_HUC_UCODE);
699    
700     -#define I915_GLK_HUC_UCODE HUC_FW_PATH(glk, GLK_HUC_FW_MAJOR, \
701     - GLK_HUC_FW_MINOR, GLK_BLD_NUM)
702     -
703     /**
704     * huc_ucode_xfer() - DMA's the firmware
705     * @dev_priv: the drm_i915_private device
706     @@ -171,10 +164,6 @@ void intel_huc_select_fw(struct intel_huc *huc)
707     huc->fw.path = I915_KBL_HUC_UCODE;
708     huc->fw.major_ver_wanted = KBL_HUC_FW_MAJOR;
709     huc->fw.minor_ver_wanted = KBL_HUC_FW_MINOR;
710     - } else if (IS_GEMINILAKE(dev_priv)) {
711     - huc->fw.path = I915_GLK_HUC_UCODE;
712     - huc->fw.major_ver_wanted = GLK_HUC_FW_MAJOR;
713     - huc->fw.minor_ver_wanted = GLK_HUC_FW_MINOR;
714     } else {
715     DRM_ERROR("No HuC firmware known for platform with HuC!\n");
716     return;
717     diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h
718     index 4785ac090b8c..c142fbb8661e 100644
719     --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h
720     +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h
721     @@ -80,7 +80,7 @@
722    
723     #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN BIT(0)
724     #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_MASK GENMASK(2, 1)
725     -#define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK GENMASK(11, 8)
726     +#define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK GENMASK(12, 8)
727     #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MASK GENMASK(31, 24)
728     #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_DEF (1 << 1)
729     #define SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_ARGB8888 (0 << 8)
730     diff --git a/drivers/hid/hid-elo.c b/drivers/hid/hid-elo.c
731     index 0cd4f7216239..5eea6fe0d7bd 100644
732     --- a/drivers/hid/hid-elo.c
733     +++ b/drivers/hid/hid-elo.c
734     @@ -42,6 +42,12 @@ static int elo_input_configured(struct hid_device *hdev,
735     {
736     struct input_dev *input = hidinput->input;
737    
738     + /*
739     + * ELO devices have one Button usage in GenDesk field, which makes
740     + * hid-input map it to BTN_LEFT; that confuses userspace, which then
741     + * considers the device to be a mouse/touchpad instead of touchscreen.
742     + */
743     + clear_bit(BTN_LEFT, input->keybit);
744     set_bit(BTN_TOUCH, input->keybit);
745     set_bit(ABS_PRESSURE, input->absbit);
746     input_set_abs_params(input, ABS_PRESSURE, 0, 256, 0, 0);
747     diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
748     index 9e8c4d2ba11d..6598501c1ad0 100644
749     --- a/drivers/hid/hid-multitouch.c
750     +++ b/drivers/hid/hid-multitouch.c
751     @@ -738,9 +738,11 @@ static int mt_touch_event(struct hid_device *hid, struct hid_field *field,
752     }
753    
754     static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
755     - struct hid_usage *usage, __s32 value)
756     + struct hid_usage *usage, __s32 value,
757     + bool first_packet)
758     {
759     struct mt_device *td = hid_get_drvdata(hid);
760     + __s32 cls = td->mtclass.name;
761     __s32 quirks = td->mtclass.quirks;
762     struct input_dev *input = field->hidinput->input;
763    
764     @@ -794,6 +796,15 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
765     break;
766    
767     default:
768     + /*
769     + * For Win8 PTP touchpads we should only look at
770     + * non finger/touch events in the first_packet of
771     + * a (possible) multi-packet frame.
772     + */
773     + if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
774     + !first_packet)
775     + return;
776     +
777     if (usage->type)
778     input_event(input, usage->type, usage->code,
779     value);
780     @@ -813,6 +824,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
781     {
782     struct mt_device *td = hid_get_drvdata(hid);
783     struct hid_field *field;
784     + bool first_packet;
785     unsigned count;
786     int r, n;
787    
788     @@ -831,6 +843,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
789     td->num_expected = value;
790     }
791    
792     + first_packet = td->num_received == 0;
793     for (r = 0; r < report->maxfield; r++) {
794     field = report->field[r];
795     count = field->report_count;
796     @@ -840,7 +853,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
797    
798     for (n = 0; n < count; n++)
799     mt_process_mt_event(hid, field, &field->usage[n],
800     - field->value[n]);
801     + field->value[n], first_packet);
802     }
803    
804     if (td->num_received >= td->num_expected)
805     diff --git a/drivers/iio/adc/ina2xx-adc.c b/drivers/iio/adc/ina2xx-adc.c
806     index f387b972e4f4..59f99b3a180d 100644
807     --- a/drivers/iio/adc/ina2xx-adc.c
808     +++ b/drivers/iio/adc/ina2xx-adc.c
809     @@ -44,7 +44,6 @@
810    
811     #define INA226_MASK_ENABLE 0x06
812     #define INA226_CVRF BIT(3)
813     -#define INA219_CNVR BIT(1)
814    
815     #define INA2XX_MAX_REGISTERS 8
816    
817     @@ -79,6 +78,11 @@
818     #define INA226_ITS_MASK GENMASK(5, 3)
819     #define INA226_SHIFT_ITS(val) ((val) << 3)
820    
821     +/* INA219 Bus voltage register, low bits are flags */
822     +#define INA219_OVF BIT(0)
823     +#define INA219_CNVR BIT(1)
824     +#define INA219_BUS_VOLTAGE_SHIFT 3
825     +
826     /* Cosmetic macro giving the sampling period for a full P=UxI cycle */
827     #define SAMPLING_PERIOD(c) ((c->int_time_vbus + c->int_time_vshunt) \
828     * c->avg)
829     @@ -112,7 +116,7 @@ struct ina2xx_config {
830     u16 config_default;
831     int calibration_factor;
832     int shunt_div;
833     - int bus_voltage_shift;
834     + int bus_voltage_shift; /* position of lsb */
835     int bus_voltage_lsb; /* uV */
836     int power_lsb; /* uW */
837     enum ina2xx_ids chip_id;
838     @@ -135,7 +139,7 @@ static const struct ina2xx_config ina2xx_config[] = {
839     .config_default = INA219_CONFIG_DEFAULT,
840     .calibration_factor = 40960000,
841     .shunt_div = 100,
842     - .bus_voltage_shift = 3,
843     + .bus_voltage_shift = INA219_BUS_VOLTAGE_SHIFT,
844     .bus_voltage_lsb = 4000,
845     .power_lsb = 20000,
846     .chip_id = ina219,
847     @@ -170,6 +174,9 @@ static int ina2xx_read_raw(struct iio_dev *indio_dev,
848     else
849     *val = regval;
850    
851     + if (chan->address == INA2XX_BUS_VOLTAGE)
852     + *val >>= chip->config->bus_voltage_shift;
853     +
854     return IIO_VAL_INT;
855    
856     case IIO_CHAN_INFO_OVERSAMPLING_RATIO:
857     @@ -203,9 +210,9 @@ static int ina2xx_read_raw(struct iio_dev *indio_dev,
858     return IIO_VAL_FRACTIONAL;
859    
860     case INA2XX_BUS_VOLTAGE:
861     - /* processed (mV) = raw*lsb (uV) / (1000 << shift) */
862     + /* processed (mV) = raw * lsb (uV) / 1000 */
863     *val = chip->config->bus_voltage_lsb;
864     - *val2 = 1000 << chip->config->bus_voltage_shift;
865     + *val2 = 1000;
866     return IIO_VAL_FRACTIONAL;
867    
868     case INA2XX_POWER:
869     @@ -532,7 +539,7 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
870     * Sampling Freq is a consequence of the integration times of
871     * the Voltage channels.
872     */
873     -#define INA219_CHAN_VOLTAGE(_index, _address) { \
874     +#define INA219_CHAN_VOLTAGE(_index, _address, _shift) { \
875     .type = IIO_VOLTAGE, \
876     .address = (_address), \
877     .indexed = 1, \
878     @@ -544,7 +551,8 @@ static ssize_t ina2xx_shunt_resistor_store(struct device *dev,
879     .scan_index = (_index), \
880     .scan_type = { \
881     .sign = 'u', \
882     - .realbits = 16, \
883     + .shift = _shift, \
884     + .realbits = 16 - _shift, \
885     .storagebits = 16, \
886     .endianness = IIO_LE, \
887     } \
888     @@ -579,8 +587,8 @@ static const struct iio_chan_spec ina226_channels[] = {
889     };
890    
891     static const struct iio_chan_spec ina219_channels[] = {
892     - INA219_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE),
893     - INA219_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE),
894     + INA219_CHAN_VOLTAGE(0, INA2XX_SHUNT_VOLTAGE, 0),
895     + INA219_CHAN_VOLTAGE(1, INA2XX_BUS_VOLTAGE, INA219_BUS_VOLTAGE_SHIFT),
896     INA219_CHAN(IIO_POWER, 2, INA2XX_POWER),
897     INA219_CHAN(IIO_CURRENT, 3, INA2XX_CURRENT),
898     IIO_CHAN_SOFT_TIMESTAMP(4),
899     diff --git a/drivers/iio/health/max30102.c b/drivers/iio/health/max30102.c
900     index 9fb4bc73a6bc..3ac25b21cbfc 100644
901     --- a/drivers/iio/health/max30102.c
902     +++ b/drivers/iio/health/max30102.c
903     @@ -329,20 +329,31 @@ static int max30102_read_temp(struct max30102_data *data, int *val)
904     return 0;
905     }
906    
907     -static int max30102_get_temp(struct max30102_data *data, int *val)
908     +static int max30102_get_temp(struct max30102_data *data, int *val, bool en)
909     {
910     int ret;
911    
912     + if (en) {
913     + ret = max30102_set_powermode(data, true);
914     + if (ret)
915     + return ret;
916     + }
917     +
918     /* start acquisition */
919     ret = regmap_update_bits(data->regmap, MAX30102_REG_TEMP_CONFIG,
920     MAX30102_REG_TEMP_CONFIG_TEMP_EN,
921     MAX30102_REG_TEMP_CONFIG_TEMP_EN);
922     if (ret)
923     - return ret;
924     + goto out;
925    
926     msleep(35);
927     + ret = max30102_read_temp(data, val);
928     +
929     +out:
930     + if (en)
931     + max30102_set_powermode(data, false);
932    
933     - return max30102_read_temp(data, val);
934     + return ret;
935     }
936    
937     static int max30102_read_raw(struct iio_dev *indio_dev,
938     @@ -355,20 +366,19 @@ static int max30102_read_raw(struct iio_dev *indio_dev,
939     switch (mask) {
940     case IIO_CHAN_INFO_RAW:
941     /*
942     - * Temperature reading can only be acquired while engine
943     - * is running
944     + * Temperature reading can only be acquired when not in
945     + * shutdown; leave shutdown briefly when buffer not running
946     */
947     mutex_lock(&indio_dev->mlock);
948     -
949     if (!iio_buffer_enabled(indio_dev))
950     - ret = -EBUSY;
951     - else {
952     - ret = max30102_get_temp(data, val);
953     - if (!ret)
954     - ret = IIO_VAL_INT;
955     - }
956     -
957     + ret = max30102_get_temp(data, val, true);
958     + else
959     + ret = max30102_get_temp(data, val, false);
960     mutex_unlock(&indio_dev->mlock);
961     + if (ret)
962     + return ret;
963     +
964     + ret = IIO_VAL_INT;
965     break;
966     case IIO_CHAN_INFO_SCALE:
967     *val = 1000; /* 62.5 */
968     diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
969     index 000937fe53ec..cef05ab83496 100644
970     --- a/drivers/infiniband/hw/mlx5/mr.c
971     +++ b/drivers/infiniband/hw/mlx5/mr.c
972     @@ -1206,6 +1206,9 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
973     int err;
974     bool use_umr = true;
975    
976     + if (!IS_ENABLED(CONFIG_INFINIBAND_USER_MEM))
977     + return ERR_PTR(-EINVAL);
978     +
979     mlx5_ib_dbg(dev, "start 0x%llx, virt_addr 0x%llx, length 0x%llx, access_flags 0x%x\n",
980     start, virt_addr, length, access_flags);
981    
982     diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c
983     index a52674327857..8988ba3b2d65 100644
984     --- a/drivers/leds/leds-pm8058.c
985     +++ b/drivers/leds/leds-pm8058.c
986     @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device *pdev)
987     if (!led)
988     return -ENOMEM;
989    
990     - led->ledtype = (u32)of_device_get_match_data(&pdev->dev);
991     + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev);
992    
993     map = dev_get_regmap(pdev->dev.parent, NULL);
994     if (!map) {
995     diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
996     index ddf0a4341ae2..2704a55f8b6e 100644
997     --- a/drivers/md/dm-mpath.c
998     +++ b/drivers/md/dm-mpath.c
999     @@ -1941,8 +1941,9 @@ static int multipath_busy(struct dm_target *ti)
1000     *---------------------------------------------------------------*/
1001     static struct target_type multipath_target = {
1002     .name = "multipath",
1003     - .version = {1, 12, 0},
1004     - .features = DM_TARGET_SINGLETON | DM_TARGET_IMMUTABLE,
1005     + .version = {1, 13, 0},
1006     + .features = DM_TARGET_SINGLETON | DM_TARGET_IMMUTABLE |
1007     + DM_TARGET_PASSES_INTEGRITY,
1008     .module = THIS_MODULE,
1009     .ctr = multipath_ctr,
1010     .dtr = multipath_dtr,
1011     diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
1012     index a25eebd98996..33834db7c0a0 100644
1013     --- a/drivers/md/dm-raid.c
1014     +++ b/drivers/md/dm-raid.c
1015     @@ -675,15 +675,11 @@ static struct raid_type *get_raid_type_by_ll(const int level, const int layout)
1016     return NULL;
1017     }
1018    
1019     -/*
1020     - * Conditionally change bdev capacity of @rs
1021     - * in case of a disk add/remove reshape
1022     - */
1023     -static void rs_set_capacity(struct raid_set *rs)
1024     +/* Adjust rdev sectors */
1025     +static void rs_set_rdev_sectors(struct raid_set *rs)
1026     {
1027     struct mddev *mddev = &rs->md;
1028     struct md_rdev *rdev;
1029     - struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
1030    
1031     /*
1032     * raid10 sets rdev->sector to the device size, which
1033     @@ -692,8 +688,16 @@ static void rs_set_capacity(struct raid_set *rs)
1034     rdev_for_each(rdev, mddev)
1035     if (!test_bit(Journal, &rdev->flags))
1036     rdev->sectors = mddev->dev_sectors;
1037     +}
1038    
1039     - set_capacity(gendisk, mddev->array_sectors);
1040     +/*
1041     + * Change bdev capacity of @rs in case of a disk add/remove reshape
1042     + */
1043     +static void rs_set_capacity(struct raid_set *rs)
1044     +{
1045     + struct gendisk *gendisk = dm_disk(dm_table_get_md(rs->ti->table));
1046     +
1047     + set_capacity(gendisk, rs->md.array_sectors);
1048     revalidate_disk(gendisk);
1049     }
1050    
1051     @@ -1674,8 +1678,11 @@ static void do_table_event(struct work_struct *ws)
1052     struct raid_set *rs = container_of(ws, struct raid_set, md.event_work);
1053    
1054     smp_rmb(); /* Make sure we access most actual mddev properties */
1055     - if (!rs_is_reshaping(rs))
1056     + if (!rs_is_reshaping(rs)) {
1057     + if (rs_is_raid10(rs))
1058     + rs_set_rdev_sectors(rs);
1059     rs_set_capacity(rs);
1060     + }
1061     dm_table_event(rs->ti->table);
1062     }
1063    
1064     @@ -3845,11 +3852,10 @@ static int raid_preresume(struct dm_target *ti)
1065     mddev->resync_min = mddev->recovery_cp;
1066     }
1067    
1068     - rs_set_capacity(rs);
1069     -
1070     /* Check for any reshape request unless new raid set */
1071     if (test_and_clear_bit(RT_FLAG_RESHAPE_RS, &rs->runtime_flags)) {
1072     /* Initiate a reshape. */
1073     + rs_set_rdev_sectors(rs);
1074     mddev_lock_nointr(mddev);
1075     r = rs_start_reshape(rs);
1076     mddev_unlock(mddev);
1077     @@ -3878,6 +3884,10 @@ static void raid_resume(struct dm_target *ti)
1078     mddev->ro = 0;
1079     mddev->in_sync = 0;
1080    
1081     + /* Only reduce raid set size before running a disk removing reshape. */
1082     + if (mddev->delta_disks < 0)
1083     + rs_set_capacity(rs);
1084     +
1085     /*
1086     * Keep the RAID set frozen if reshape/rebuild flags are set.
1087     * The RAID set is unfrozen once the next table load/resume,
1088     diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
1089     index 0ef36cec21d1..233622bef4a5 100644
1090     --- a/drivers/media/platform/davinci/vpif_capture.c
1091     +++ b/drivers/media/platform/davinci/vpif_capture.c
1092     @@ -1545,6 +1545,8 @@ vpif_capture_get_pdata(struct platform_device *pdev)
1093     sizeof(*chan->inputs) *
1094     VPIF_CAPTURE_NUM_CHANNELS,
1095     GFP_KERNEL);
1096     + if (!chan->inputs)
1097     + return NULL;
1098    
1099     chan->input_count++;
1100     chan->inputs[i].input.type = V4L2_INPUT_TYPE_CAMERA;
1101     diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c
1102     index 962e4c304076..eed9516e25e1 100644
1103     --- a/drivers/media/platform/vsp1/vsp1_drv.c
1104     +++ b/drivers/media/platform/vsp1/vsp1_drv.c
1105     @@ -571,7 +571,13 @@ static int __maybe_unused vsp1_pm_suspend(struct device *dev)
1106     {
1107     struct vsp1_device *vsp1 = dev_get_drvdata(dev);
1108    
1109     - vsp1_pipelines_suspend(vsp1);
1110     + /*
1111     + * When used as part of a display pipeline, the VSP is stopped and
1112     + * restarted explicitly by the DU.
1113     + */
1114     + if (!vsp1->drm)
1115     + vsp1_pipelines_suspend(vsp1);
1116     +
1117     pm_runtime_force_suspend(vsp1->dev);
1118    
1119     return 0;
1120     @@ -582,7 +588,13 @@ static int __maybe_unused vsp1_pm_resume(struct device *dev)
1121     struct vsp1_device *vsp1 = dev_get_drvdata(dev);
1122    
1123     pm_runtime_force_resume(vsp1->dev);
1124     - vsp1_pipelines_resume(vsp1);
1125     +
1126     + /*
1127     + * When used as part of a display pipeline, the VSP is stopped and
1128     + * restarted explicitly by the DU.
1129     + */
1130     + if (!vsp1->drm)
1131     + vsp1_pipelines_resume(vsp1);
1132    
1133     return 0;
1134     }
1135     diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c b/drivers/media/usb/cpia2/cpia2_v4l.c
1136     index 3dedd83f0b19..a1c59f19cf2d 100644
1137     --- a/drivers/media/usb/cpia2/cpia2_v4l.c
1138     +++ b/drivers/media/usb/cpia2/cpia2_v4l.c
1139     @@ -808,7 +808,7 @@ static int cpia2_querybuf(struct file *file, void *fh, struct v4l2_buffer *buf)
1140     struct camera_data *cam = video_drvdata(file);
1141    
1142     if(buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
1143     - buf->index > cam->num_frames)
1144     + buf->index >= cam->num_frames)
1145     return -EINVAL;
1146    
1147     buf->m.offset = cam->buffers[buf->index].data - cam->frame_buffer;
1148     @@ -859,7 +859,7 @@ static int cpia2_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
1149    
1150     if(buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
1151     buf->memory != V4L2_MEMORY_MMAP ||
1152     - buf->index > cam->num_frames)
1153     + buf->index >= cam->num_frames)
1154     return -EINVAL;
1155    
1156     DBG("QBUF #%d\n", buf->index);
1157     diff --git a/drivers/mmc/core/mmc_test.c b/drivers/mmc/core/mmc_test.c
1158     index 478869805b96..789afef66fce 100644
1159     --- a/drivers/mmc/core/mmc_test.c
1160     +++ b/drivers/mmc/core/mmc_test.c
1161     @@ -2328,10 +2328,17 @@ static int mmc_test_reset(struct mmc_test_card *test)
1162     int err;
1163    
1164     err = mmc_hw_reset(host);
1165     - if (!err)
1166     + if (!err) {
1167     + /*
1168     + * Reset will re-enable the card's command queue, but tests
1169     + * expect it to be disabled.
1170     + */
1171     + if (card->ext_csd.cmdq_en)
1172     + mmc_cmdq_disable(card);
1173     return RESULT_OK;
1174     - else if (err == -EOPNOTSUPP)
1175     + } else if (err == -EOPNOTSUPP) {
1176     return RESULT_UNSUP_HOST;
1177     + }
1178    
1179     return RESULT_FAIL;
1180     }
1181     diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
1182     index 9e03bac7f34c..bbdd68a54d68 100644
1183     --- a/drivers/mtd/nand/fsl_ifc_nand.c
1184     +++ b/drivers/mtd/nand/fsl_ifc_nand.c
1185     @@ -916,6 +916,13 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv)
1186     if (ctrl->version >= FSL_IFC_VERSION_1_1_0)
1187     fsl_ifc_sram_init(priv);
1188    
1189     + /*
1190     + * As IFC version 2.0.0 has 16KB of internal SRAM as compared to older
1191     + * versions which had 8KB. Hence bufnum mask needs to be updated.
1192     + */
1193     + if (ctrl->version >= FSL_IFC_VERSION_2_0_0)
1194     + priv->bufnum_mask = (priv->bufnum_mask * 2) + 1;
1195     +
1196     return 0;
1197     }
1198    
1199     diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
1200     index a0b0302aea14..528e04f96c13 100644
1201     --- a/drivers/mtd/nand/nand_base.c
1202     +++ b/drivers/mtd/nand/nand_base.c
1203     @@ -710,7 +710,8 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
1204     chip->cmd_ctrl(mtd, readcmd, ctrl);
1205     ctrl &= ~NAND_CTRL_CHANGE;
1206     }
1207     - chip->cmd_ctrl(mtd, command, ctrl);
1208     + if (command != NAND_CMD_NONE)
1209     + chip->cmd_ctrl(mtd, command, ctrl);
1210    
1211     /* Address cycle, when necessary */
1212     ctrl = NAND_CTRL_ALE | NAND_CTRL_CHANGE;
1213     @@ -739,6 +740,7 @@ static void nand_command(struct mtd_info *mtd, unsigned int command,
1214     */
1215     switch (command) {
1216    
1217     + case NAND_CMD_NONE:
1218     case NAND_CMD_PAGEPROG:
1219     case NAND_CMD_ERASE1:
1220     case NAND_CMD_ERASE2:
1221     @@ -832,7 +834,9 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
1222     }
1223    
1224     /* Command latch cycle */
1225     - chip->cmd_ctrl(mtd, command, NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE);
1226     + if (command != NAND_CMD_NONE)
1227     + chip->cmd_ctrl(mtd, command,
1228     + NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE);
1229    
1230     if (column != -1 || page_addr != -1) {
1231     int ctrl = NAND_CTRL_CHANGE | NAND_NCE | NAND_ALE;
1232     @@ -868,6 +872,7 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command,
1233     */
1234     switch (command) {
1235    
1236     + case NAND_CMD_NONE:
1237     case NAND_CMD_CACHEDPROG:
1238     case NAND_CMD_PAGEPROG:
1239     case NAND_CMD_ERASE1:
1240     diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1241     index b66689a6eac0..807cf75f0a98 100644
1242     --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1243     +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
1244     @@ -1698,12 +1698,16 @@ static int bnxt_async_event_process(struct bnxt *bp,
1245    
1246     if (BNXT_VF(bp))
1247     goto async_event_process_exit;
1248     - if (data1 & 0x20000) {
1249     +
1250     + /* print unsupported speed warning in forced speed mode only */
1251     + if (!(link_info->autoneg & BNXT_AUTONEG_SPEED) &&
1252     + (data1 & 0x20000)) {
1253     u16 fw_speed = link_info->force_link_speed;
1254     u32 speed = bnxt_fw_to_ethtool_speed(fw_speed);
1255    
1256     - netdev_warn(bp->dev, "Link speed %d no longer supported\n",
1257     - speed);
1258     + if (speed != SPEED_UNKNOWN)
1259     + netdev_warn(bp->dev, "Link speed %d no longer supported\n",
1260     + speed);
1261     }
1262     set_bit(BNXT_LINK_SPEED_CHNG_SP_EVENT, &bp->sp_event);
1263     /* fall thru */
1264     diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1265     index 805ab45e9b5a..2237ef8e4344 100644
1266     --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1267     +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
1268     @@ -1832,6 +1832,11 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1269     nic->pdev = pdev;
1270     nic->pnicvf = nic;
1271     nic->max_queues = qcount;
1272     + /* If no of CPUs are too low, there won't be any queues left
1273     + * for XDP_TX, hence double it.
1274     + */
1275     + if (!nic->t88)
1276     + nic->max_queues *= 2;
1277    
1278     /* MAP VF's configuration registers */
1279     nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0);
1280     diff --git a/drivers/net/ieee802154/adf7242.c b/drivers/net/ieee802154/adf7242.c
1281     index 3e4c8b21403c..46b42de13d76 100644
1282     --- a/drivers/net/ieee802154/adf7242.c
1283     +++ b/drivers/net/ieee802154/adf7242.c
1284     @@ -888,7 +888,7 @@ static const struct ieee802154_ops adf7242_ops = {
1285     .set_cca_ed_level = adf7242_set_cca_ed_level,
1286     };
1287    
1288     -static void adf7242_debug(u8 irq1)
1289     +static void adf7242_debug(struct adf7242_local *lp, u8 irq1)
1290     {
1291     #ifdef DEBUG
1292     u8 stat;
1293     @@ -932,7 +932,7 @@ static irqreturn_t adf7242_isr(int irq, void *data)
1294     dev_err(&lp->spi->dev, "%s :ERROR IRQ1 = 0x%X\n",
1295     __func__, irq1);
1296    
1297     - adf7242_debug(irq1);
1298     + adf7242_debug(lp, irq1);
1299    
1300     xmit = test_bit(FLAG_XMIT, &lp->flags);
1301    
1302     diff --git a/drivers/net/ipvlan/ipvlan_core.c b/drivers/net/ipvlan/ipvlan_core.c
1303     index c23dea48ad0f..71ff6bd4be9f 100644
1304     --- a/drivers/net/ipvlan/ipvlan_core.c
1305     +++ b/drivers/net/ipvlan/ipvlan_core.c
1306     @@ -304,6 +304,10 @@ static int ipvlan_rcv_frame(struct ipvl_addr *addr, struct sk_buff **pskb,
1307     if (dev_forward_skb(ipvlan->dev, skb) == NET_RX_SUCCESS)
1308     success = true;
1309     } else {
1310     + if (!ether_addr_equal_64bits(eth_hdr(skb)->h_dest,
1311     + ipvlan->phy_dev->dev_addr))
1312     + skb->pkt_type = PACKET_OTHERHOST;
1313     +
1314     ret = RX_HANDLER_ANOTHER;
1315     success = true;
1316     }
1317     diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
1318     index 5f93e6add563..e911e4990b20 100644
1319     --- a/drivers/net/phy/at803x.c
1320     +++ b/drivers/net/phy/at803x.c
1321     @@ -239,14 +239,10 @@ static int at803x_resume(struct phy_device *phydev)
1322     {
1323     int value;
1324    
1325     - mutex_lock(&phydev->lock);
1326     -
1327     value = phy_read(phydev, MII_BMCR);
1328     value &= ~(BMCR_PDOWN | BMCR_ISOLATE);
1329     phy_write(phydev, MII_BMCR, value);
1330    
1331     - mutex_unlock(&phydev->lock);
1332     -
1333     return 0;
1334     }
1335    
1336     diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
1337     index 3d860de5e342..39de77a8bb63 100644
1338     --- a/drivers/net/phy/phy.c
1339     +++ b/drivers/net/phy/phy.c
1340     @@ -828,7 +828,6 @@ EXPORT_SYMBOL(phy_stop);
1341     */
1342     void phy_start(struct phy_device *phydev)
1343     {
1344     - bool do_resume = false;
1345     int err = 0;
1346    
1347     mutex_lock(&phydev->lock);
1348     @@ -841,6 +840,9 @@ void phy_start(struct phy_device *phydev)
1349     phydev->state = PHY_UP;
1350     break;
1351     case PHY_HALTED:
1352     + /* if phy was suspended, bring the physical link up again */
1353     + __phy_resume(phydev);
1354     +
1355     /* make sure interrupts are re-enabled for the PHY */
1356     if (phy_interrupt_is_valid(phydev)) {
1357     err = phy_enable_interrupts(phydev);
1358     @@ -849,17 +851,12 @@ void phy_start(struct phy_device *phydev)
1359     }
1360    
1361     phydev->state = PHY_RESUMING;
1362     - do_resume = true;
1363     break;
1364     default:
1365     break;
1366     }
1367     mutex_unlock(&phydev->lock);
1368    
1369     - /* if phy was suspended, bring the physical link up again */
1370     - if (do_resume)
1371     - phy_resume(phydev);
1372     -
1373     phy_trigger_machine(phydev, true);
1374     }
1375     EXPORT_SYMBOL(phy_start);
1376     diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
1377     index 67f25ac29025..d312b314825e 100644
1378     --- a/drivers/net/phy/phy_device.c
1379     +++ b/drivers/net/phy/phy_device.c
1380     @@ -1152,11 +1152,13 @@ int phy_suspend(struct phy_device *phydev)
1381     }
1382     EXPORT_SYMBOL(phy_suspend);
1383    
1384     -int phy_resume(struct phy_device *phydev)
1385     +int __phy_resume(struct phy_device *phydev)
1386     {
1387     struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver);
1388     int ret = 0;
1389    
1390     + WARN_ON(!mutex_is_locked(&phydev->lock));
1391     +
1392     if (phydev->drv && phydrv->resume)
1393     ret = phydrv->resume(phydev);
1394    
1395     @@ -1167,6 +1169,18 @@ int phy_resume(struct phy_device *phydev)
1396    
1397     return ret;
1398     }
1399     +EXPORT_SYMBOL(__phy_resume);
1400     +
1401     +int phy_resume(struct phy_device *phydev)
1402     +{
1403     + int ret;
1404     +
1405     + mutex_lock(&phydev->lock);
1406     + ret = __phy_resume(phydev);
1407     + mutex_unlock(&phydev->lock);
1408     +
1409     + return ret;
1410     +}
1411     EXPORT_SYMBOL(phy_resume);
1412    
1413     int phy_loopback(struct phy_device *phydev, bool enable)
1414     @@ -1639,13 +1653,9 @@ int genphy_resume(struct phy_device *phydev)
1415     {
1416     int value;
1417    
1418     - mutex_lock(&phydev->lock);
1419     -
1420     value = phy_read(phydev, MII_BMCR);
1421     phy_write(phydev, MII_BMCR, value & ~BMCR_PDOWN);
1422    
1423     - mutex_unlock(&phydev->lock);
1424     -
1425     return 0;
1426     }
1427     EXPORT_SYMBOL(genphy_resume);
1428     diff --git a/drivers/net/veth.c b/drivers/net/veth.c
1429     index f5438d0978ca..a69ad39ee57e 100644
1430     --- a/drivers/net/veth.c
1431     +++ b/drivers/net/veth.c
1432     @@ -410,6 +410,9 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
1433     if (ifmp && (dev->ifindex != 0))
1434     peer->ifindex = ifmp->ifi_index;
1435    
1436     + peer->gso_max_size = dev->gso_max_size;
1437     + peer->gso_max_segs = dev->gso_max_segs;
1438     +
1439     err = register_netdevice(peer);
1440     put_net(net);
1441     net = NULL;
1442     diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
1443     index 6a785595b9b8..b0a038e6fda0 100644
1444     --- a/drivers/net/virtio_net.c
1445     +++ b/drivers/net/virtio_net.c
1446     @@ -260,9 +260,12 @@ static void virtqueue_napi_complete(struct napi_struct *napi,
1447     int opaque;
1448    
1449     opaque = virtqueue_enable_cb_prepare(vq);
1450     - if (napi_complete_done(napi, processed) &&
1451     - unlikely(virtqueue_poll(vq, opaque)))
1452     - virtqueue_napi_schedule(napi, vq);
1453     + if (napi_complete_done(napi, processed)) {
1454     + if (unlikely(virtqueue_poll(vq, opaque)))
1455     + virtqueue_napi_schedule(napi, vq);
1456     + } else {
1457     + virtqueue_disable_cb(vq);
1458     + }
1459     }
1460    
1461     static void skb_xmit_done(struct virtqueue *vq)
1462     diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
1463     index 5683f1a5330e..35b752353aee 100644
1464     --- a/drivers/net/wireless/ath/ath10k/mac.c
1465     +++ b/drivers/net/wireless/ath/ath10k/mac.c
1466     @@ -6183,6 +6183,16 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
1467     "mac vdev %d peer delete %pM sta %pK (sta gone)\n",
1468     arvif->vdev_id, sta->addr, sta);
1469    
1470     + if (sta->tdls) {
1471     + ret = ath10k_mac_tdls_peer_update(ar, arvif->vdev_id,
1472     + sta,
1473     + WMI_TDLS_PEER_STATE_TEARDOWN);
1474     + if (ret)
1475     + ath10k_warn(ar, "failed to update tdls peer state for %pM state %d: %i\n",
1476     + sta->addr,
1477     + WMI_TDLS_PEER_STATE_TEARDOWN, ret);
1478     + }
1479     +
1480     ret = ath10k_peer_delete(ar, arvif->vdev_id, sta->addr);
1481     if (ret)
1482     ath10k_warn(ar, "failed to delete peer %pM for vdev %d: %i\n",
1483     diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
1484     index 7a3606dde227..bab876cf25fe 100644
1485     --- a/drivers/net/wireless/ath/ath10k/wmi.h
1486     +++ b/drivers/net/wireless/ath/ath10k/wmi.h
1487     @@ -5235,7 +5235,8 @@ enum wmi_10_4_vdev_param {
1488     #define WMI_VDEV_PARAM_TXBF_MU_TX_BFER BIT(3)
1489    
1490     #define WMI_TXBF_STS_CAP_OFFSET_LSB 4
1491     -#define WMI_TXBF_STS_CAP_OFFSET_MASK 0xf0
1492     +#define WMI_TXBF_STS_CAP_OFFSET_MASK 0x70
1493     +#define WMI_TXBF_CONF_IMPLICIT_BF BIT(7)
1494     #define WMI_BF_SOUND_DIM_OFFSET_LSB 8
1495     #define WMI_BF_SOUND_DIM_OFFSET_MASK 0xf00
1496    
1497     diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1498     index 0fe723ca844e..d22cef7381ba 100644
1499     --- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1500     +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
1501     @@ -1881,12 +1881,10 @@ static int rs_switch_to_column(struct iwl_mvm *mvm,
1502     struct rs_rate *rate = &search_tbl->rate;
1503     const struct rs_tx_column *column = &rs_tx_columns[col_id];
1504     const struct rs_tx_column *curr_column = &rs_tx_columns[tbl->column];
1505     - u32 sz = (sizeof(struct iwl_scale_tbl_info) -
1506     - (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT));
1507     unsigned long rate_mask = 0;
1508     u32 rate_idx = 0;
1509    
1510     - memcpy(search_tbl, tbl, sz);
1511     + memcpy(search_tbl, tbl, offsetof(struct iwl_scale_tbl_info, win));
1512    
1513     rate->sgi = column->sgi;
1514     rate->ant = column->ant;
1515     diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1516     index 0ae7624eac9d..43ab172d31cb 100644
1517     --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1518     +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c
1519     @@ -603,6 +603,12 @@ static void iwl_mvm_dump_lmac_error_log(struct iwl_mvm *mvm, u32 base)
1520    
1521     void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
1522     {
1523     + if (!test_bit(STATUS_DEVICE_ENABLED, &mvm->trans->status)) {
1524     + IWL_ERR(mvm,
1525     + "DEVICE_ENABLED bit is not set. Aborting dump.\n");
1526     + return;
1527     + }
1528     +
1529     iwl_mvm_dump_lmac_error_log(mvm, mvm->error_event_table[0]);
1530    
1531     if (mvm->error_event_table[1])
1532     diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
1533     index 710efe7b65f9..d148dbf3beeb 100644
1534     --- a/drivers/net/wireless/mac80211_hwsim.c
1535     +++ b/drivers/net/wireless/mac80211_hwsim.c
1536     @@ -727,16 +727,21 @@ static int hwsim_fops_ps_write(void *dat, u64 val)
1537     val != PS_MANUAL_POLL)
1538     return -EINVAL;
1539    
1540     - old_ps = data->ps;
1541     - data->ps = val;
1542     -
1543     - local_bh_disable();
1544     if (val == PS_MANUAL_POLL) {
1545     + if (data->ps != PS_ENABLED)
1546     + return -EINVAL;
1547     + local_bh_disable();
1548     ieee80211_iterate_active_interfaces_atomic(
1549     data->hw, IEEE80211_IFACE_ITER_NORMAL,
1550     hwsim_send_ps_poll, data);
1551     - data->ps_poll_pending = true;
1552     - } else if (old_ps == PS_DISABLED && val != PS_DISABLED) {
1553     + local_bh_enable();
1554     + return 0;
1555     + }
1556     + old_ps = data->ps;
1557     + data->ps = val;
1558     +
1559     + local_bh_disable();
1560     + if (old_ps == PS_DISABLED && val != PS_DISABLED) {
1561     ieee80211_iterate_active_interfaces_atomic(
1562     data->hw, IEEE80211_IFACE_ITER_NORMAL,
1563     hwsim_send_nullfunc_ps, data);
1564     diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1565     index 32c5074da84c..68aa0c7a8139 100644
1566     --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1567     +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
1568     @@ -1116,6 +1116,12 @@ mwifiex_cfg80211_change_virtual_intf(struct wiphy *wiphy,
1569     struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
1570     enum nl80211_iftype curr_iftype = dev->ieee80211_ptr->iftype;
1571    
1572     + if (priv->scan_request) {
1573     + mwifiex_dbg(priv->adapter, ERROR,
1574     + "change virtual interface: scan in process\n");
1575     + return -EBUSY;
1576     + }
1577     +
1578     switch (curr_iftype) {
1579     case NL80211_IFTYPE_ADHOC:
1580     switch (type) {
1581     diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1582     index 10bd35f8c894..c01ef02d326b 100644
1583     --- a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1584     +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
1585     @@ -4826,6 +4826,10 @@ static const char * const can0_groups[] = {
1586     "can0_data_d",
1587     "can0_data_e",
1588     "can0_data_f",
1589     + /*
1590     + * Retained for backwards compatibility, use can_clk_groups in new
1591     + * designs.
1592     + */
1593     "can_clk",
1594     "can_clk_b",
1595     "can_clk_c",
1596     @@ -4837,6 +4841,21 @@ static const char * const can1_groups[] = {
1597     "can1_data_b",
1598     "can1_data_c",
1599     "can1_data_d",
1600     + /*
1601     + * Retained for backwards compatibility, use can_clk_groups in new
1602     + * designs.
1603     + */
1604     + "can_clk",
1605     + "can_clk_b",
1606     + "can_clk_c",
1607     + "can_clk_d",
1608     +};
1609     +
1610     +/*
1611     + * can_clk_groups allows for independent configuration, use can_clk function
1612     + * in new designs.
1613     + */
1614     +static const char * const can_clk_groups[] = {
1615     "can_clk",
1616     "can_clk_b",
1617     "can_clk_c",
1618     @@ -5308,7 +5327,7 @@ static const char * const vin2_groups[] = {
1619     };
1620    
1621     static const struct {
1622     - struct sh_pfc_function common[56];
1623     + struct sh_pfc_function common[57];
1624     struct sh_pfc_function r8a779x[2];
1625     } pinmux_functions = {
1626     .common = {
1627     @@ -5316,6 +5335,7 @@ static const struct {
1628     SH_PFC_FUNCTION(avb),
1629     SH_PFC_FUNCTION(can0),
1630     SH_PFC_FUNCTION(can1),
1631     + SH_PFC_FUNCTION(can_clk),
1632     SH_PFC_FUNCTION(du),
1633     SH_PFC_FUNCTION(du0),
1634     SH_PFC_FUNCTION(du1),
1635     diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1636     index 95fd0994893a..ad037534aa13 100644
1637     --- a/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1638     +++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795-es1.c
1639     @@ -1397,7 +1397,7 @@ static const u16 pinmux_data[] = {
1640     PINMUX_IPSR_MSEL(IP16_27_24, AUDIO_CLKOUT_B, SEL_ADG_1),
1641     PINMUX_IPSR_MSEL(IP16_27_24, SSI_SCK2_B, SEL_SSI_1),
1642     PINMUX_IPSR_MSEL(IP16_27_24, TS_SDEN1_D, SEL_TSIF1_3),
1643     - PINMUX_IPSR_MSEL(IP16_27_24, STP_ISEN_1_D, SEL_SSP1_1_2),
1644     + PINMUX_IPSR_MSEL(IP16_27_24, STP_ISEN_1_D, SEL_SSP1_1_3),
1645     PINMUX_IPSR_MSEL(IP16_27_24, STP_OPWM_0_E, SEL_SSP1_0_4),
1646     PINMUX_IPSR_MSEL(IP16_27_24, RIF3_D0_B, SEL_DRIF3_1),
1647     PINMUX_IPSR_MSEL(IP16_27_24, TCLK2_B, SEL_TIMER_TMU_1),
1648     diff --git a/drivers/power/supply/ab8500_charger.c b/drivers/power/supply/ab8500_charger.c
1649     index 4ebbcce45c48..5a76c6d343de 100644
1650     --- a/drivers/power/supply/ab8500_charger.c
1651     +++ b/drivers/power/supply/ab8500_charger.c
1652     @@ -3218,11 +3218,13 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
1653     }
1654    
1655     /* Enable backup battery charging */
1656     - abx500_mask_and_set_register_interruptible(di->dev,
1657     + ret = abx500_mask_and_set_register_interruptible(di->dev,
1658     AB8500_RTC, AB8500_RTC_CTRL_REG,
1659     RTC_BUP_CH_ENA, RTC_BUP_CH_ENA);
1660     - if (ret < 0)
1661     + if (ret < 0) {
1662     dev_err(di->dev, "%s mask and set failed\n", __func__);
1663     + goto out;
1664     + }
1665    
1666     if (is_ab8540(di->parent)) {
1667     ret = abx500_mask_and_set_register_interruptible(di->dev,
1668     diff --git a/drivers/pwm/pwm-stmpe.c b/drivers/pwm/pwm-stmpe.c
1669     index e464582a390a..3439f1e902cb 100644
1670     --- a/drivers/pwm/pwm-stmpe.c
1671     +++ b/drivers/pwm/pwm-stmpe.c
1672     @@ -145,7 +145,7 @@ static int stmpe_24xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
1673     break;
1674    
1675     case 2:
1676     - offset = STMPE24XX_PWMIC1;
1677     + offset = STMPE24XX_PWMIC2;
1678     break;
1679    
1680     default:
1681     diff --git a/drivers/rtc/rtc-brcmstb-waketimer.c b/drivers/rtc/rtc-brcmstb-waketimer.c
1682     index 796ac792a381..6cee61201c30 100644
1683     --- a/drivers/rtc/rtc-brcmstb-waketimer.c
1684     +++ b/drivers/rtc/rtc-brcmstb-waketimer.c
1685     @@ -253,7 +253,7 @@ static int brcmstb_waketmr_probe(struct platform_device *pdev)
1686     ret = devm_request_irq(dev, timer->irq, brcmstb_waketmr_irq, 0,
1687     "brcmstb-waketimer", timer);
1688     if (ret < 0)
1689     - return ret;
1690     + goto err_clk;
1691    
1692     timer->reboot_notifier.notifier_call = brcmstb_waketmr_reboot;
1693     register_reboot_notifier(&timer->reboot_notifier);
1694     @@ -262,12 +262,21 @@ static int brcmstb_waketmr_probe(struct platform_device *pdev)
1695     &brcmstb_waketmr_ops, THIS_MODULE);
1696     if (IS_ERR(timer->rtc)) {
1697     dev_err(dev, "unable to register device\n");
1698     - unregister_reboot_notifier(&timer->reboot_notifier);
1699     - return PTR_ERR(timer->rtc);
1700     + ret = PTR_ERR(timer->rtc);
1701     + goto err_notifier;
1702     }
1703    
1704     dev_info(dev, "registered, with irq %d\n", timer->irq);
1705    
1706     + return 0;
1707     +
1708     +err_notifier:
1709     + unregister_reboot_notifier(&timer->reboot_notifier);
1710     +
1711     +err_clk:
1712     + if (timer->clk)
1713     + clk_disable_unprepare(timer->clk);
1714     +
1715     return ret;
1716     }
1717    
1718     diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
1719     index b19b00adacb2..cfc095f45e26 100644
1720     --- a/drivers/scsi/scsi_devinfo.c
1721     +++ b/drivers/scsi/scsi_devinfo.c
1722     @@ -181,7 +181,7 @@ static struct {
1723     {"HITACHI", "6586-", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
1724     {"HITACHI", "6588-", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
1725     {"HP", "A6189A", NULL, BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP VA7400 */
1726     - {"HP", "OPEN-", "*", BLIST_REPORTLUN2}, /* HP XP Arrays */
1727     + {"HP", "OPEN-", "*", BLIST_REPORTLUN2 | BLIST_TRY_VPD_PAGES}, /* HP XP Arrays */
1728     {"HP", "NetRAID-4M", NULL, BLIST_FORCELUN},
1729     {"HP", "HSV100", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD},
1730     {"HP", "C1557A", NULL, BLIST_FORCELUN},
1731     @@ -595,17 +595,12 @@ int scsi_get_device_flags_keyed(struct scsi_device *sdev,
1732     int key)
1733     {
1734     struct scsi_dev_info_list *devinfo;
1735     - int err;
1736    
1737     devinfo = scsi_dev_info_list_find(vendor, model, key);
1738     if (!IS_ERR(devinfo))
1739     return devinfo->flags;
1740    
1741     - err = PTR_ERR(devinfo);
1742     - if (err != -ENOENT)
1743     - return err;
1744     -
1745     - /* nothing found, return nothing */
1746     + /* key or device not found: return nothing */
1747     if (key != SCSI_DEVINFO_GLOBAL)
1748     return 0;
1749    
1750     diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c
1751     index 84addee05be6..a5e30e9449ef 100644
1752     --- a/drivers/scsi/scsi_dh.c
1753     +++ b/drivers/scsi/scsi_dh.c
1754     @@ -56,10 +56,13 @@ static const struct scsi_dh_blist scsi_dh_blist[] = {
1755     {"IBM", "1815", "rdac", },
1756     {"IBM", "1818", "rdac", },
1757     {"IBM", "3526", "rdac", },
1758     + {"IBM", "3542", "rdac", },
1759     + {"IBM", "3552", "rdac", },
1760     {"SGI", "TP9", "rdac", },
1761     {"SGI", "IS", "rdac", },
1762     - {"STK", "OPENstorage D280", "rdac", },
1763     + {"STK", "OPENstorage", "rdac", },
1764     {"STK", "FLEXLINE 380", "rdac", },
1765     + {"STK", "BladeCtlr", "rdac", },
1766     {"SUN", "CSM", "rdac", },
1767     {"SUN", "LCSM100", "rdac", },
1768     {"SUN", "STK6580_6780", "rdac", },
1769     diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
1770     index 11826c5c2dd4..62f04c0511cf 100644
1771     --- a/drivers/scsi/ses.c
1772     +++ b/drivers/scsi/ses.c
1773     @@ -615,13 +615,16 @@ static void ses_enclosure_data_process(struct enclosure_device *edev,
1774     }
1775    
1776     static void ses_match_to_enclosure(struct enclosure_device *edev,
1777     - struct scsi_device *sdev)
1778     + struct scsi_device *sdev,
1779     + int refresh)
1780     {
1781     + struct scsi_device *edev_sdev = to_scsi_device(edev->edev.parent);
1782     struct efd efd = {
1783     .addr = 0,
1784     };
1785    
1786     - ses_enclosure_data_process(edev, to_scsi_device(edev->edev.parent), 0);
1787     + if (refresh)
1788     + ses_enclosure_data_process(edev, edev_sdev, 0);
1789    
1790     if (scsi_is_sas_rphy(sdev->sdev_target->dev.parent))
1791     efd.addr = sas_get_address(sdev);
1792     @@ -652,7 +655,7 @@ static int ses_intf_add(struct device *cdev,
1793     struct enclosure_device *prev = NULL;
1794    
1795     while ((edev = enclosure_find(&sdev->host->shost_gendev, prev)) != NULL) {
1796     - ses_match_to_enclosure(edev, sdev);
1797     + ses_match_to_enclosure(edev, sdev, 1);
1798     prev = edev;
1799     }
1800     return -ENODEV;
1801     @@ -768,7 +771,7 @@ static int ses_intf_add(struct device *cdev,
1802     shost_for_each_device(tmp_sdev, sdev->host) {
1803     if (tmp_sdev->lun != 0 || scsi_device_enclosure(tmp_sdev))
1804     continue;
1805     - ses_match_to_enclosure(edev, tmp_sdev);
1806     + ses_match_to_enclosure(edev, tmp_sdev, 0);
1807     }
1808    
1809     return 0;
1810     diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
1811     index fb38234249a8..8533f4edd00a 100644
1812     --- a/drivers/spi/spi-sun6i.c
1813     +++ b/drivers/spi/spi-sun6i.c
1814     @@ -541,7 +541,7 @@ static int sun6i_spi_probe(struct platform_device *pdev)
1815    
1816     static int sun6i_spi_remove(struct platform_device *pdev)
1817     {
1818     - pm_runtime_disable(&pdev->dev);
1819     + pm_runtime_force_suspend(&pdev->dev);
1820    
1821     return 0;
1822     }
1823     diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c
1824     index e7541dc90473..d9941b0c468d 100644
1825     --- a/drivers/staging/android/ashmem.c
1826     +++ b/drivers/staging/android/ashmem.c
1827     @@ -334,24 +334,23 @@ static loff_t ashmem_llseek(struct file *file, loff_t offset, int origin)
1828     mutex_lock(&ashmem_mutex);
1829    
1830     if (asma->size == 0) {
1831     - ret = -EINVAL;
1832     - goto out;
1833     + mutex_unlock(&ashmem_mutex);
1834     + return -EINVAL;
1835     }
1836    
1837     if (!asma->file) {
1838     - ret = -EBADF;
1839     - goto out;
1840     + mutex_unlock(&ashmem_mutex);
1841     + return -EBADF;
1842     }
1843    
1844     + mutex_unlock(&ashmem_mutex);
1845     +
1846     ret = vfs_llseek(asma->file, offset, origin);
1847     if (ret < 0)
1848     - goto out;
1849     + return ret;
1850    
1851     /** Copy f_pos from backing file, since f_ops->llseek() sets it */
1852     file->f_pos = asma->file->f_pos;
1853     -
1854     -out:
1855     - mutex_unlock(&ashmem_mutex);
1856     return ret;
1857     }
1858    
1859     diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
1860     index 0b43db6371c6..c11c22bd6d13 100644
1861     --- a/drivers/staging/comedi/drivers.c
1862     +++ b/drivers/staging/comedi/drivers.c
1863     @@ -484,8 +484,7 @@ unsigned int comedi_nsamples_left(struct comedi_subdevice *s,
1864     struct comedi_cmd *cmd = &async->cmd;
1865    
1866     if (cmd->stop_src == TRIG_COUNT) {
1867     - unsigned int nscans = nsamples / cmd->scan_end_arg;
1868     - unsigned int scans_left = __comedi_nscans_left(s, nscans);
1869     + unsigned int scans_left = __comedi_nscans_left(s, cmd->stop_arg);
1870     unsigned int scan_pos =
1871     comedi_bytes_to_samples(s, async->scan_progress);
1872     unsigned long long samples_left = 0;
1873     diff --git a/drivers/staging/rtlwifi/rtl8822be/fw.c b/drivers/staging/rtlwifi/rtl8822be/fw.c
1874     index a2cc54866e79..acabb2470d55 100644
1875     --- a/drivers/staging/rtlwifi/rtl8822be/fw.c
1876     +++ b/drivers/staging/rtlwifi/rtl8822be/fw.c
1877     @@ -464,6 +464,8 @@ bool rtl8822b_halmac_cb_write_data_rsvd_page(struct rtl_priv *rtlpriv, u8 *buf,
1878     int count;
1879    
1880     skb = dev_alloc_skb(size);
1881     + if (!skb)
1882     + return false;
1883     memcpy((u8 *)skb_put(skb, size), buf, size);
1884    
1885     if (!_rtl8822be_send_bcn_or_cmd_packet(rtlpriv->hw, skb, BEACON_QUEUE))
1886     diff --git a/drivers/staging/typec/fusb302/fusb302.c b/drivers/staging/typec/fusb302/fusb302.c
1887     index fc6a3cf74eb3..7d9f25db1add 100644
1888     --- a/drivers/staging/typec/fusb302/fusb302.c
1889     +++ b/drivers/staging/typec/fusb302/fusb302.c
1890     @@ -1552,6 +1552,21 @@ static int fusb302_pd_read_message(struct fusb302_chip *chip,
1891     fusb302_log(chip, "PD message header: %x", msg->header);
1892     fusb302_log(chip, "PD message len: %d", len);
1893    
1894     + /*
1895     + * Check if we've read off a GoodCRC message. If so then indicate to
1896     + * TCPM that the previous transmission has completed. Otherwise we pass
1897     + * the received message over to TCPM for processing.
1898     + *
1899     + * We make this check here instead of basing the reporting decision on
1900     + * the IRQ event type, as it's possible for the chip to report the
1901     + * TX_SUCCESS and GCRCSENT events out of order on occasion, so we need
1902     + * to check the message type to ensure correct reporting to TCPM.
1903     + */
1904     + if ((!len) && (pd_header_type_le(msg->header) == PD_CTRL_GOOD_CRC))
1905     + tcpm_pd_transmit_complete(chip->tcpm_port, TCPC_TX_SUCCESS);
1906     + else
1907     + tcpm_pd_receive(chip->tcpm_port, msg);
1908     +
1909     return ret;
1910     }
1911    
1912     @@ -1659,13 +1674,12 @@ static irqreturn_t fusb302_irq_intn(int irq, void *dev_id)
1913    
1914     if (interrupta & FUSB_REG_INTERRUPTA_TX_SUCCESS) {
1915     fusb302_log(chip, "IRQ: PD tx success");
1916     - /* read out the received good CRC */
1917     ret = fusb302_pd_read_message(chip, &pd_msg);
1918     if (ret < 0) {
1919     - fusb302_log(chip, "cannot read in GCRC, ret=%d", ret);
1920     + fusb302_log(chip,
1921     + "cannot read in PD message, ret=%d", ret);
1922     goto done;
1923     }
1924     - tcpm_pd_transmit_complete(chip->tcpm_port, TCPC_TX_SUCCESS);
1925     }
1926    
1927     if (interrupta & FUSB_REG_INTERRUPTA_HARDRESET) {
1928     @@ -1686,7 +1700,6 @@ static irqreturn_t fusb302_irq_intn(int irq, void *dev_id)
1929     "cannot read in PD message, ret=%d", ret);
1930     goto done;
1931     }
1932     - tcpm_pd_receive(chip->tcpm_port, &pd_msg);
1933     }
1934     done:
1935     mutex_unlock(&chip->lock);
1936     diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
1937     index d4e7be88e0da..908110b5cf10 100644
1938     --- a/drivers/tty/serial/8250/8250_pci.c
1939     +++ b/drivers/tty/serial/8250/8250_pci.c
1940     @@ -4700,6 +4700,17 @@ static const struct pci_device_id serial_pci_tbl[] = {
1941     { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS400,
1942     PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0dc0 */
1943     pbn_b2_4_115200 },
1944     + /*
1945     + * BrainBoxes UC-260
1946     + */
1947     + { PCI_VENDOR_ID_INTASHIELD, 0x0D21,
1948     + PCI_ANY_ID, PCI_ANY_ID,
1949     + PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
1950     + pbn_b2_4_115200 },
1951     + { PCI_VENDOR_ID_INTASHIELD, 0x0E34,
1952     + PCI_ANY_ID, PCI_ANY_ID,
1953     + PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
1954     + pbn_b2_4_115200 },
1955     /*
1956     * Perle PCI-RAS cards
1957     */
1958     diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
1959     index 7551cab438ff..a0b24bc09783 100644
1960     --- a/drivers/tty/serial/atmel_serial.c
1961     +++ b/drivers/tty/serial/atmel_serial.c
1962     @@ -1763,6 +1763,7 @@ static void atmel_get_ip_name(struct uart_port *port)
1963     switch (version) {
1964     case 0x302:
1965     case 0x10213:
1966     + case 0x10302:
1967     dev_dbg(port->dev, "This version is usart\n");
1968     atmel_port->has_frac_baudrate = true;
1969     atmel_port->has_hw_timer = true;
1970     diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c
1971     index 98928f082d87..17dba0af5ee9 100644
1972     --- a/drivers/tty/serial/earlycon.c
1973     +++ b/drivers/tty/serial/earlycon.c
1974     @@ -253,11 +253,12 @@ int __init of_setup_earlycon(const struct earlycon_id *match,
1975     }
1976     port->mapbase = addr;
1977     port->uartclk = BASE_BAUD * 16;
1978     - port->membase = earlycon_map(port->mapbase, SZ_4K);
1979    
1980     val = of_get_flat_dt_prop(node, "reg-offset", NULL);
1981     if (val)
1982     port->mapbase += be32_to_cpu(*val);
1983     + port->membase = earlycon_map(port->mapbase, SZ_4K);
1984     +
1985     val = of_get_flat_dt_prop(node, "reg-shift", NULL);
1986     if (val)
1987     port->regshift = be32_to_cpu(*val);
1988     diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
1989     index 7948acf14601..c8cb0b398cb1 100644
1990     --- a/drivers/tty/serial/serial_core.c
1991     +++ b/drivers/tty/serial/serial_core.c
1992     @@ -1157,6 +1157,8 @@ static int uart_do_autoconfig(struct tty_struct *tty,struct uart_state *state)
1993     uport->ops->config_port(uport, flags);
1994    
1995     ret = uart_startup(tty, state, 1);
1996     + if (ret == 0)
1997     + tty_port_set_initialized(port, true);
1998     if (ret > 0)
1999     ret = 0;
2000     }
2001     diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
2002     index 761b9f5f1491..22f60239026c 100644
2003     --- a/drivers/tty/serial/sh-sci.c
2004     +++ b/drivers/tty/serial/sh-sci.c
2005     @@ -886,6 +886,8 @@ static void sci_receive_chars(struct uart_port *port)
2006     /* Tell the rest of the system the news. New characters! */
2007     tty_flip_buffer_push(tport);
2008     } else {
2009     + /* TTY buffers full; read from RX reg to prevent lockup */
2010     + serial_port_in(port, SCxRDR);
2011     serial_port_in(port, SCxSR); /* dummy read */
2012     sci_clear_SCxSR(port, SCxSR_RDxF_CLEAR(port));
2013     }
2014     diff --git a/drivers/usb/core/ledtrig-usbport.c b/drivers/usb/core/ledtrig-usbport.c
2015     index 1af877942110..2de0444c95a8 100644
2016     --- a/drivers/usb/core/ledtrig-usbport.c
2017     +++ b/drivers/usb/core/ledtrig-usbport.c
2018     @@ -140,11 +140,17 @@ static bool usbport_trig_port_observed(struct usbport_trig_data *usbport_data,
2019     if (!led_np)
2020     return false;
2021    
2022     - /* Get node of port being added */
2023     + /*
2024     + * Get node of port being added
2025     + *
2026     + * FIXME: This is really the device node of the connected device
2027     + */
2028     port_np = usb_of_get_child_node(usb_dev->dev.of_node, port1);
2029     if (!port_np)
2030     return false;
2031    
2032     + of_node_put(port_np);
2033     +
2034     /* Amount of trigger sources for this LED */
2035     count = of_count_phandle_with_args(led_np, "trigger-sources",
2036     "#trigger-source-cells");
2037     diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
2038     index 371a07d874a3..dd29e6ec1c43 100644
2039     --- a/drivers/usb/core/message.c
2040     +++ b/drivers/usb/core/message.c
2041     @@ -150,6 +150,10 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
2042    
2043     ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
2044    
2045     + /* Linger a bit, prior to the next control message. */
2046     + if (dev->quirks & USB_QUIRK_DELAY_CTRL_MSG)
2047     + msleep(200);
2048     +
2049     kfree(dr);
2050    
2051     return ret;
2052     diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
2053     index 774c97bb1c08..4f1c6f8d4352 100644
2054     --- a/drivers/usb/core/quirks.c
2055     +++ b/drivers/usb/core/quirks.c
2056     @@ -229,7 +229,8 @@ static const struct usb_device_id usb_quirk_list[] = {
2057     { USB_DEVICE(0x1b1c, 0x1b13), .driver_info = USB_QUIRK_DELAY_INIT },
2058    
2059     /* Corsair Strafe RGB */
2060     - { USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT },
2061     + { USB_DEVICE(0x1b1c, 0x1b20), .driver_info = USB_QUIRK_DELAY_INIT |
2062     + USB_QUIRK_DELAY_CTRL_MSG },
2063    
2064     /* Corsair K70 LUX */
2065     { USB_DEVICE(0x1b1c, 0x1b36), .driver_info = USB_QUIRK_DELAY_INIT },
2066     diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
2067     index 03474d3575ab..3219d8157f5b 100644
2068     --- a/drivers/usb/dwc3/core.c
2069     +++ b/drivers/usb/dwc3/core.c
2070     @@ -186,7 +186,7 @@ void dwc3_set_mode(struct dwc3 *dwc, u32 mode)
2071     dwc->desired_dr_role = mode;
2072     spin_unlock_irqrestore(&dwc->lock, flags);
2073    
2074     - queue_work(system_power_efficient_wq, &dwc->drd_work);
2075     + queue_work(system_freezable_wq, &dwc->drd_work);
2076     }
2077    
2078     u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type)
2079     diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
2080     index a9c9ab01592b..0904cb6ce4de 100644
2081     --- a/drivers/usb/gadget/function/f_fs.c
2082     +++ b/drivers/usb/gadget/function/f_fs.c
2083     @@ -1539,7 +1539,6 @@ ffs_fs_kill_sb(struct super_block *sb)
2084     if (sb->s_fs_info) {
2085     ffs_release_dev(sb->s_fs_info);
2086     ffs_data_closed(sb->s_fs_info);
2087     - ffs_data_put(sb->s_fs_info);
2088     }
2089     }
2090    
2091     diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
2092     index abb8f19ae40f..3fb57cf8abb8 100644
2093     --- a/drivers/usb/host/xhci-pci.c
2094     +++ b/drivers/usb/host/xhci-pci.c
2095     @@ -134,6 +134,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
2096     if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())
2097     xhci->quirks |= XHCI_AMD_PLL_FIX;
2098    
2099     + if (pdev->vendor == PCI_VENDOR_ID_AMD && pdev->device == 0x43bb)
2100     + xhci->quirks |= XHCI_SUSPEND_DELAY;
2101     +
2102     if (pdev->vendor == PCI_VENDOR_ID_AMD)
2103     xhci->quirks |= XHCI_TRUST_TX_LENGTH;
2104    
2105     diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
2106     index 198bc188ab25..97f23cc31f4c 100644
2107     --- a/drivers/usb/host/xhci-rcar.c
2108     +++ b/drivers/usb/host/xhci-rcar.c
2109     @@ -86,6 +86,10 @@ static const struct soc_device_attribute rcar_quirks_match[] = {
2110     .soc_id = "r8a7796",
2111     .data = (void *)RCAR_XHCI_FIRMWARE_V3,
2112     },
2113     + {
2114     + .soc_id = "r8a77965",
2115     + .data = (void *)RCAR_XHCI_FIRMWARE_V3,
2116     + },
2117     { /* sentinel */ },
2118     };
2119    
2120     diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
2121     index e5677700dea4..bad76a7c7f2f 100644
2122     --- a/drivers/usb/host/xhci.c
2123     +++ b/drivers/usb/host/xhci.c
2124     @@ -887,6 +887,9 @@ int xhci_suspend(struct xhci_hcd *xhci, bool do_wakeup)
2125     clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
2126     del_timer_sync(&xhci->shared_hcd->rh_timer);
2127    
2128     + if (xhci->quirks & XHCI_SUSPEND_DELAY)
2129     + usleep_range(1000, 1500);
2130     +
2131     spin_lock_irq(&xhci->lock);
2132     clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
2133     clear_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
2134     diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
2135     index 2b48aa4f6b76..2eaf6e1f12ee 100644
2136     --- a/drivers/usb/host/xhci.h
2137     +++ b/drivers/usb/host/xhci.h
2138     @@ -728,11 +728,12 @@ struct xhci_ep_ctx {
2139     /* bits 10:14 are Max Primary Streams */
2140     /* bit 15 is Linear Stream Array */
2141     /* Interval - period between requests to an endpoint - 125u increments. */
2142     -#define EP_INTERVAL(p) (((p) & 0xff) << 16)
2143     -#define EP_INTERVAL_TO_UFRAMES(p) (1 << (((p) >> 16) & 0xff))
2144     -#define CTX_TO_EP_INTERVAL(p) (((p) >> 16) & 0xff)
2145     -#define EP_MAXPSTREAMS_MASK (0x1f << 10)
2146     -#define EP_MAXPSTREAMS(p) (((p) << 10) & EP_MAXPSTREAMS_MASK)
2147     +#define EP_INTERVAL(p) (((p) & 0xff) << 16)
2148     +#define EP_INTERVAL_TO_UFRAMES(p) (1 << (((p) >> 16) & 0xff))
2149     +#define CTX_TO_EP_INTERVAL(p) (((p) >> 16) & 0xff)
2150     +#define EP_MAXPSTREAMS_MASK (0x1f << 10)
2151     +#define EP_MAXPSTREAMS(p) (((p) << 10) & EP_MAXPSTREAMS_MASK)
2152     +#define CTX_TO_EP_MAXPSTREAMS(p) (((p) & EP_MAXPSTREAMS_MASK) >> 10)
2153     /* Endpoint is set up with a Linear Stream Array (vs. Secondary Stream Array) */
2154     #define EP_HAS_LSA (1 << 15)
2155     /* hosts with LEC=1 use bits 31:24 as ESIT high bits. */
2156     @@ -1830,6 +1831,7 @@ struct xhci_hcd {
2157     #define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
2158     /* Reserved. It was XHCI_U2_DISABLE_WAKE */
2159     #define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
2160     +#define XHCI_SUSPEND_DELAY (1 << 30)
2161    
2162     unsigned int num_active_eps;
2163     unsigned int limit_active_eps;
2164     @@ -2539,21 +2541,22 @@ static inline const char *xhci_decode_ep_context(u32 info, u32 info2, u64 deq,
2165     u8 burst;
2166     u8 cerr;
2167     u8 mult;
2168     - u8 lsa;
2169     - u8 hid;
2170     +
2171     + bool lsa;
2172     + bool hid;
2173    
2174     esit = CTX_TO_MAX_ESIT_PAYLOAD_HI(info) << 16 |
2175     CTX_TO_MAX_ESIT_PAYLOAD(tx_info);
2176    
2177     ep_state = info & EP_STATE_MASK;
2178     - max_pstr = info & EP_MAXPSTREAMS_MASK;
2179     + max_pstr = CTX_TO_EP_MAXPSTREAMS(info);
2180     interval = CTX_TO_EP_INTERVAL(info);
2181     mult = CTX_TO_EP_MULT(info) + 1;
2182     - lsa = info & EP_HAS_LSA;
2183     + lsa = !!(info & EP_HAS_LSA);
2184    
2185     cerr = (info2 & (3 << 1)) >> 1;
2186     ep_type = CTX_TO_EP_TYPE(info2);
2187     - hid = info2 & (1 << 7);
2188     + hid = !!(info2 & (1 << 7));
2189     burst = CTX_TO_MAX_BURST(info2);
2190     maxp = MAX_PACKET_DECODED(info2);
2191    
2192     diff --git a/drivers/usb/mon/mon_text.c b/drivers/usb/mon/mon_text.c
2193     index f5e1bb5e5217..984f7e12a6a5 100644
2194     --- a/drivers/usb/mon/mon_text.c
2195     +++ b/drivers/usb/mon/mon_text.c
2196     @@ -85,6 +85,8 @@ struct mon_reader_text {
2197    
2198     wait_queue_head_t wait;
2199     int printf_size;
2200     + size_t printf_offset;
2201     + size_t printf_togo;
2202     char *printf_buf;
2203     struct mutex printf_lock;
2204    
2205     @@ -376,75 +378,103 @@ static int mon_text_open(struct inode *inode, struct file *file)
2206     return rc;
2207     }
2208    
2209     -/*
2210     - * For simplicity, we read one record in one system call and throw out
2211     - * what does not fit. This means that the following does not work:
2212     - * dd if=/dbg/usbmon/0t bs=10
2213     - * Also, we do not allow seeks and do not bother advancing the offset.
2214     - */
2215     +static ssize_t mon_text_copy_to_user(struct mon_reader_text *rp,
2216     + char __user * const buf, const size_t nbytes)
2217     +{
2218     + const size_t togo = min(nbytes, rp->printf_togo);
2219     +
2220     + if (copy_to_user(buf, &rp->printf_buf[rp->printf_offset], togo))
2221     + return -EFAULT;
2222     + rp->printf_togo -= togo;
2223     + rp->printf_offset += togo;
2224     + return togo;
2225     +}
2226     +
2227     +/* ppos is not advanced since the llseek operation is not permitted. */
2228     static ssize_t mon_text_read_t(struct file *file, char __user *buf,
2229     - size_t nbytes, loff_t *ppos)
2230     + size_t nbytes, loff_t *ppos)
2231     {
2232     struct mon_reader_text *rp = file->private_data;
2233     struct mon_event_text *ep;
2234     struct mon_text_ptr ptr;
2235     + ssize_t ret;
2236    
2237     - ep = mon_text_read_wait(rp, file);
2238     - if (IS_ERR(ep))
2239     - return PTR_ERR(ep);
2240     mutex_lock(&rp->printf_lock);
2241     - ptr.cnt = 0;
2242     - ptr.pbuf = rp->printf_buf;
2243     - ptr.limit = rp->printf_size;
2244     -
2245     - mon_text_read_head_t(rp, &ptr, ep);
2246     - mon_text_read_statset(rp, &ptr, ep);
2247     - ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2248     - " %d", ep->length);
2249     - mon_text_read_data(rp, &ptr, ep);
2250     -
2251     - if (copy_to_user(buf, rp->printf_buf, ptr.cnt))
2252     - ptr.cnt = -EFAULT;
2253     +
2254     + if (rp->printf_togo == 0) {
2255     +
2256     + ep = mon_text_read_wait(rp, file);
2257     + if (IS_ERR(ep)) {
2258     + mutex_unlock(&rp->printf_lock);
2259     + return PTR_ERR(ep);
2260     + }
2261     + ptr.cnt = 0;
2262     + ptr.pbuf = rp->printf_buf;
2263     + ptr.limit = rp->printf_size;
2264     +
2265     + mon_text_read_head_t(rp, &ptr, ep);
2266     + mon_text_read_statset(rp, &ptr, ep);
2267     + ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2268     + " %d", ep->length);
2269     + mon_text_read_data(rp, &ptr, ep);
2270     +
2271     + rp->printf_togo = ptr.cnt;
2272     + rp->printf_offset = 0;
2273     +
2274     + kmem_cache_free(rp->e_slab, ep);
2275     + }
2276     +
2277     + ret = mon_text_copy_to_user(rp, buf, nbytes);
2278     mutex_unlock(&rp->printf_lock);
2279     - kmem_cache_free(rp->e_slab, ep);
2280     - return ptr.cnt;
2281     + return ret;
2282     }
2283    
2284     +/* ppos is not advanced since the llseek operation is not permitted. */
2285     static ssize_t mon_text_read_u(struct file *file, char __user *buf,
2286     - size_t nbytes, loff_t *ppos)
2287     + size_t nbytes, loff_t *ppos)
2288     {
2289     struct mon_reader_text *rp = file->private_data;
2290     struct mon_event_text *ep;
2291     struct mon_text_ptr ptr;
2292     + ssize_t ret;
2293    
2294     - ep = mon_text_read_wait(rp, file);
2295     - if (IS_ERR(ep))
2296     - return PTR_ERR(ep);
2297     mutex_lock(&rp->printf_lock);
2298     - ptr.cnt = 0;
2299     - ptr.pbuf = rp->printf_buf;
2300     - ptr.limit = rp->printf_size;
2301    
2302     - mon_text_read_head_u(rp, &ptr, ep);
2303     - if (ep->type == 'E') {
2304     - mon_text_read_statset(rp, &ptr, ep);
2305     - } else if (ep->xfertype == USB_ENDPOINT_XFER_ISOC) {
2306     - mon_text_read_isostat(rp, &ptr, ep);
2307     - mon_text_read_isodesc(rp, &ptr, ep);
2308     - } else if (ep->xfertype == USB_ENDPOINT_XFER_INT) {
2309     - mon_text_read_intstat(rp, &ptr, ep);
2310     - } else {
2311     - mon_text_read_statset(rp, &ptr, ep);
2312     + if (rp->printf_togo == 0) {
2313     +
2314     + ep = mon_text_read_wait(rp, file);
2315     + if (IS_ERR(ep)) {
2316     + mutex_unlock(&rp->printf_lock);
2317     + return PTR_ERR(ep);
2318     + }
2319     + ptr.cnt = 0;
2320     + ptr.pbuf = rp->printf_buf;
2321     + ptr.limit = rp->printf_size;
2322     +
2323     + mon_text_read_head_u(rp, &ptr, ep);
2324     + if (ep->type == 'E') {
2325     + mon_text_read_statset(rp, &ptr, ep);
2326     + } else if (ep->xfertype == USB_ENDPOINT_XFER_ISOC) {
2327     + mon_text_read_isostat(rp, &ptr, ep);
2328     + mon_text_read_isodesc(rp, &ptr, ep);
2329     + } else if (ep->xfertype == USB_ENDPOINT_XFER_INT) {
2330     + mon_text_read_intstat(rp, &ptr, ep);
2331     + } else {
2332     + mon_text_read_statset(rp, &ptr, ep);
2333     + }
2334     + ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2335     + " %d", ep->length);
2336     + mon_text_read_data(rp, &ptr, ep);
2337     +
2338     + rp->printf_togo = ptr.cnt;
2339     + rp->printf_offset = 0;
2340     +
2341     + kmem_cache_free(rp->e_slab, ep);
2342     }
2343     - ptr.cnt += snprintf(ptr.pbuf + ptr.cnt, ptr.limit - ptr.cnt,
2344     - " %d", ep->length);
2345     - mon_text_read_data(rp, &ptr, ep);
2346    
2347     - if (copy_to_user(buf, rp->printf_buf, ptr.cnt))
2348     - ptr.cnt = -EFAULT;
2349     + ret = mon_text_copy_to_user(rp, buf, nbytes);
2350     mutex_unlock(&rp->printf_lock);
2351     - kmem_cache_free(rp->e_slab, ep);
2352     - return ptr.cnt;
2353     + return ret;
2354     }
2355    
2356     static struct mon_event_text *mon_text_read_wait(struct mon_reader_text *rp,
2357     diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
2358     index 0bc8543e96b1..25a281f876b5 100644
2359     --- a/drivers/usb/storage/uas.c
2360     +++ b/drivers/usb/storage/uas.c
2361     @@ -1076,7 +1076,7 @@ static int uas_post_reset(struct usb_interface *intf)
2362     return 0;
2363    
2364     err = uas_configure_endpoints(devinfo);
2365     - if (err && err != ENODEV)
2366     + if (err && err != -ENODEV)
2367     shost_printk(KERN_ERR, shost,
2368     "%s: alloc streams error %d after reset",
2369     __func__, err);
2370     diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
2371     index 9af39644561f..52b3e6da0745 100644
2372     --- a/drivers/usb/storage/unusual_devs.h
2373     +++ b/drivers/usb/storage/unusual_devs.h
2374     @@ -2137,6 +2137,13 @@ UNUSUAL_DEV( 0x152d, 0x2566, 0x0114, 0x0114,
2375     USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2376     US_FL_BROKEN_FUA ),
2377    
2378     +/* Reported by Teijo Kinnunen <teijo.kinnunen@code-q.fi> */
2379     +UNUSUAL_DEV( 0x152d, 0x2567, 0x0117, 0x0117,
2380     + "JMicron",
2381     + "USB to ATA/ATAPI Bridge",
2382     + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2383     + US_FL_BROKEN_FUA ),
2384     +
2385     /* Reported-by George Cherian <george.cherian@cavium.com> */
2386     UNUSUAL_DEV(0x152d, 0x9561, 0x0000, 0x9999,
2387     "JMicron",
2388     diff --git a/drivers/usb/usbip/vudc_sysfs.c b/drivers/usb/usbip/vudc_sysfs.c
2389     index 0f98f2c7475f..7efa374a4970 100644
2390     --- a/drivers/usb/usbip/vudc_sysfs.c
2391     +++ b/drivers/usb/usbip/vudc_sysfs.c
2392     @@ -117,10 +117,14 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
2393     if (rv != 0)
2394     return -EINVAL;
2395    
2396     + if (!udc) {
2397     + dev_err(dev, "no device");
2398     + return -ENODEV;
2399     + }
2400     spin_lock_irqsave(&udc->lock, flags);
2401     /* Don't export what we don't have */
2402     - if (!udc || !udc->driver || !udc->pullup) {
2403     - dev_err(dev, "no device or gadget not bound");
2404     + if (!udc->driver || !udc->pullup) {
2405     + dev_err(dev, "gadget not bound");
2406     ret = -ENODEV;
2407     goto unlock;
2408     }
2409     diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
2410     index 1cf907ecded4..111a0ab6280a 100644
2411     --- a/drivers/video/hdmi.c
2412     +++ b/drivers/video/hdmi.c
2413     @@ -321,6 +321,17 @@ int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame)
2414     }
2415     EXPORT_SYMBOL(hdmi_vendor_infoframe_init);
2416    
2417     +static int hdmi_vendor_infoframe_length(const struct hdmi_vendor_infoframe *frame)
2418     +{
2419     + /* for side by side (half) we also need to provide 3D_Ext_Data */
2420     + if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2421     + return 6;
2422     + else if (frame->vic != 0 || frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID)
2423     + return 5;
2424     + else
2425     + return 4;
2426     +}
2427     +
2428     /**
2429     * hdmi_vendor_infoframe_pack() - write a HDMI vendor infoframe to binary buffer
2430     * @frame: HDMI infoframe
2431     @@ -341,19 +352,11 @@ ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
2432     u8 *ptr = buffer;
2433     size_t length;
2434    
2435     - /* empty info frame */
2436     - if (frame->vic == 0 && frame->s3d_struct == HDMI_3D_STRUCTURE_INVALID)
2437     - return -EINVAL;
2438     -
2439     /* only one of those can be supplied */
2440     if (frame->vic != 0 && frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID)
2441     return -EINVAL;
2442    
2443     - /* for side by side (half) we also need to provide 3D_Ext_Data */
2444     - if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2445     - frame->length = 6;
2446     - else
2447     - frame->length = 5;
2448     + frame->length = hdmi_vendor_infoframe_length(frame);
2449    
2450     length = HDMI_INFOFRAME_HEADER_SIZE + frame->length;
2451    
2452     @@ -372,14 +375,16 @@ ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
2453     ptr[5] = 0x0c;
2454     ptr[6] = 0x00;
2455    
2456     - if (frame->vic) {
2457     - ptr[7] = 0x1 << 5; /* video format */
2458     - ptr[8] = frame->vic;
2459     - } else {
2460     + if (frame->s3d_struct != HDMI_3D_STRUCTURE_INVALID) {
2461     ptr[7] = 0x2 << 5; /* video format */
2462     ptr[8] = (frame->s3d_struct & 0xf) << 4;
2463     if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
2464     ptr[9] = (frame->s3d_ext_data & 0xf) << 4;
2465     + } else if (frame->vic) {
2466     + ptr[7] = 0x1 << 5; /* video format */
2467     + ptr[8] = frame->vic;
2468     + } else {
2469     + ptr[7] = 0x0 << 5; /* video format */
2470     }
2471    
2472     hdmi_infoframe_set_checksum(buffer, length);
2473     @@ -1165,7 +1170,7 @@ hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame,
2474    
2475     if (ptr[0] != HDMI_INFOFRAME_TYPE_VENDOR ||
2476     ptr[1] != 1 ||
2477     - (ptr[2] != 5 && ptr[2] != 6))
2478     + (ptr[2] != 4 && ptr[2] != 5 && ptr[2] != 6))
2479     return -EINVAL;
2480    
2481     length = ptr[2];
2482     @@ -1193,16 +1198,22 @@ hdmi_vendor_any_infoframe_unpack(union hdmi_vendor_any_infoframe *frame,
2483    
2484     hvf->length = length;
2485    
2486     - if (hdmi_video_format == 0x1) {
2487     - hvf->vic = ptr[4];
2488     - } else if (hdmi_video_format == 0x2) {
2489     + if (hdmi_video_format == 0x2) {
2490     + if (length != 5 && length != 6)
2491     + return -EINVAL;
2492     hvf->s3d_struct = ptr[4] >> 4;
2493     if (hvf->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) {
2494     - if (length == 6)
2495     - hvf->s3d_ext_data = ptr[5] >> 4;
2496     - else
2497     + if (length != 6)
2498     return -EINVAL;
2499     + hvf->s3d_ext_data = ptr[5] >> 4;
2500     }
2501     + } else if (hdmi_video_format == 0x1) {
2502     + if (length != 5)
2503     + return -EINVAL;
2504     + hvf->vic = ptr[4];
2505     + } else {
2506     + if (length != 4)
2507     + return -EINVAL;
2508     }
2509    
2510     return 0;
2511     diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
2512     index 4447e0fe9b55..883881b16c86 100644
2513     --- a/fs/btrfs/sysfs.c
2514     +++ b/fs/btrfs/sysfs.c
2515     @@ -422,7 +422,7 @@ static ssize_t btrfs_nodesize_show(struct kobject *kobj,
2516     {
2517     struct btrfs_fs_info *fs_info = to_fs_info(kobj);
2518    
2519     - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->nodesize);
2520     + return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->nodesize);
2521     }
2522    
2523     BTRFS_ATTR(nodesize, btrfs_nodesize_show);
2524     @@ -432,7 +432,8 @@ static ssize_t btrfs_sectorsize_show(struct kobject *kobj,
2525     {
2526     struct btrfs_fs_info *fs_info = to_fs_info(kobj);
2527    
2528     - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
2529     + return snprintf(buf, PAGE_SIZE, "%u\n",
2530     + fs_info->super_copy->sectorsize);
2531     }
2532    
2533     BTRFS_ATTR(sectorsize, btrfs_sectorsize_show);
2534     @@ -442,7 +443,8 @@ static ssize_t btrfs_clone_alignment_show(struct kobject *kobj,
2535     {
2536     struct btrfs_fs_info *fs_info = to_fs_info(kobj);
2537    
2538     - return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->sectorsize);
2539     + return snprintf(buf, PAGE_SIZE, "%u\n",
2540     + fs_info->super_copy->sectorsize);
2541     }
2542    
2543     BTRFS_ATTR(clone_alignment, btrfs_clone_alignment_show);
2544     diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
2545     index 46bda13e5727..f615d59b0489 100644
2546     --- a/fs/btrfs/transaction.c
2547     +++ b/fs/btrfs/transaction.c
2548     @@ -1722,23 +1722,19 @@ static void update_super_roots(struct btrfs_fs_info *fs_info)
2549    
2550     super = fs_info->super_copy;
2551    
2552     - /* update latest btrfs_super_block::chunk_root refs */
2553     root_item = &fs_info->chunk_root->root_item;
2554     - btrfs_set_super_chunk_root(super, root_item->bytenr);
2555     - btrfs_set_super_chunk_root_generation(super, root_item->generation);
2556     - btrfs_set_super_chunk_root_level(super, root_item->level);
2557     + super->chunk_root = root_item->bytenr;
2558     + super->chunk_root_generation = root_item->generation;
2559     + super->chunk_root_level = root_item->level;
2560    
2561     - /* update latest btrfs_super_block::root refs */
2562     root_item = &fs_info->tree_root->root_item;
2563     - btrfs_set_super_root(super, root_item->bytenr);
2564     - btrfs_set_super_generation(super, root_item->generation);
2565     - btrfs_set_super_root_level(super, root_item->level);
2566     -
2567     + super->root = root_item->bytenr;
2568     + super->generation = root_item->generation;
2569     + super->root_level = root_item->level;
2570     if (btrfs_test_opt(fs_info, SPACE_CACHE))
2571     - btrfs_set_super_cache_generation(super, root_item->generation);
2572     + super->cache_generation = root_item->generation;
2573     if (test_bit(BTRFS_FS_UPDATE_UUID_TREE_GEN, &fs_info->flags))
2574     - btrfs_set_super_uuid_tree_generation(super,
2575     - root_item->generation);
2576     + super->uuid_tree_generation = root_item->generation;
2577     }
2578    
2579     int btrfs_transaction_in_commit(struct btrfs_fs_info *info)
2580     diff --git a/fs/namei.c b/fs/namei.c
2581     index 62a0db6e6725..cbe24e367a70 100644
2582     --- a/fs/namei.c
2583     +++ b/fs/namei.c
2584     @@ -1133,9 +1133,6 @@ static int follow_automount(struct path *path, struct nameidata *nd,
2585     path->dentry->d_inode)
2586     return -EISDIR;
2587    
2588     - if (path->dentry->d_sb->s_user_ns != &init_user_ns)
2589     - return -EACCES;
2590     -
2591     nd->total_link_count++;
2592     if (nd->total_link_count >= 40)
2593     return -ELOOP;
2594     diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h
2595     index 332a5420243c..bc8940ca280d 100644
2596     --- a/include/linux/dma-fence-array.h
2597     +++ b/include/linux/dma-fence-array.h
2598     @@ -21,6 +21,7 @@
2599     #define __LINUX_DMA_FENCE_ARRAY_H
2600    
2601     #include <linux/dma-fence.h>
2602     +#include <linux/irq_work.h>
2603    
2604     /**
2605     * struct dma_fence_array_cb - callback helper for fence array
2606     @@ -47,6 +48,8 @@ struct dma_fence_array {
2607     unsigned num_fences;
2608     atomic_t num_pending;
2609     struct dma_fence **fences;
2610     +
2611     + struct irq_work work;
2612     };
2613    
2614     extern const struct dma_fence_ops dma_fence_array_ops;
2615     diff --git a/include/linux/phy.h b/include/linux/phy.h
2616     index d78cd01ea513..600076e1ce84 100644
2617     --- a/include/linux/phy.h
2618     +++ b/include/linux/phy.h
2619     @@ -817,6 +817,7 @@ void phy_device_remove(struct phy_device *phydev);
2620     int phy_init_hw(struct phy_device *phydev);
2621     int phy_suspend(struct phy_device *phydev);
2622     int phy_resume(struct phy_device *phydev);
2623     +int __phy_resume(struct phy_device *phydev);
2624     int phy_loopback(struct phy_device *phydev, bool enable);
2625     struct phy_device *phy_attach(struct net_device *dev, const char *bus_id,
2626     phy_interface_t interface);
2627     diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h
2628     index 7cd553a3ce05..b6ce4c2eb40b 100644
2629     --- a/include/linux/usb/quirks.h
2630     +++ b/include/linux/usb/quirks.h
2631     @@ -57,4 +57,7 @@
2632     */
2633     #define USB_QUIRK_LINEAR_FRAME_INTR_BINTERVAL BIT(11)
2634    
2635     +/* Device needs a pause after every control message. */
2636     +#define USB_QUIRK_DELAY_CTRL_MSG BIT(13)
2637     +
2638     #endif /* __LINUX_USB_QUIRKS_H */
2639     diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c
2640     index f24582d4dad3..6dca260eeccf 100644
2641     --- a/kernel/locking/locktorture.c
2642     +++ b/kernel/locking/locktorture.c
2643     @@ -715,8 +715,7 @@ static void __torture_print_stats(char *page,
2644     {
2645     bool fail = 0;
2646     int i, n_stress;
2647     - long max = 0;
2648     - long min = statp[0].n_lock_acquired;
2649     + long max = 0, min = statp ? statp[0].n_lock_acquired : 0;
2650     long long sum = 0;
2651    
2652     n_stress = write ? cxt.nrealwriters_stress : cxt.nrealreaders_stress;
2653     @@ -823,7 +822,7 @@ static void lock_torture_cleanup(void)
2654     * such, only perform the underlying torture-specific cleanups,
2655     * and avoid anything related to locktorture.
2656     */
2657     - if (!cxt.lwsa)
2658     + if (!cxt.lwsa && !cxt.lrsa)
2659     goto end;
2660    
2661     if (writer_tasks) {
2662     @@ -898,6 +897,13 @@ static int __init lock_torture_init(void)
2663     firsterr = -EINVAL;
2664     goto unwind;
2665     }
2666     +
2667     + if (nwriters_stress == 0 && nreaders_stress == 0) {
2668     + pr_alert("lock-torture: must run at least one locking thread\n");
2669     + firsterr = -EINVAL;
2670     + goto unwind;
2671     + }
2672     +
2673     if (cxt.cur_ops->init)
2674     cxt.cur_ops->init();
2675    
2676     @@ -921,17 +927,19 @@ static int __init lock_torture_init(void)
2677     #endif
2678    
2679     /* Initialize the statistics so that each run gets its own numbers. */
2680     + if (nwriters_stress) {
2681     + lock_is_write_held = 0;
2682     + cxt.lwsa = kmalloc(sizeof(*cxt.lwsa) * cxt.nrealwriters_stress, GFP_KERNEL);
2683     + if (cxt.lwsa == NULL) {
2684     + VERBOSE_TOROUT_STRING("cxt.lwsa: Out of memory");
2685     + firsterr = -ENOMEM;
2686     + goto unwind;
2687     + }
2688    
2689     - lock_is_write_held = 0;
2690     - cxt.lwsa = kmalloc(sizeof(*cxt.lwsa) * cxt.nrealwriters_stress, GFP_KERNEL);
2691     - if (cxt.lwsa == NULL) {
2692     - VERBOSE_TOROUT_STRING("cxt.lwsa: Out of memory");
2693     - firsterr = -ENOMEM;
2694     - goto unwind;
2695     - }
2696     - for (i = 0; i < cxt.nrealwriters_stress; i++) {
2697     - cxt.lwsa[i].n_lock_fail = 0;
2698     - cxt.lwsa[i].n_lock_acquired = 0;
2699     + for (i = 0; i < cxt.nrealwriters_stress; i++) {
2700     + cxt.lwsa[i].n_lock_fail = 0;
2701     + cxt.lwsa[i].n_lock_acquired = 0;
2702     + }
2703     }
2704    
2705     if (cxt.cur_ops->readlock) {
2706     @@ -948,19 +956,21 @@ static int __init lock_torture_init(void)
2707     cxt.nrealreaders_stress = cxt.nrealwriters_stress;
2708     }
2709    
2710     - lock_is_read_held = 0;
2711     - cxt.lrsa = kmalloc(sizeof(*cxt.lrsa) * cxt.nrealreaders_stress, GFP_KERNEL);
2712     - if (cxt.lrsa == NULL) {
2713     - VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory");
2714     - firsterr = -ENOMEM;
2715     - kfree(cxt.lwsa);
2716     - cxt.lwsa = NULL;
2717     - goto unwind;
2718     - }
2719     -
2720     - for (i = 0; i < cxt.nrealreaders_stress; i++) {
2721     - cxt.lrsa[i].n_lock_fail = 0;
2722     - cxt.lrsa[i].n_lock_acquired = 0;
2723     + if (nreaders_stress) {
2724     + lock_is_read_held = 0;
2725     + cxt.lrsa = kmalloc(sizeof(*cxt.lrsa) * cxt.nrealreaders_stress, GFP_KERNEL);
2726     + if (cxt.lrsa == NULL) {
2727     + VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory");
2728     + firsterr = -ENOMEM;
2729     + kfree(cxt.lwsa);
2730     + cxt.lwsa = NULL;
2731     + goto unwind;
2732     + }
2733     +
2734     + for (i = 0; i < cxt.nrealreaders_stress; i++) {
2735     + cxt.lrsa[i].n_lock_fail = 0;
2736     + cxt.lrsa[i].n_lock_acquired = 0;
2737     + }
2738     }
2739     }
2740    
2741     @@ -990,12 +1000,14 @@ static int __init lock_torture_init(void)
2742     goto unwind;
2743     }
2744    
2745     - writer_tasks = kzalloc(cxt.nrealwriters_stress * sizeof(writer_tasks[0]),
2746     - GFP_KERNEL);
2747     - if (writer_tasks == NULL) {
2748     - VERBOSE_TOROUT_ERRSTRING("writer_tasks: Out of memory");
2749     - firsterr = -ENOMEM;
2750     - goto unwind;
2751     + if (nwriters_stress) {
2752     + writer_tasks = kzalloc(cxt.nrealwriters_stress * sizeof(writer_tasks[0]),
2753     + GFP_KERNEL);
2754     + if (writer_tasks == NULL) {
2755     + VERBOSE_TOROUT_ERRSTRING("writer_tasks: Out of memory");
2756     + firsterr = -ENOMEM;
2757     + goto unwind;
2758     + }
2759     }
2760    
2761     if (cxt.cur_ops->readlock) {
2762     diff --git a/kernel/sched/core.c b/kernel/sched/core.c
2763     index 55062461b2fd..8cf36b30a006 100644
2764     --- a/kernel/sched/core.c
2765     +++ b/kernel/sched/core.c
2766     @@ -506,7 +506,8 @@ void resched_cpu(int cpu)
2767     unsigned long flags;
2768    
2769     raw_spin_lock_irqsave(&rq->lock, flags);
2770     - resched_curr(rq);
2771     + if (cpu_online(cpu) || cpu == smp_processor_id())
2772     + resched_curr(rq);
2773     raw_spin_unlock_irqrestore(&rq->lock, flags);
2774     }
2775    
2776     diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
2777     index 298f62b8662d..470a0c9e93de 100644
2778     --- a/kernel/sched/rt.c
2779     +++ b/kernel/sched/rt.c
2780     @@ -2218,7 +2218,7 @@ static void switched_to_rt(struct rq *rq, struct task_struct *p)
2781     if (p->nr_cpus_allowed > 1 && rq->rt.overloaded)
2782     queue_push_tasks(rq);
2783     #endif /* CONFIG_SMP */
2784     - if (p->prio < rq->curr->prio)
2785     + if (p->prio < rq->curr->prio && cpu_online(cpu_of(rq)))
2786     resched_curr(rq);
2787     }
2788     }
2789     diff --git a/lib/usercopy.c b/lib/usercopy.c
2790     index 15e2e6fb060e..3744b2a8e591 100644
2791     --- a/lib/usercopy.c
2792     +++ b/lib/usercopy.c
2793     @@ -20,7 +20,7 @@ EXPORT_SYMBOL(_copy_from_user);
2794     #endif
2795    
2796     #ifndef INLINE_COPY_TO_USER
2797     -unsigned long _copy_to_user(void *to, const void __user *from, unsigned long n)
2798     +unsigned long _copy_to_user(void __user *to, const void *from, unsigned long n)
2799     {
2800     might_fault();
2801     if (likely(access_ok(VERIFY_WRITE, to, n))) {
2802     diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
2803     index f75029abf728..e4912858b72c 100644
2804     --- a/net/mac80211/iface.c
2805     +++ b/net/mac80211/iface.c
2806     @@ -1493,7 +1493,7 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
2807     break;
2808     case NL80211_IFTYPE_UNSPECIFIED:
2809     case NUM_NL80211_IFTYPES:
2810     - BUG();
2811     + WARN_ON(1);
2812     break;
2813     }
2814    
2815     diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
2816     index bf8c81e07c70..79549baf5804 100644
2817     --- a/net/sched/sch_generic.c
2818     +++ b/net/sched/sch_generic.c
2819     @@ -743,10 +743,6 @@ struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue,
2820     root_lock = qdisc_lock(oqdisc);
2821     spin_lock_bh(root_lock);
2822    
2823     - /* Prune old scheduler */
2824     - if (oqdisc && refcount_read(&oqdisc->refcnt) <= 1)
2825     - qdisc_reset(oqdisc);
2826     -
2827     /* ... and graft new one */
2828     if (qdisc == NULL)
2829     qdisc = &noop_qdisc;
2830     @@ -897,6 +893,16 @@ static bool some_qdisc_is_busy(struct net_device *dev)
2831     return false;
2832     }
2833    
2834     +static void dev_qdisc_reset(struct net_device *dev,
2835     + struct netdev_queue *dev_queue,
2836     + void *none)
2837     +{
2838     + struct Qdisc *qdisc = dev_queue->qdisc_sleeping;
2839     +
2840     + if (qdisc)
2841     + qdisc_reset(qdisc);
2842     +}
2843     +
2844     /**
2845     * dev_deactivate_many - deactivate transmissions on several devices
2846     * @head: list of devices to deactivate
2847     @@ -907,7 +913,6 @@ static bool some_qdisc_is_busy(struct net_device *dev)
2848     void dev_deactivate_many(struct list_head *head)
2849     {
2850     struct net_device *dev;
2851     - bool sync_needed = false;
2852    
2853     list_for_each_entry(dev, head, close_list) {
2854     netdev_for_each_tx_queue(dev, dev_deactivate_queue,
2855     @@ -917,20 +922,25 @@ void dev_deactivate_many(struct list_head *head)
2856     &noop_qdisc);
2857    
2858     dev_watchdog_down(dev);
2859     - sync_needed |= !dev->dismantle;
2860     }
2861    
2862     /* Wait for outstanding qdisc-less dev_queue_xmit calls.
2863     * This is avoided if all devices are in dismantle phase :
2864     * Caller will call synchronize_net() for us
2865     */
2866     - if (sync_needed)
2867     - synchronize_net();
2868     + synchronize_net();
2869    
2870     /* Wait for outstanding qdisc_run calls. */
2871     - list_for_each_entry(dev, head, close_list)
2872     + list_for_each_entry(dev, head, close_list) {
2873     while (some_qdisc_is_busy(dev))
2874     yield();
2875     + /* The new qdisc is assigned at this point so we can safely
2876     + * unwind stale skb lists and qdisc statistics
2877     + */
2878     + netdev_for_each_tx_queue(dev, dev_qdisc_reset, NULL);
2879     + if (dev_ingress_queue(dev))
2880     + dev_qdisc_reset(dev, dev_ingress_queue(dev), NULL);
2881     + }
2882     }
2883    
2884     void dev_deactivate(struct net_device *dev)
2885     diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
2886     index 22f5da66357b..7d17c207fc8a 100644
2887     --- a/net/xfrm/xfrm_policy.c
2888     +++ b/net/xfrm/xfrm_policy.c
2889     @@ -1257,7 +1257,7 @@ EXPORT_SYMBOL(xfrm_policy_delete);
2890    
2891     int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol)
2892     {
2893     - struct net *net = xp_net(pol);
2894     + struct net *net = sock_net(sk);
2895     struct xfrm_policy *old_pol;
2896    
2897     #ifdef CONFIG_XFRM_SUB_POLICY
2898     diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c
2899     index 8b23c5bcf8e8..02501817227b 100644
2900     --- a/net/xfrm/xfrm_replay.c
2901     +++ b/net/xfrm/xfrm_replay.c
2902     @@ -666,7 +666,7 @@ static int xfrm_replay_overflow_offload_esn(struct xfrm_state *x, struct sk_buff
2903     if (unlikely(oseq < replay_esn->oseq)) {
2904     XFRM_SKB_CB(skb)->seq.output.hi = ++oseq_hi;
2905     xo->seq.hi = oseq_hi;
2906     -
2907     + replay_esn->oseq_hi = oseq_hi;
2908     if (replay_esn->oseq_hi == 0) {
2909     replay_esn->oseq--;
2910     replay_esn->oseq_hi--;
2911     @@ -678,7 +678,6 @@ static int xfrm_replay_overflow_offload_esn(struct xfrm_state *x, struct sk_buff
2912     }
2913    
2914     replay_esn->oseq = oseq;
2915     - replay_esn->oseq_hi = oseq_hi;
2916    
2917     if (xfrm_aevent_is_on(net))
2918     x->repl->notify(x, XFRM_REPLAY_UPDATE);
2919     diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
2920     index 58be0e7f4c7d..bab20c626943 100644
2921     --- a/net/xfrm/xfrm_state.c
2922     +++ b/net/xfrm/xfrm_state.c
2923     @@ -2050,6 +2050,13 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen
2924     struct xfrm_mgr *km;
2925     struct xfrm_policy *pol = NULL;
2926    
2927     + if (!optval && !optlen) {
2928     + xfrm_sk_policy_insert(sk, XFRM_POLICY_IN, NULL);
2929     + xfrm_sk_policy_insert(sk, XFRM_POLICY_OUT, NULL);
2930     + __sk_dst_reset(sk);
2931     + return 0;
2932     + }
2933     +
2934     if (optlen <= 0 || optlen > PAGE_SIZE)
2935     return -EMSGSIZE;
2936    
2937     diff --git a/security/integrity/ima/ima_appraise.c b/security/integrity/ima/ima_appraise.c
2938     index 7d769b948de8..348db9b78681 100644
2939     --- a/security/integrity/ima/ima_appraise.c
2940     +++ b/security/integrity/ima/ima_appraise.c
2941     @@ -223,7 +223,8 @@ int ima_appraise_measurement(enum ima_hooks func,
2942     if (opened & FILE_CREATED)
2943     iint->flags |= IMA_NEW_FILE;
2944     if ((iint->flags & IMA_NEW_FILE) &&
2945     - !(iint->flags & IMA_DIGSIG_REQUIRED))
2946     + (!(iint->flags & IMA_DIGSIG_REQUIRED) ||
2947     + (inode->i_size == 0)))
2948     status = INTEGRITY_PASS;
2949     goto out;
2950     }
2951     diff --git a/sound/soc/codecs/rt5651.c b/sound/soc/codecs/rt5651.c
2952     index da60b28ba3df..57c2add323c4 100644
2953     --- a/sound/soc/codecs/rt5651.c
2954     +++ b/sound/soc/codecs/rt5651.c
2955     @@ -1694,6 +1694,7 @@ static const struct regmap_config rt5651_regmap = {
2956     .num_reg_defaults = ARRAY_SIZE(rt5651_reg),
2957     .ranges = rt5651_ranges,
2958     .num_ranges = ARRAY_SIZE(rt5651_ranges),
2959     + .use_single_rw = true,
2960     };
2961    
2962     #if defined(CONFIG_OF)
2963     diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
2964     index f2bb4feba3b6..0b11a2e01b2f 100644
2965     --- a/sound/soc/codecs/sgtl5000.c
2966     +++ b/sound/soc/codecs/sgtl5000.c
2967     @@ -871,15 +871,26 @@ static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream,
2968     static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
2969     enum snd_soc_bias_level level)
2970     {
2971     + struct sgtl5000_priv *sgtl = snd_soc_codec_get_drvdata(codec);
2972     + int ret;
2973     +
2974     switch (level) {
2975     case SND_SOC_BIAS_ON:
2976     case SND_SOC_BIAS_PREPARE:
2977     case SND_SOC_BIAS_STANDBY:
2978     + regcache_cache_only(sgtl->regmap, false);
2979     + ret = regcache_sync(sgtl->regmap);
2980     + if (ret) {
2981     + regcache_cache_only(sgtl->regmap, true);
2982     + return ret;
2983     + }
2984     +
2985     snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
2986     SGTL5000_REFTOP_POWERUP,
2987     SGTL5000_REFTOP_POWERUP);
2988     break;
2989     case SND_SOC_BIAS_OFF:
2990     + regcache_cache_only(sgtl->regmap, true);
2991     snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
2992     SGTL5000_REFTOP_POWERUP, 0);
2993     break;
2994     diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
2995     index 66e32f5d2917..989d093abda7 100644
2996     --- a/sound/soc/codecs/wm_adsp.c
2997     +++ b/sound/soc/codecs/wm_adsp.c
2998     @@ -1204,12 +1204,14 @@ static int wmfw_add_ctl(struct wm_adsp *dsp, struct wm_coeff_ctl *ctl)
2999     kcontrol->put = wm_coeff_put_acked;
3000     break;
3001     default:
3002     - kcontrol->get = wm_coeff_get;
3003     - kcontrol->put = wm_coeff_put;
3004     -
3005     - ctl->bytes_ext.max = ctl->len;
3006     - ctl->bytes_ext.get = wm_coeff_tlv_get;
3007     - ctl->bytes_ext.put = wm_coeff_tlv_put;
3008     + if (kcontrol->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
3009     + ctl->bytes_ext.max = ctl->len;
3010     + ctl->bytes_ext.get = wm_coeff_tlv_get;
3011     + ctl->bytes_ext.put = wm_coeff_tlv_put;
3012     + } else {
3013     + kcontrol->get = wm_coeff_get;
3014     + kcontrol->put = wm_coeff_put;
3015     + }
3016     break;
3017     }
3018    
3019     diff --git a/sound/soc/nuc900/nuc900-ac97.c b/sound/soc/nuc900/nuc900-ac97.c
3020     index b6615affe571..fde974d52bb2 100644
3021     --- a/sound/soc/nuc900/nuc900-ac97.c
3022     +++ b/sound/soc/nuc900/nuc900-ac97.c
3023     @@ -67,7 +67,7 @@ static unsigned short nuc900_ac97_read(struct snd_ac97 *ac97,
3024    
3025     /* polling the AC_R_FINISH */
3026     while (!(AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON) & AC_R_FINISH)
3027     - && timeout--)
3028     + && --timeout)
3029     mdelay(1);
3030    
3031     if (!timeout) {
3032     @@ -121,7 +121,7 @@ static void nuc900_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
3033    
3034     /* polling the AC_W_FINISH */
3035     while ((AUDIO_READ(nuc900_audio->mmio + ACTL_ACCON) & AC_W_FINISH)
3036     - && timeout--)
3037     + && --timeout)
3038     mdelay(1);
3039    
3040     if (!timeout)
3041     diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
3042     index 04f92583a969..b4af5ce78ecb 100644
3043     --- a/sound/soc/sunxi/sun4i-i2s.c
3044     +++ b/sound/soc/sunxi/sun4i-i2s.c
3045     @@ -104,7 +104,7 @@
3046    
3047     #define SUN8I_I2S_CHAN_CFG_REG 0x30
3048     #define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM_MASK GENMASK(6, 4)
3049     -#define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(chan) (chan - 1)
3050     +#define SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(chan) ((chan - 1) << 4)
3051     #define SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM_MASK GENMASK(2, 0)
3052     #define SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM(chan) (chan - 1)
3053    
3054     diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c
3055     index c9a81673e8aa..89f0b6c00e3f 100644
3056     --- a/tools/perf/arch/s390/annotate/instructions.c
3057     +++ b/tools/perf/arch/s390/annotate/instructions.c
3058     @@ -16,7 +16,8 @@ static struct ins_ops *s390__associate_ins_ops(struct arch *arch, const char *na
3059     if (!strcmp(name, "br"))
3060     ops = &ret_ops;
3061    
3062     - arch__associate_ins_ops(arch, name, ops);
3063     + if (ops)
3064     + arch__associate_ins_ops(arch, name, ops);
3065     return ops;
3066     }
3067    
3068     diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
3069     index 41d415707264..dac76ac117c1 100644
3070     --- a/tools/perf/util/annotate.c
3071     +++ b/tools/perf/util/annotate.c
3072     @@ -323,6 +323,8 @@ static int comment__symbol(char *raw, char *comment, u64 *addrp, char **namep)
3073     return 0;
3074    
3075     *addrp = strtoull(comment, &endptr, 16);
3076     + if (endptr == comment)
3077     + return 0;
3078     name = strchr(endptr, '<');
3079     if (name == NULL)
3080     return -1;
3081     @@ -436,8 +438,8 @@ static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map *m
3082     return 0;
3083    
3084     comment = ltrim(comment);
3085     - comment__symbol(ops->source.raw, comment, &ops->source.addr, &ops->source.name);
3086     - comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
3087     + comment__symbol(ops->source.raw, comment + 1, &ops->source.addr, &ops->source.name);
3088     + comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name);
3089    
3090     return 0;
3091    
3092     @@ -481,7 +483,7 @@ static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops
3093     return 0;
3094    
3095     comment = ltrim(comment);
3096     - comment__symbol(ops->target.raw, comment, &ops->target.addr, &ops->target.name);
3097     + comment__symbol(ops->target.raw, comment + 1, &ops->target.addr, &ops->target.name);
3098    
3099     return 0;
3100     }
3101     diff --git a/tools/testing/selftests/firmware/fw_filesystem.sh b/tools/testing/selftests/firmware/fw_filesystem.sh
3102     index 62f2d6f54929..13ade39fe832 100755
3103     --- a/tools/testing/selftests/firmware/fw_filesystem.sh
3104     +++ b/tools/testing/selftests/firmware/fw_filesystem.sh
3105     @@ -45,7 +45,10 @@ test_finish()
3106     if [ "$HAS_FW_LOADER_USER_HELPER" = "yes" ]; then
3107     echo "$OLD_TIMEOUT" >/sys/class/firmware/timeout
3108     fi
3109     - echo -n "$OLD_PATH" >/sys/module/firmware_class/parameters/path
3110     + if [ "$OLD_FWPATH" = "" ]; then
3111     + OLD_FWPATH=" "
3112     + fi
3113     + echo -n "$OLD_FWPATH" >/sys/module/firmware_class/parameters/path
3114     rm -f "$FW"
3115     rmdir "$FWPATH"
3116     }
3117     diff --git a/tools/testing/selftests/rcutorture/bin/configinit.sh b/tools/testing/selftests/rcutorture/bin/configinit.sh
3118     index 3f81a1095206..50a6371b2b2e 100755
3119     --- a/tools/testing/selftests/rcutorture/bin/configinit.sh
3120     +++ b/tools/testing/selftests/rcutorture/bin/configinit.sh
3121     @@ -51,7 +51,7 @@ then
3122     mkdir $builddir
3123     fi
3124     else
3125     - echo Bad build directory: \"$builddir\"
3126     + echo Bad build directory: \"$buildloc\"
3127     exit 2
3128     fi
3129     fi
3130     diff --git a/tools/usb/usbip/src/usbipd.c b/tools/usb/usbip/src/usbipd.c
3131     index 009afb4a3aae..c6dad2a13c80 100644
3132     --- a/tools/usb/usbip/src/usbipd.c
3133     +++ b/tools/usb/usbip/src/usbipd.c
3134     @@ -456,7 +456,7 @@ static void set_signal(void)
3135     sigaction(SIGTERM, &act, NULL);
3136     sigaction(SIGINT, &act, NULL);
3137     act.sa_handler = SIG_IGN;
3138     - sigaction(SIGCLD, &act, NULL);
3139     + sigaction(SIGCHLD, &act, NULL);
3140     }
3141    
3142     static const char *pid_file;