Magellan Linux

Annotation of /trunk/kernel-alx/patches-5.4/0166-5.4.67-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3635 - (hide annotations) (download)
Mon Oct 24 12:34:12 2022 UTC (19 months, 3 weeks ago) by niro
File size: 72976 byte(s)
-sync kernel patches
1 niro 3635 diff --git a/Makefile b/Makefile
2     index a3686247e10e9..d2e46ca4c955b 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 5
8     PATCHLEVEL = 4
9     -SUBLEVEL = 66
10     +SUBLEVEL = 67
11     EXTRAVERSION =
12     NAME = Kleptomaniac Octopus
13    
14     diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
15     index 51462c59ab5da..d2e738c455566 100644
16     --- a/arch/arm64/kernel/cpu_errata.c
17     +++ b/arch/arm64/kernel/cpu_errata.c
18     @@ -917,8 +917,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
19     .desc = "ARM erratum 1418040",
20     .capability = ARM64_WORKAROUND_1418040,
21     ERRATA_MIDR_RANGE_LIST(erratum_1418040_list),
22     - .type = (ARM64_CPUCAP_SCOPE_LOCAL_CPU |
23     - ARM64_CPUCAP_PERMITTED_FOR_LATE_CPU),
24     + /*
25     + * We need to allow affected CPUs to come in late, but
26     + * also need the non-affected CPUs to be able to come
27     + * in at any point in time. Wonderful.
28     + */
29     + .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE,
30     },
31     #endif
32     #ifdef CONFIG_ARM64_ERRATUM_1165522
33     diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c
34     index cdc79de0c794a..945e5f690edec 100644
35     --- a/arch/arm64/net/bpf_jit_comp.c
36     +++ b/arch/arm64/net/bpf_jit_comp.c
37     @@ -141,14 +141,17 @@ static inline void emit_addr_mov_i64(const int reg, const u64 val,
38     }
39     }
40    
41     -static inline int bpf2a64_offset(int bpf_to, int bpf_from,
42     +static inline int bpf2a64_offset(int bpf_insn, int off,
43     const struct jit_ctx *ctx)
44     {
45     - int to = ctx->offset[bpf_to];
46     - /* -1 to account for the Branch instruction */
47     - int from = ctx->offset[bpf_from] - 1;
48     -
49     - return to - from;
50     + /* BPF JMP offset is relative to the next instruction */
51     + bpf_insn++;
52     + /*
53     + * Whereas arm64 branch instructions encode the offset
54     + * from the branch itself, so we must subtract 1 from the
55     + * instruction offset.
56     + */
57     + return ctx->offset[bpf_insn + off] - (ctx->offset[bpf_insn] - 1);
58     }
59    
60     static void jit_fill_hole(void *area, unsigned int size)
61     @@ -532,7 +535,7 @@ emit_bswap_uxt:
62    
63     /* JUMP off */
64     case BPF_JMP | BPF_JA:
65     - jmp_offset = bpf2a64_offset(i + off, i, ctx);
66     + jmp_offset = bpf2a64_offset(i, off, ctx);
67     check_imm26(jmp_offset);
68     emit(A64_B(jmp_offset), ctx);
69     break;
70     @@ -559,7 +562,7 @@ emit_bswap_uxt:
71     case BPF_JMP32 | BPF_JSLE | BPF_X:
72     emit(A64_CMP(is64, dst, src), ctx);
73     emit_cond_jmp:
74     - jmp_offset = bpf2a64_offset(i + off, i, ctx);
75     + jmp_offset = bpf2a64_offset(i, off, ctx);
76     check_imm19(jmp_offset);
77     switch (BPF_OP(code)) {
78     case BPF_JEQ:
79     @@ -780,10 +783,21 @@ static int build_body(struct jit_ctx *ctx, bool extra_pass)
80     const struct bpf_prog *prog = ctx->prog;
81     int i;
82    
83     + /*
84     + * - offset[0] offset of the end of prologue,
85     + * start of the 1st instruction.
86     + * - offset[1] - offset of the end of 1st instruction,
87     + * start of the 2nd instruction
88     + * [....]
89     + * - offset[3] - offset of the end of 3rd instruction,
90     + * start of 4th instruction
91     + */
92     for (i = 0; i < prog->len; i++) {
93     const struct bpf_insn *insn = &prog->insnsi[i];
94     int ret;
95    
96     + if (ctx->image == NULL)
97     + ctx->offset[i] = ctx->idx;
98     ret = build_insn(insn, ctx, extra_pass);
99     if (ret > 0) {
100     i++;
101     @@ -791,11 +805,16 @@ static int build_body(struct jit_ctx *ctx, bool extra_pass)
102     ctx->offset[i] = ctx->idx;
103     continue;
104     }
105     - if (ctx->image == NULL)
106     - ctx->offset[i] = ctx->idx;
107     if (ret)
108     return ret;
109     }
110     + /*
111     + * offset is allocated with prog->len + 1 so fill in
112     + * the last element with the offset after the last
113     + * instruction (end of program)
114     + */
115     + if (ctx->image == NULL)
116     + ctx->offset[i] = ctx->idx;
117    
118     return 0;
119     }
120     @@ -871,7 +890,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
121     memset(&ctx, 0, sizeof(ctx));
122     ctx.prog = prog;
123    
124     - ctx.offset = kcalloc(prog->len, sizeof(int), GFP_KERNEL);
125     + ctx.offset = kcalloc(prog->len + 1, sizeof(int), GFP_KERNEL);
126     if (ctx.offset == NULL) {
127     prog = orig_prog;
128     goto out_off;
129     @@ -951,7 +970,7 @@ skip_init_ctx:
130     prog->jited_len = image_size;
131    
132     if (!prog->is_func || extra_pass) {
133     - bpf_prog_fill_jited_linfo(prog, ctx.offset);
134     + bpf_prog_fill_jited_linfo(prog, ctx.offset + 1);
135     out_off:
136     kfree(ctx.offset);
137     kfree(jit_data);
138     diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
139     index e5c2d47608feb..6ecdc690f7336 100644
140     --- a/arch/mips/Kconfig
141     +++ b/arch/mips/Kconfig
142     @@ -862,6 +862,7 @@ config SNI_RM
143     select I8253
144     select I8259
145     select ISA
146     + select MIPS_L1_CACHE_SHIFT_6
147     select SWAP_IO_SPACE if CPU_BIG_ENDIAN
148     select SYS_HAS_CPU_R4X00
149     select SYS_HAS_CPU_R5000
150     diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c
151     index 1109924560d8c..b22a3565e1330 100644
152     --- a/arch/mips/kvm/mips.c
153     +++ b/arch/mips/kvm/mips.c
154     @@ -131,6 +131,8 @@ int kvm_arch_check_processor_compat(void)
155     int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
156     {
157     switch (type) {
158     + case KVM_VM_MIPS_AUTO:
159     + break;
160     #ifdef CONFIG_KVM_MIPS_VZ
161     case KVM_VM_MIPS_VZ:
162     #else
163     diff --git a/arch/mips/sni/a20r.c b/arch/mips/sni/a20r.c
164     index f9407e1704762..c6af7047eb0d2 100644
165     --- a/arch/mips/sni/a20r.c
166     +++ b/arch/mips/sni/a20r.c
167     @@ -143,7 +143,10 @@ static struct platform_device sc26xx_pdev = {
168     },
169     };
170    
171     -static u32 a20r_ack_hwint(void)
172     +/*
173     + * Trigger chipset to update CPU's CAUSE IP field
174     + */
175     +static u32 a20r_update_cause_ip(void)
176     {
177     u32 status = read_c0_status();
178    
179     @@ -205,12 +208,14 @@ static void a20r_hwint(void)
180     int irq;
181    
182     clear_c0_status(IE_IRQ0);
183     - status = a20r_ack_hwint();
184     + status = a20r_update_cause_ip();
185     cause = read_c0_cause();
186    
187     irq = ffs(((cause & status) >> 8) & 0xf8);
188     if (likely(irq > 0))
189     do_IRQ(SNI_A20R_IRQ_BASE + irq - 1);
190     +
191     + a20r_update_cause_ip();
192     set_c0_status(IE_IRQ0);
193     }
194    
195     diff --git a/arch/openrisc/mm/cache.c b/arch/openrisc/mm/cache.c
196     index 08f56af387ac4..534a52ec5e667 100644
197     --- a/arch/openrisc/mm/cache.c
198     +++ b/arch/openrisc/mm/cache.c
199     @@ -16,7 +16,7 @@
200     #include <asm/cacheflush.h>
201     #include <asm/tlbflush.h>
202    
203     -static void cache_loop(struct page *page, const unsigned int reg)
204     +static __always_inline void cache_loop(struct page *page, const unsigned int reg)
205     {
206     unsigned long paddr = page_to_pfn(page) << PAGE_SHIFT;
207     unsigned long line = paddr & ~(L1_CACHE_BYTES - 1);
208     diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
209     index bb3deb76c951b..2f4ddc802fe9d 100644
210     --- a/arch/powerpc/include/asm/book3s/64/mmu.h
211     +++ b/arch/powerpc/include/asm/book3s/64/mmu.h
212     @@ -225,14 +225,14 @@ static inline void early_init_mmu_secondary(void)
213    
214     extern void hash__setup_initial_memory_limit(phys_addr_t first_memblock_base,
215     phys_addr_t first_memblock_size);
216     -extern void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base,
217     - phys_addr_t first_memblock_size);
218     static inline void setup_initial_memory_limit(phys_addr_t first_memblock_base,
219     phys_addr_t first_memblock_size)
220     {
221     - if (early_radix_enabled())
222     - return radix__setup_initial_memory_limit(first_memblock_base,
223     - first_memblock_size);
224     + /*
225     + * Hash has more strict restrictions. At this point we don't
226     + * know which translations we will pick. Hence go with hash
227     + * restrictions.
228     + */
229     return hash__setup_initial_memory_limit(first_memblock_base,
230     first_memblock_size);
231     }
232     diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c
233     index e486d1d78de28..f4cb2c546adbb 100644
234     --- a/arch/powerpc/kernel/dma-iommu.c
235     +++ b/arch/powerpc/kernel/dma-iommu.c
236     @@ -160,7 +160,8 @@ u64 dma_iommu_get_required_mask(struct device *dev)
237     return bypass_mask;
238     }
239    
240     - mask = 1ULL < (fls_long(tbl->it_offset + tbl->it_size) - 1);
241     + mask = 1ULL << (fls_long(tbl->it_offset + tbl->it_size) +
242     + tbl->it_page_shift - 1);
243     mask += mask - 1;
244    
245     return mask;
246     diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
247     index 6ee17d09649c3..770542ccdb468 100644
248     --- a/arch/powerpc/mm/book3s64/radix_pgtable.c
249     +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
250     @@ -643,21 +643,6 @@ void radix__mmu_cleanup_all(void)
251     }
252     }
253    
254     -void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base,
255     - phys_addr_t first_memblock_size)
256     -{
257     - /*
258     - * We don't currently support the first MEMBLOCK not mapping 0
259     - * physical on those processors
260     - */
261     - BUG_ON(first_memblock_base != 0);
262     -
263     - /*
264     - * Radix mode is not limited by RMA / VRMA addressing.
265     - */
266     - ppc64_rma_size = ULONG_MAX;
267     -}
268     -
269     #ifdef CONFIG_MEMORY_HOTPLUG
270     static void free_pte_table(pte_t *pte_start, pmd_t *pmd)
271     {
272     diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
273     index 4e08246acd79a..210f1c28b8e41 100644
274     --- a/arch/powerpc/mm/init_64.c
275     +++ b/arch/powerpc/mm/init_64.c
276     @@ -415,9 +415,16 @@ void __init mmu_early_init_devtree(void)
277     if (!(mfmsr() & MSR_HV))
278     early_check_vec5();
279    
280     - if (early_radix_enabled())
281     + if (early_radix_enabled()) {
282     radix__early_init_devtree();
283     - else
284     + /*
285     + * We have finalized the translation we are going to use by now.
286     + * Radix mode is not limited by RMA / VRMA addressing.
287     + * Hence don't limit memblock allocations.
288     + */
289     + ppc64_rma_size = ULONG_MAX;
290     + memblock_set_current_limit(MEMBLOCK_ALLOC_ANYWHERE);
291     + } else
292     hash__early_init_devtree();
293     }
294     #endif /* CONFIG_PPC_BOOK3S_64 */
295     diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
296     index b1eb6a0411183..d49e334071d45 100644
297     --- a/arch/riscv/mm/init.c
298     +++ b/arch/riscv/mm/init.c
299     @@ -167,12 +167,11 @@ void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot)
300    
301     ptep = &fixmap_pte[pte_index(addr)];
302    
303     - if (pgprot_val(prot)) {
304     + if (pgprot_val(prot))
305     set_pte(ptep, pfn_pte(phys >> PAGE_SHIFT, prot));
306     - } else {
307     + else
308     pte_clear(&init_mm, addr, ptep);
309     - local_flush_tlb_page(addr);
310     - }
311     + local_flush_tlb_page(addr);
312     }
313    
314     static pte_t *__init get_pte_virt(phys_addr_t pa)
315     diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
316     index 98aac5b4bdb7e..292b5bc6e3a30 100644
317     --- a/arch/x86/boot/compressed/Makefile
318     +++ b/arch/x86/boot/compressed/Makefile
319     @@ -38,6 +38,8 @@ KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
320     KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
321     KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
322     KBUILD_CFLAGS += -Wno-pointer-sign
323     +# Disable relocation relaxation in case the link is not PIE.
324     +KBUILD_CFLAGS += $(call as-option,-Wa$(comma)-mrelax-relocations=no)
325    
326     KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
327     GCOV_PROFILE := n
328     diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
329     index 88497bff1135f..ba32adaeefdd0 100644
330     --- a/block/bfq-iosched.c
331     +++ b/block/bfq-iosched.c
332     @@ -5890,18 +5890,6 @@ static void bfq_finish_requeue_request(struct request *rq)
333     struct bfq_queue *bfqq = RQ_BFQQ(rq);
334     struct bfq_data *bfqd;
335    
336     - /*
337     - * Requeue and finish hooks are invoked in blk-mq without
338     - * checking whether the involved request is actually still
339     - * referenced in the scheduler. To handle this fact, the
340     - * following two checks make this function exit in case of
341     - * spurious invocations, for which there is nothing to do.
342     - *
343     - * First, check whether rq has nothing to do with an elevator.
344     - */
345     - if (unlikely(!(rq->rq_flags & RQF_ELVPRIV)))
346     - return;
347     -
348     /*
349     * rq either is not associated with any icq, or is an already
350     * requeued request that has not (yet) been re-inserted into
351     diff --git a/block/blk-mq-sched.h b/block/blk-mq-sched.h
352     index 126021fc3a11f..e81ca1bf6e10b 100644
353     --- a/block/blk-mq-sched.h
354     +++ b/block/blk-mq-sched.h
355     @@ -66,7 +66,7 @@ static inline void blk_mq_sched_requeue_request(struct request *rq)
356     struct request_queue *q = rq->q;
357     struct elevator_queue *e = q->elevator;
358    
359     - if (e && e->type->ops.requeue_request)
360     + if ((rq->rq_flags & RQF_ELVPRIV) && e && e->type->ops.requeue_request)
361     e->type->ops.requeue_request(rq);
362     }
363    
364     diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h
365     index 7ecd590e67fe1..9bef6c35f344a 100644
366     --- a/drivers/base/firmware_loader/firmware.h
367     +++ b/drivers/base/firmware_loader/firmware.h
368     @@ -139,10 +139,12 @@ int assign_fw(struct firmware *fw, struct device *device,
369     void fw_free_paged_buf(struct fw_priv *fw_priv);
370     int fw_grow_paged_buf(struct fw_priv *fw_priv, int pages_needed);
371     int fw_map_paged_buf(struct fw_priv *fw_priv);
372     +bool fw_is_paged_buf(struct fw_priv *fw_priv);
373     #else
374     static inline void fw_free_paged_buf(struct fw_priv *fw_priv) {}
375     static inline int fw_grow_paged_buf(struct fw_priv *fw_priv, int pages_needed) { return -ENXIO; }
376     static inline int fw_map_paged_buf(struct fw_priv *fw_priv) { return -ENXIO; }
377     +static inline bool fw_is_paged_buf(struct fw_priv *fw_priv) { return false; }
378     #endif
379    
380     #endif /* __FIRMWARE_LOADER_H */
381     diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
382     index bf44c79beae92..95d21b4af9045 100644
383     --- a/drivers/base/firmware_loader/main.c
384     +++ b/drivers/base/firmware_loader/main.c
385     @@ -252,9 +252,11 @@ static void __free_fw_priv(struct kref *ref)
386     list_del(&fw_priv->list);
387     spin_unlock(&fwc->lock);
388    
389     - fw_free_paged_buf(fw_priv); /* free leftover pages */
390     - if (!fw_priv->allocated_size)
391     + if (fw_is_paged_buf(fw_priv))
392     + fw_free_paged_buf(fw_priv);
393     + else if (!fw_priv->allocated_size)
394     vfree(fw_priv->data);
395     +
396     kfree_const(fw_priv->fw_name);
397     kfree(fw_priv);
398     }
399     @@ -268,6 +270,11 @@ static void free_fw_priv(struct fw_priv *fw_priv)
400     }
401    
402     #ifdef CONFIG_FW_LOADER_PAGED_BUF
403     +bool fw_is_paged_buf(struct fw_priv *fw_priv)
404     +{
405     + return fw_priv->is_paged_buf;
406     +}
407     +
408     void fw_free_paged_buf(struct fw_priv *fw_priv)
409     {
410     int i;
411     @@ -275,6 +282,8 @@ void fw_free_paged_buf(struct fw_priv *fw_priv)
412     if (!fw_priv->pages)
413     return;
414    
415     + vunmap(fw_priv->data);
416     +
417     for (i = 0; i < fw_priv->nr_pages; i++)
418     __free_page(fw_priv->pages[i]);
419     kvfree(fw_priv->pages);
420     @@ -328,10 +337,6 @@ int fw_map_paged_buf(struct fw_priv *fw_priv)
421     if (!fw_priv->data)
422     return -ENOMEM;
423    
424     - /* page table is no longer needed after mapping, let's free */
425     - kvfree(fw_priv->pages);
426     - fw_priv->pages = NULL;
427     -
428     return 0;
429     }
430     #endif
431     diff --git a/drivers/clk/davinci/pll.c b/drivers/clk/davinci/pll.c
432     index 1ac11b6a47a37..2ec48d030fda7 100644
433     --- a/drivers/clk/davinci/pll.c
434     +++ b/drivers/clk/davinci/pll.c
435     @@ -491,7 +491,7 @@ struct clk *davinci_pll_clk_register(struct device *dev,
436     parent_name = postdiv_name;
437     }
438    
439     - pllen = kzalloc(sizeof(*pllout), GFP_KERNEL);
440     + pllen = kzalloc(sizeof(*pllen), GFP_KERNEL);
441     if (!pllen) {
442     ret = -ENOMEM;
443     goto err_unregister_postdiv;
444     diff --git a/drivers/clk/rockchip/clk-rk3228.c b/drivers/clk/rockchip/clk-rk3228.c
445     index d7243c09cc843..47d6482dda9df 100644
446     --- a/drivers/clk/rockchip/clk-rk3228.c
447     +++ b/drivers/clk/rockchip/clk-rk3228.c
448     @@ -137,7 +137,7 @@ PNAME(mux_usb480m_p) = { "usb480m_phy", "xin24m" };
449     PNAME(mux_hdmiphy_p) = { "hdmiphy_phy", "xin24m" };
450     PNAME(mux_aclk_cpu_src_p) = { "cpll_aclk_cpu", "gpll_aclk_cpu", "hdmiphy_aclk_cpu" };
451    
452     -PNAME(mux_pll_src_4plls_p) = { "cpll", "gpll", "hdmiphy" "usb480m" };
453     +PNAME(mux_pll_src_4plls_p) = { "cpll", "gpll", "hdmiphy", "usb480m" };
454     PNAME(mux_pll_src_3plls_p) = { "cpll", "gpll", "hdmiphy" };
455     PNAME(mux_pll_src_2plls_p) = { "cpll", "gpll" };
456     PNAME(mux_sclk_hdmi_cec_p) = { "cpll", "gpll", "xin24m" };
457     diff --git a/drivers/dax/super.c b/drivers/dax/super.c
458     index 26a654dbc69a2..b936852881871 100644
459     --- a/drivers/dax/super.c
460     +++ b/drivers/dax/super.c
461     @@ -318,11 +318,15 @@ EXPORT_SYMBOL_GPL(dax_direct_access);
462     bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
463     int blocksize, sector_t start, sector_t len)
464     {
465     + if (!dax_dev)
466     + return false;
467     +
468     if (!dax_alive(dax_dev))
469     return false;
470    
471     return dax_dev->ops->dax_supported(dax_dev, bdev, blocksize, start, len);
472     }
473     +EXPORT_SYMBOL_GPL(dax_supported);
474    
475     size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
476     size_t bytes, struct iov_iter *i)
477     diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
478     index 6a88db291252b..b3fd6ff665dae 100644
479     --- a/drivers/gpu/drm/i915/i915_sw_fence.c
480     +++ b/drivers/gpu/drm/i915/i915_sw_fence.c
481     @@ -158,9 +158,13 @@ static void __i915_sw_fence_wake_up_all(struct i915_sw_fence *fence,
482    
483     do {
484     list_for_each_entry_safe(pos, next, &x->head, entry) {
485     - pos->func(pos,
486     - TASK_NORMAL, fence->error,
487     - &extra);
488     + int wake_flags;
489     +
490     + wake_flags = fence->error;
491     + if (pos->func == autoremove_wake_function)
492     + wake_flags = 0;
493     +
494     + pos->func(pos, TASK_NORMAL, wake_flags, &extra);
495     }
496    
497     if (list_empty(&extra))
498     diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
499     index 352b81a7a6702..f98bb2e263723 100644
500     --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
501     +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
502     @@ -594,8 +594,13 @@ err_pm:
503     pm_runtime_disable(dev);
504     err_node:
505     of_node_put(private->mutex_node);
506     - for (i = 0; i < DDP_COMPONENT_ID_MAX; i++)
507     + for (i = 0; i < DDP_COMPONENT_ID_MAX; i++) {
508     of_node_put(private->comp_node[i]);
509     + if (private->ddp_comp[i]) {
510     + put_device(private->ddp_comp[i]->larb_dev);
511     + private->ddp_comp[i] = NULL;
512     + }
513     + }
514     return ret;
515     }
516    
517     diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
518     index ce91b61364eb6..6b22fd63c3f55 100644
519     --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
520     +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
521     @@ -1482,25 +1482,30 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
522     dev_err(dev,
523     "Failed to get system configuration registers: %d\n",
524     ret);
525     - return ret;
526     + goto put_device;
527     }
528     hdmi->sys_regmap = regmap;
529    
530     mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
531     hdmi->regs = devm_ioremap_resource(dev, mem);
532     - if (IS_ERR(hdmi->regs))
533     - return PTR_ERR(hdmi->regs);
534     + if (IS_ERR(hdmi->regs)) {
535     + ret = PTR_ERR(hdmi->regs);
536     + goto put_device;
537     + }
538    
539     remote = of_graph_get_remote_node(np, 1, 0);
540     - if (!remote)
541     - return -EINVAL;
542     + if (!remote) {
543     + ret = -EINVAL;
544     + goto put_device;
545     + }
546    
547     if (!of_device_is_compatible(remote, "hdmi-connector")) {
548     hdmi->next_bridge = of_drm_find_bridge(remote);
549     if (!hdmi->next_bridge) {
550     dev_err(dev, "Waiting for external bridge\n");
551     of_node_put(remote);
552     - return -EPROBE_DEFER;
553     + ret = -EPROBE_DEFER;
554     + goto put_device;
555     }
556     }
557    
558     @@ -1509,7 +1514,8 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
559     dev_err(dev, "Failed to find ddc-i2c-bus node in %pOF\n",
560     remote);
561     of_node_put(remote);
562     - return -EINVAL;
563     + ret = -EINVAL;
564     + goto put_device;
565     }
566     of_node_put(remote);
567    
568     @@ -1517,10 +1523,14 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
569     of_node_put(i2c_np);
570     if (!hdmi->ddc_adpt) {
571     dev_err(dev, "Failed to get ddc i2c adapter by node\n");
572     - return -EINVAL;
573     + ret = -EINVAL;
574     + goto put_device;
575     }
576    
577     return 0;
578     +put_device:
579     + put_device(hdmi->cec_dev);
580     + return ret;
581     }
582    
583     /*
584     diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
585     index 501c43c5851dc..452307c79e4b9 100644
586     --- a/drivers/hv/channel_mgmt.c
587     +++ b/drivers/hv/channel_mgmt.c
588     @@ -769,7 +769,7 @@ static void vmbus_wait_for_unload(void)
589     void *page_addr;
590     struct hv_message *msg;
591     struct vmbus_channel_message_header *hdr;
592     - u32 message_type;
593     + u32 message_type, i;
594    
595     /*
596     * CHANNELMSG_UNLOAD_RESPONSE is always delivered to the CPU which was
597     @@ -779,8 +779,11 @@ static void vmbus_wait_for_unload(void)
598     * functional and vmbus_unload_response() will complete
599     * vmbus_connection.unload_event. If not, the last thing we can do is
600     * read message pages for all CPUs directly.
601     + *
602     + * Wait no more than 10 seconds so that the panic path can't get
603     + * hung forever in case the response message isn't seen.
604     */
605     - while (1) {
606     + for (i = 0; i < 1000; i++) {
607     if (completion_done(&vmbus_connection.unload_event))
608     break;
609    
610     diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
611     index 24c38e44ed3bc..2d2568dac2a66 100644
612     --- a/drivers/hv/vmbus_drv.c
613     +++ b/drivers/hv/vmbus_drv.c
614     @@ -2231,7 +2231,10 @@ static int vmbus_bus_suspend(struct device *dev)
615     if (atomic_read(&vmbus_connection.nr_chan_close_on_suspend) > 0)
616     wait_for_completion(&vmbus_connection.ready_for_suspend_event);
617    
618     - WARN_ON(atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) != 0);
619     + if (atomic_read(&vmbus_connection.nr_chan_fixup_on_resume) != 0) {
620     + pr_err("Can not suspend due to a previous failed resuming\n");
621     + return -EBUSY;
622     + }
623    
624     mutex_lock(&vmbus_connection.channel_mutex);
625    
626     @@ -2305,7 +2308,9 @@ static int vmbus_bus_resume(struct device *dev)
627    
628     vmbus_request_offers();
629    
630     - wait_for_completion(&vmbus_connection.ready_for_resume_event);
631     + if (wait_for_completion_timeout(
632     + &vmbus_connection.ready_for_resume_event, 10 * HZ) == 0)
633     + pr_err("Some vmbus device is missing after suspending?\n");
634    
635     /* Reset the event for the next suspend. */
636     reinit_completion(&vmbus_connection.ready_for_suspend_event);
637     diff --git a/drivers/i2c/algos/i2c-algo-pca.c b/drivers/i2c/algos/i2c-algo-pca.c
638     index 8ea850eed18f7..1d3691a049b16 100644
639     --- a/drivers/i2c/algos/i2c-algo-pca.c
640     +++ b/drivers/i2c/algos/i2c-algo-pca.c
641     @@ -41,8 +41,22 @@ static void pca_reset(struct i2c_algo_pca_data *adap)
642     pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IPRESET);
643     pca_outw(adap, I2C_PCA_IND, 0xA5);
644     pca_outw(adap, I2C_PCA_IND, 0x5A);
645     +
646     + /*
647     + * After a reset we need to re-apply any configuration
648     + * (calculated in pca_init) to get the bus in a working state.
649     + */
650     + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IMODE);
651     + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.mode);
652     + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLL);
653     + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.tlow);
654     + pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLH);
655     + pca_outw(adap, I2C_PCA_IND, adap->bus_settings.thi);
656     +
657     + pca_set_con(adap, I2C_PCA_CON_ENSIO);
658     } else {
659     adap->reset_chip(adap->data);
660     + pca_set_con(adap, I2C_PCA_CON_ENSIO | adap->bus_settings.clock_freq);
661     }
662     }
663    
664     @@ -423,13 +437,14 @@ static int pca_init(struct i2c_adapter *adap)
665     " Use the nominal frequency.\n", adap->name);
666     }
667    
668     - pca_reset(pca_data);
669     -
670     clock = pca_clock(pca_data);
671     printk(KERN_INFO "%s: Clock frequency is %dkHz\n",
672     adap->name, freqs[clock]);
673    
674     - pca_set_con(pca_data, I2C_PCA_CON_ENSIO | clock);
675     + /* Store settings as these will be needed when the PCA chip is reset */
676     + pca_data->bus_settings.clock_freq = clock;
677     +
678     + pca_reset(pca_data);
679     } else {
680     int clock;
681     int mode;
682     @@ -496,19 +511,15 @@ static int pca_init(struct i2c_adapter *adap)
683     thi = tlow * min_thi / min_tlow;
684     }
685    
686     + /* Store settings as these will be needed when the PCA chip is reset */
687     + pca_data->bus_settings.mode = mode;
688     + pca_data->bus_settings.tlow = tlow;
689     + pca_data->bus_settings.thi = thi;
690     +
691     pca_reset(pca_data);
692    
693     printk(KERN_INFO
694     "%s: Clock frequency is %dHz\n", adap->name, clock * 100);
695     -
696     - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_IMODE);
697     - pca_outw(pca_data, I2C_PCA_IND, mode);
698     - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_ISCLL);
699     - pca_outw(pca_data, I2C_PCA_IND, tlow);
700     - pca_outw(pca_data, I2C_PCA_INDPTR, I2C_PCA_ISCLH);
701     - pca_outw(pca_data, I2C_PCA_IND, thi);
702     -
703     - pca_set_con(pca_data, I2C_PCA_CON_ENSIO);
704     }
705     udelay(500); /* 500 us for oscillator to stabilise */
706    
707     diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
708     index 3ff6fbd79b127..9a80c3c7e8af2 100644
709     --- a/drivers/i2c/busses/i2c-i801.c
710     +++ b/drivers/i2c/busses/i2c-i801.c
711     @@ -1688,6 +1688,16 @@ static inline int i801_acpi_probe(struct i801_priv *priv) { return 0; }
712     static inline void i801_acpi_remove(struct i801_priv *priv) { }
713     #endif
714    
715     +static unsigned char i801_setup_hstcfg(struct i801_priv *priv)
716     +{
717     + unsigned char hstcfg = priv->original_hstcfg;
718     +
719     + hstcfg &= ~SMBHSTCFG_I2C_EN; /* SMBus timing */
720     + hstcfg |= SMBHSTCFG_HST_EN;
721     + pci_write_config_byte(priv->pci_dev, SMBHSTCFG, hstcfg);
722     + return hstcfg;
723     +}
724     +
725     static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
726     {
727     unsigned char temp;
728     @@ -1804,14 +1814,10 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
729     return err;
730     }
731    
732     - pci_read_config_byte(priv->pci_dev, SMBHSTCFG, &temp);
733     - priv->original_hstcfg = temp;
734     - temp &= ~SMBHSTCFG_I2C_EN; /* SMBus timing */
735     - if (!(temp & SMBHSTCFG_HST_EN)) {
736     + pci_read_config_byte(priv->pci_dev, SMBHSTCFG, &priv->original_hstcfg);
737     + temp = i801_setup_hstcfg(priv);
738     + if (!(priv->original_hstcfg & SMBHSTCFG_HST_EN))
739     dev_info(&dev->dev, "Enabling SMBus device\n");
740     - temp |= SMBHSTCFG_HST_EN;
741     - }
742     - pci_write_config_byte(priv->pci_dev, SMBHSTCFG, temp);
743    
744     if (temp & SMBHSTCFG_SMB_SMI_EN) {
745     dev_dbg(&dev->dev, "SMBus using interrupt SMI#\n");
746     @@ -1937,6 +1943,7 @@ static int i801_resume(struct device *dev)
747     {
748     struct i801_priv *priv = dev_get_drvdata(dev);
749    
750     + i801_setup_hstcfg(priv);
751     i801_enable_host_notify(&priv->adapter);
752    
753     return 0;
754     diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
755     index 89224913f578b..081a1169ecea3 100644
756     --- a/drivers/i2c/busses/i2c-mxs.c
757     +++ b/drivers/i2c/busses/i2c-mxs.c
758     @@ -25,6 +25,7 @@
759     #include <linux/of_device.h>
760     #include <linux/dma-mapping.h>
761     #include <linux/dmaengine.h>
762     +#include <linux/dma/mxs-dma.h>
763    
764     #define DRIVER_NAME "mxs-i2c"
765    
766     @@ -200,7 +201,8 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
767     dma_map_sg(i2c->dev, &i2c->sg_io[0], 1, DMA_TO_DEVICE);
768     desc = dmaengine_prep_slave_sg(i2c->dmach, &i2c->sg_io[0], 1,
769     DMA_MEM_TO_DEV,
770     - DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
771     + DMA_PREP_INTERRUPT |
772     + MXS_DMA_CTRL_WAIT4END);
773     if (!desc) {
774     dev_err(i2c->dev,
775     "Failed to get DMA data write descriptor.\n");
776     @@ -228,7 +230,8 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
777     dma_map_sg(i2c->dev, &i2c->sg_io[1], 1, DMA_FROM_DEVICE);
778     desc = dmaengine_prep_slave_sg(i2c->dmach, &i2c->sg_io[1], 1,
779     DMA_DEV_TO_MEM,
780     - DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
781     + DMA_PREP_INTERRUPT |
782     + MXS_DMA_CTRL_WAIT4END);
783     if (!desc) {
784     dev_err(i2c->dev,
785     "Failed to get DMA data write descriptor.\n");
786     @@ -260,7 +263,8 @@ static int mxs_i2c_dma_setup_xfer(struct i2c_adapter *adap,
787     dma_map_sg(i2c->dev, i2c->sg_io, 2, DMA_TO_DEVICE);
788     desc = dmaengine_prep_slave_sg(i2c->dmach, i2c->sg_io, 2,
789     DMA_MEM_TO_DEV,
790     - DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
791     + DMA_PREP_INTERRUPT |
792     + MXS_DMA_CTRL_WAIT4END);
793     if (!desc) {
794     dev_err(i2c->dev,
795     "Failed to get DMA data write descriptor.\n");
796     diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.c b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
797     index 40296b97d21e6..079aaaaffec7a 100644
798     --- a/drivers/infiniband/hw/bnxt_re/qplib_sp.c
799     +++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
800     @@ -152,7 +152,7 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
801     attr->max_inline_data = le32_to_cpu(sb->max_inline_data);
802     attr->l2_db_size = (sb->l2_db_space_size + 1) *
803     (0x01 << RCFW_DBR_BASE_PAGE_SHIFT);
804     - attr->max_sgid = le32_to_cpu(sb->max_gid);
805     + attr->max_sgid = BNXT_QPLIB_NUM_GIDS_SUPPORTED;
806    
807     bnxt_qplib_query_version(rcfw, attr->fw_ver);
808    
809     diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.h b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
810     index 13d9432d5ce22..194f5ef45ca63 100644
811     --- a/drivers/infiniband/hw/bnxt_re/qplib_sp.h
812     +++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
813     @@ -47,6 +47,7 @@
814     struct bnxt_qplib_dev_attr {
815     #define FW_VER_ARR_LEN 4
816     u8 fw_ver[FW_VER_ARR_LEN];
817     +#define BNXT_QPLIB_NUM_GIDS_SUPPORTED 256
818     u16 max_sgid;
819     u16 max_mrw;
820     u32 max_qp;
821     diff --git a/drivers/input/mouse/trackpoint.c b/drivers/input/mouse/trackpoint.c
822     index 3eefee2ee2a12..854d5e7587241 100644
823     --- a/drivers/input/mouse/trackpoint.c
824     +++ b/drivers/input/mouse/trackpoint.c
825     @@ -17,10 +17,12 @@
826     #include "trackpoint.h"
827    
828     static const char * const trackpoint_variants[] = {
829     - [TP_VARIANT_IBM] = "IBM",
830     - [TP_VARIANT_ALPS] = "ALPS",
831     - [TP_VARIANT_ELAN] = "Elan",
832     - [TP_VARIANT_NXP] = "NXP",
833     + [TP_VARIANT_IBM] = "IBM",
834     + [TP_VARIANT_ALPS] = "ALPS",
835     + [TP_VARIANT_ELAN] = "Elan",
836     + [TP_VARIANT_NXP] = "NXP",
837     + [TP_VARIANT_JYT_SYNAPTICS] = "JYT_Synaptics",
838     + [TP_VARIANT_SYNAPTICS] = "Synaptics",
839     };
840    
841     /*
842     diff --git a/drivers/input/mouse/trackpoint.h b/drivers/input/mouse/trackpoint.h
843     index 5cb93ed260856..eb5412904fe07 100644
844     --- a/drivers/input/mouse/trackpoint.h
845     +++ b/drivers/input/mouse/trackpoint.h
846     @@ -24,10 +24,12 @@
847     * 0x01 was the original IBM trackpoint, others implement very limited
848     * subset of trackpoint features.
849     */
850     -#define TP_VARIANT_IBM 0x01
851     -#define TP_VARIANT_ALPS 0x02
852     -#define TP_VARIANT_ELAN 0x03
853     -#define TP_VARIANT_NXP 0x04
854     +#define TP_VARIANT_IBM 0x01
855     +#define TP_VARIANT_ALPS 0x02
856     +#define TP_VARIANT_ELAN 0x03
857     +#define TP_VARIANT_NXP 0x04
858     +#define TP_VARIANT_JYT_SYNAPTICS 0x05
859     +#define TP_VARIANT_SYNAPTICS 0x06
860    
861     /*
862     * Commands
863     diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
864     index 858a263021988..42771b9b10a00 100644
865     --- a/drivers/input/serio/i8042-x86ia64io.h
866     +++ b/drivers/input/serio/i8042-x86ia64io.h
867     @@ -548,6 +548,14 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
868     DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5738"),
869     },
870     },
871     + {
872     + /* Entroware Proteus */
873     + .matches = {
874     + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"),
875     + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"),
876     + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"),
877     + },
878     + },
879     { }
880     };
881    
882     @@ -676,6 +684,14 @@ static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
883     DMI_MATCH(DMI_PRODUCT_NAME, "33474HU"),
884     },
885     },
886     + {
887     + /* Entroware Proteus */
888     + .matches = {
889     + DMI_MATCH(DMI_SYS_VENDOR, "Entroware"),
890     + DMI_MATCH(DMI_PRODUCT_NAME, "Proteus"),
891     + DMI_MATCH(DMI_PRODUCT_VERSION, "EL07R4"),
892     + },
893     + },
894     { }
895     };
896    
897     diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
898     index cdafc652d9d1a..fa91d856a43ee 100644
899     --- a/drivers/iommu/amd_iommu.c
900     +++ b/drivers/iommu/amd_iommu.c
901     @@ -4431,12 +4431,14 @@ int amd_iommu_deactivate_guest_mode(void *data)
902     struct amd_ir_data *ir_data = (struct amd_ir_data *)data;
903     struct irte_ga *entry = (struct irte_ga *) ir_data->entry;
904     struct irq_cfg *cfg = ir_data->cfg;
905     - u64 valid = entry->lo.fields_remap.valid;
906     + u64 valid;
907    
908     if (!AMD_IOMMU_GUEST_IR_VAPIC(amd_iommu_guest_ir) ||
909     !entry || !entry->lo.fields_vapic.guest_mode)
910     return 0;
911    
912     + valid = entry->lo.fields_remap.valid;
913     +
914     entry->lo.val = 0;
915     entry->hi.val = 0;
916    
917     diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
918     index 52e049554f5cd..edc3660759131 100644
919     --- a/drivers/md/dm-table.c
920     +++ b/drivers/md/dm-table.c
921     @@ -882,10 +882,14 @@ EXPORT_SYMBOL_GPL(dm_table_set_type);
922     int device_supports_dax(struct dm_target *ti, struct dm_dev *dev,
923     sector_t start, sector_t len, void *data)
924     {
925     - int blocksize = *(int *) data;
926     + int blocksize = *(int *) data, id;
927     + bool rc;
928    
929     - return generic_fsdax_supported(dev->dax_dev, dev->bdev, blocksize,
930     - start, len);
931     + id = dax_read_lock();
932     + rc = dax_supported(dev->dax_dev, dev->bdev, blocksize, start, len);
933     + dax_read_unlock(id);
934     +
935     + return rc;
936     }
937    
938     /* Check devices support synchronous DAX */
939     diff --git a/drivers/md/dm.c b/drivers/md/dm.c
940     index 67da442cbab12..63d59e2ed1582 100644
941     --- a/drivers/md/dm.c
942     +++ b/drivers/md/dm.c
943     @@ -1112,15 +1112,16 @@ static bool dm_dax_supported(struct dax_device *dax_dev, struct block_device *bd
944     {
945     struct mapped_device *md = dax_get_private(dax_dev);
946     struct dm_table *map;
947     + bool ret = false;
948     int srcu_idx;
949     - bool ret;
950    
951     map = dm_get_live_table(md, &srcu_idx);
952     if (!map)
953     - return false;
954     + goto out;
955    
956     ret = dm_table_supports_dax(map, device_supports_dax, &blocksize);
957    
958     +out:
959     dm_put_live_table(md, srcu_idx);
960    
961     return ret;
962     diff --git a/drivers/net/ethernet/intel/e1000e/hw.h b/drivers/net/ethernet/intel/e1000e/hw.h
963     index eff75bd8a8f0b..11fdc27faa82b 100644
964     --- a/drivers/net/ethernet/intel/e1000e/hw.h
965     +++ b/drivers/net/ethernet/intel/e1000e/hw.h
966     @@ -86,6 +86,12 @@ struct e1000_hw;
967     #define E1000_DEV_ID_PCH_ICP_I219_V8 0x15E0
968     #define E1000_DEV_ID_PCH_ICP_I219_LM9 0x15E1
969     #define E1000_DEV_ID_PCH_ICP_I219_V9 0x15E2
970     +#define E1000_DEV_ID_PCH_CMP_I219_LM10 0x0D4E
971     +#define E1000_DEV_ID_PCH_CMP_I219_V10 0x0D4F
972     +#define E1000_DEV_ID_PCH_CMP_I219_LM11 0x0D4C
973     +#define E1000_DEV_ID_PCH_CMP_I219_V11 0x0D4D
974     +#define E1000_DEV_ID_PCH_CMP_I219_LM12 0x0D53
975     +#define E1000_DEV_ID_PCH_CMP_I219_V12 0x0D55
976    
977     #define E1000_REVISION_4 4
978    
979     diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
980     index 1ec33c6144742..4cb05a31e66df 100644
981     --- a/drivers/net/ethernet/intel/e1000e/netdev.c
982     +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
983     @@ -7568,6 +7568,12 @@ static const struct pci_device_id e1000_pci_tbl[] = {
984     { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ICP_I219_V8), board_pch_cnp },
985     { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ICP_I219_LM9), board_pch_cnp },
986     { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ICP_I219_V9), board_pch_cnp },
987     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM10), board_pch_cnp },
988     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V10), board_pch_cnp },
989     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM11), board_pch_cnp },
990     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V11), board_pch_cnp },
991     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_LM12), board_pch_spt },
992     + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_CMP_I219_V12), board_pch_spt },
993    
994     { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */
995     };
996     diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
997     index 42eb7a7ecd96b..362b7ca6f3b2a 100644
998     --- a/drivers/net/hyperv/netvsc_drv.c
999     +++ b/drivers/net/hyperv/netvsc_drv.c
1000     @@ -366,7 +366,7 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
1001     }
1002     rcu_read_unlock();
1003    
1004     - while (unlikely(txq >= ndev->real_num_tx_queues))
1005     + while (txq >= ndev->real_num_tx_queues)
1006     txq -= ndev->real_num_tx_queues;
1007    
1008     return txq;
1009     diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
1010     index dce4d6782ceb1..dae050d1f814d 100644
1011     --- a/drivers/nvme/host/fc.c
1012     +++ b/drivers/nvme/host/fc.c
1013     @@ -1820,6 +1820,7 @@ nvme_fc_term_aen_ops(struct nvme_fc_ctrl *ctrl)
1014     struct nvme_fc_fcp_op *aen_op;
1015     int i;
1016    
1017     + cancel_work_sync(&ctrl->ctrl.async_event_work);
1018     aen_op = ctrl->aen_ops;
1019     for (i = 0; i < NVME_NR_AEN_COMMANDS; i++, aen_op++) {
1020     if (!aen_op->fcp_req.private)
1021     diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
1022     index f0847f2bb117b..f9444272f861e 100644
1023     --- a/drivers/nvme/host/rdma.c
1024     +++ b/drivers/nvme/host/rdma.c
1025     @@ -769,6 +769,7 @@ static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl,
1026     blk_mq_free_tag_set(ctrl->ctrl.admin_tagset);
1027     }
1028     if (ctrl->async_event_sqe.data) {
1029     + cancel_work_sync(&ctrl->ctrl.async_event_work);
1030     nvme_rdma_free_qe(ctrl->device->dev, &ctrl->async_event_sqe,
1031     sizeof(struct nvme_command), DMA_TO_DEVICE);
1032     ctrl->async_event_sqe.data = NULL;
1033     diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
1034     index 9b81763b44d99..c782005ee99f9 100644
1035     --- a/drivers/nvme/host/tcp.c
1036     +++ b/drivers/nvme/host/tcp.c
1037     @@ -1507,6 +1507,7 @@ static struct blk_mq_tag_set *nvme_tcp_alloc_tagset(struct nvme_ctrl *nctrl,
1038     static void nvme_tcp_free_admin_queue(struct nvme_ctrl *ctrl)
1039     {
1040     if (to_tcp_ctrl(ctrl)->async_req.pdu) {
1041     + cancel_work_sync(&ctrl->async_event_work);
1042     nvme_tcp_free_async_req(to_tcp_ctrl(ctrl));
1043     to_tcp_ctrl(ctrl)->async_req.pdu = NULL;
1044     }
1045     diff --git a/drivers/rapidio/Kconfig b/drivers/rapidio/Kconfig
1046     index 677d1aff61b7f..788e7830771be 100644
1047     --- a/drivers/rapidio/Kconfig
1048     +++ b/drivers/rapidio/Kconfig
1049     @@ -37,7 +37,7 @@ config RAPIDIO_ENABLE_RX_TX_PORTS
1050     config RAPIDIO_DMA_ENGINE
1051     bool "DMA Engine support for RapidIO"
1052     depends on RAPIDIO
1053     - select DMADEVICES
1054     + depends on DMADEVICES
1055     select DMA_ENGINE
1056     help
1057     Say Y here if you want to use DMA Engine frameork for RapidIO data
1058     diff --git a/drivers/regulator/pwm-regulator.c b/drivers/regulator/pwm-regulator.c
1059     index e74e11101fc15..0a9d61a91f436 100644
1060     --- a/drivers/regulator/pwm-regulator.c
1061     +++ b/drivers/regulator/pwm-regulator.c
1062     @@ -279,7 +279,7 @@ static int pwm_regulator_init_table(struct platform_device *pdev,
1063     return ret;
1064     }
1065    
1066     - drvdata->state = -EINVAL;
1067     + drvdata->state = -ENOTRECOVERABLE;
1068     drvdata->duty_cycle_table = duty_cycle_table;
1069     drvdata->desc.ops = &pwm_regulator_voltage_table_ops;
1070     drvdata->desc.n_voltages = length / sizeof(*duty_cycle_table);
1071     diff --git a/drivers/s390/crypto/zcrypt_ccamisc.c b/drivers/s390/crypto/zcrypt_ccamisc.c
1072     index 110fe9d0cb910..03999b06affd4 100644
1073     --- a/drivers/s390/crypto/zcrypt_ccamisc.c
1074     +++ b/drivers/s390/crypto/zcrypt_ccamisc.c
1075     @@ -1684,9 +1684,9 @@ int cca_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain,
1076     *nr_apqns = 0;
1077    
1078     /* fetch status of all crypto cards */
1079     - device_status = kmalloc_array(MAX_ZDEV_ENTRIES_EXT,
1080     - sizeof(struct zcrypt_device_status_ext),
1081     - GFP_KERNEL);
1082     + device_status = kvmalloc_array(MAX_ZDEV_ENTRIES_EXT,
1083     + sizeof(struct zcrypt_device_status_ext),
1084     + GFP_KERNEL);
1085     if (!device_status)
1086     return -ENOMEM;
1087     zcrypt_device_status_mask_ext(device_status);
1088     @@ -1754,7 +1754,7 @@ int cca_findcard2(u32 **apqns, u32 *nr_apqns, u16 cardnr, u16 domain,
1089     verify = 0;
1090     }
1091    
1092     - kfree(device_status);
1093     + kvfree(device_status);
1094     return rc;
1095     }
1096     EXPORT_SYMBOL(cca_findcard2);
1097     diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
1098     index e00dc4693fcbd..589ddf003886e 100644
1099     --- a/drivers/scsi/libfc/fc_disc.c
1100     +++ b/drivers/scsi/libfc/fc_disc.c
1101     @@ -634,8 +634,6 @@ free_fp:
1102     fc_frame_free(fp);
1103     out:
1104     kref_put(&rdata->kref, fc_rport_destroy);
1105     - if (!IS_ERR(fp))
1106     - fc_frame_free(fp);
1107     }
1108    
1109     /**
1110     diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c
1111     index d7302c2052f91..10975f3f7ff65 100644
1112     --- a/drivers/scsi/libsas/sas_discover.c
1113     +++ b/drivers/scsi/libsas/sas_discover.c
1114     @@ -182,10 +182,11 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
1115     pr_warn("driver on host %s cannot handle device %llx, error:%d\n",
1116     dev_name(sas_ha->dev),
1117     SAS_ADDR(dev->sas_addr), res);
1118     + return res;
1119     }
1120     set_bit(SAS_DEV_FOUND, &dev->state);
1121     kref_get(&dev->kref);
1122     - return res;
1123     + return 0;
1124     }
1125    
1126    
1127     diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
1128     index 94d8f28341009..4e994a693e3f5 100644
1129     --- a/drivers/scsi/lpfc/lpfc_els.c
1130     +++ b/drivers/scsi/lpfc/lpfc_els.c
1131     @@ -4442,7 +4442,9 @@ lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
1132     out:
1133     if (ndlp && NLP_CHK_NODE_ACT(ndlp) && shost) {
1134     spin_lock_irq(shost->host_lock);
1135     - ndlp->nlp_flag &= ~(NLP_ACC_REGLOGIN | NLP_RM_DFLT_RPI);
1136     + if (mbox)
1137     + ndlp->nlp_flag &= ~NLP_ACC_REGLOGIN;
1138     + ndlp->nlp_flag &= ~NLP_RM_DFLT_RPI;
1139     spin_unlock_irq(shost->host_lock);
1140    
1141     /* If the node is not being used by another discovery thread,
1142     diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c
1143     index 7e48154e11c36..027bf5b2981b9 100644
1144     --- a/drivers/scsi/pm8001/pm8001_sas.c
1145     +++ b/drivers/scsi/pm8001/pm8001_sas.c
1146     @@ -816,7 +816,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
1147    
1148     res = pm8001_tag_alloc(pm8001_ha, &ccb_tag);
1149     if (res)
1150     - return res;
1151     + goto ex_err;
1152     ccb = &pm8001_ha->ccb_info[ccb_tag];
1153     ccb->device = pm8001_dev;
1154     ccb->ccb_tag = ccb_tag;
1155     diff --git a/drivers/spi/spi-loopback-test.c b/drivers/spi/spi-loopback-test.c
1156     index 6f18d49527673..51633b2b64371 100644
1157     --- a/drivers/spi/spi-loopback-test.c
1158     +++ b/drivers/spi/spi-loopback-test.c
1159     @@ -90,7 +90,7 @@ static struct spi_test spi_tests[] = {
1160     {
1161     .description = "tx/rx-transfer - crossing PAGE_SIZE",
1162     .fill_option = FILL_COUNT_8,
1163     - .iterate_len = { ITERATE_MAX_LEN },
1164     + .iterate_len = { ITERATE_LEN },
1165     .iterate_tx_align = ITERATE_ALIGN,
1166     .iterate_rx_align = ITERATE_ALIGN,
1167     .transfer_count = 1,
1168     diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
1169     index 6a81b2a33cb4b..982753ac1bf6c 100644
1170     --- a/drivers/spi/spi.c
1171     +++ b/drivers/spi/spi.c
1172     @@ -1241,8 +1241,6 @@ out:
1173     if (msg->status && ctlr->handle_err)
1174     ctlr->handle_err(ctlr, msg);
1175    
1176     - spi_res_release(ctlr, msg);
1177     -
1178     spi_finalize_current_message(ctlr);
1179    
1180     return ret;
1181     @@ -1525,6 +1523,13 @@ void spi_finalize_current_message(struct spi_controller *ctlr)
1182    
1183     spi_unmap_msg(ctlr, mesg);
1184    
1185     + /* In the prepare_messages callback the spi bus has the opportunity to
1186     + * split a transfer to smaller chunks.
1187     + * Release splited transfers here since spi_map_msg is done on the
1188     + * splited transfers.
1189     + */
1190     + spi_res_release(ctlr, mesg);
1191     +
1192     if (ctlr->cur_msg_prepared && ctlr->unprepare_message) {
1193     ret = ctlr->unprepare_message(ctlr, mesg);
1194     if (ret) {
1195     diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
1196     index 7cad66eb39fff..8814ff38aa67b 100644
1197     --- a/drivers/tty/serial/8250/8250_pci.c
1198     +++ b/drivers/tty/serial/8250/8250_pci.c
1199     @@ -5568,6 +5568,17 @@ static const struct pci_device_id serial_pci_tbl[] = {
1200     PCI_ANY_ID, PCI_ANY_ID,
1201     0, 0, pbn_wch384_4 },
1202    
1203     + /*
1204     + * Realtek RealManage
1205     + */
1206     + { PCI_VENDOR_ID_REALTEK, 0x816a,
1207     + PCI_ANY_ID, PCI_ANY_ID,
1208     + 0, 0, pbn_b0_1_115200 },
1209     +
1210     + { PCI_VENDOR_ID_REALTEK, 0x816b,
1211     + PCI_ANY_ID, PCI_ANY_ID,
1212     + 0, 0, pbn_b0_1_115200 },
1213     +
1214     /* Fintek PCI serial cards */
1215     { PCI_DEVICE(0x1c29, 0x1104), .driver_data = pbn_fintek_4 },
1216     { PCI_DEVICE(0x1c29, 0x1108), .driver_data = pbn_fintek_8 },
1217     diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
1218     index 084c48c5848fc..67cbd42421bee 100644
1219     --- a/drivers/usb/class/usblp.c
1220     +++ b/drivers/usb/class/usblp.c
1221     @@ -827,6 +827,11 @@ static ssize_t usblp_read(struct file *file, char __user *buffer, size_t len, lo
1222     if (rv < 0)
1223     return rv;
1224    
1225     + if (!usblp->present) {
1226     + count = -ENODEV;
1227     + goto done;
1228     + }
1229     +
1230     if ((avail = usblp->rstatus) < 0) {
1231     printk(KERN_ERR "usblp%d: error %d reading from printer\n",
1232     usblp->minor, (int)avail);
1233     diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
1234     index 2f068e525a374..4ee8105310989 100644
1235     --- a/drivers/usb/core/quirks.c
1236     +++ b/drivers/usb/core/quirks.c
1237     @@ -397,6 +397,10 @@ static const struct usb_device_id usb_quirk_list[] = {
1238     /* Generic RTL8153 based ethernet adapters */
1239     { USB_DEVICE(0x0bda, 0x8153), .driver_info = USB_QUIRK_NO_LPM },
1240    
1241     + /* SONiX USB DEVICE Touchpad */
1242     + { USB_DEVICE(0x0c45, 0x7056), .driver_info =
1243     + USB_QUIRK_IGNORE_REMOTE_WAKEUP },
1244     +
1245     /* Action Semiconductor flash disk */
1246     { USB_DEVICE(0x10d6, 0x2200), .driver_info =
1247     USB_QUIRK_STRING_FETCH_255 },
1248     diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
1249     index cf2b7ae93b7e9..0e5c56e065591 100644
1250     --- a/drivers/usb/host/ehci-hcd.c
1251     +++ b/drivers/usb/host/ehci-hcd.c
1252     @@ -22,6 +22,7 @@
1253     #include <linux/interrupt.h>
1254     #include <linux/usb.h>
1255     #include <linux/usb/hcd.h>
1256     +#include <linux/usb/otg.h>
1257     #include <linux/moduleparam.h>
1258     #include <linux/dma-mapping.h>
1259     #include <linux/debugfs.h>
1260     diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
1261     index ce0eaf7d7c12a..087402aec5cbe 100644
1262     --- a/drivers/usb/host/ehci-hub.c
1263     +++ b/drivers/usb/host/ehci-hub.c
1264     @@ -14,7 +14,6 @@
1265     */
1266    
1267     /*-------------------------------------------------------------------------*/
1268     -#include <linux/usb/otg.h>
1269    
1270     #define PORT_WAKE_BITS (PORT_WKOC_E|PORT_WKDISC_E|PORT_WKCONN_E)
1271    
1272     diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
1273     index 5fcad96e06564..1ec1baa7604ed 100644
1274     --- a/drivers/usb/storage/uas.c
1275     +++ b/drivers/usb/storage/uas.c
1276     @@ -662,8 +662,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
1277     if (devinfo->resetting) {
1278     cmnd->result = DID_ERROR << 16;
1279     cmnd->scsi_done(cmnd);
1280     - spin_unlock_irqrestore(&devinfo->lock, flags);
1281     - return 0;
1282     + goto zombie;
1283     }
1284    
1285     /* Find a free uas-tag */
1286     @@ -699,6 +698,16 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
1287     cmdinfo->state &= ~(SUBMIT_DATA_IN_URB | SUBMIT_DATA_OUT_URB);
1288    
1289     err = uas_submit_urbs(cmnd, devinfo);
1290     + /*
1291     + * in case of fatal errors the SCSI layer is peculiar
1292     + * a command that has finished is a success for the purpose
1293     + * of queueing, no matter how fatal the error
1294     + */
1295     + if (err == -ENODEV) {
1296     + cmnd->result = DID_ERROR << 16;
1297     + cmnd->scsi_done(cmnd);
1298     + goto zombie;
1299     + }
1300     if (err) {
1301     /* If we did nothing, give up now */
1302     if (cmdinfo->state & SUBMIT_STATUS_URB) {
1303     @@ -709,6 +718,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd,
1304     }
1305    
1306     devinfo->cmnd[idx] = cmnd;
1307     +zombie:
1308     spin_unlock_irqrestore(&devinfo->lock, flags);
1309     return 0;
1310     }
1311     diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
1312     index ba288b964dc84..4d56408ac623d 100644
1313     --- a/drivers/usb/typec/ucsi/ucsi.c
1314     +++ b/drivers/usb/typec/ucsi/ucsi.c
1315     @@ -246,14 +246,18 @@ void ucsi_altmode_update_active(struct ucsi_connector *con)
1316     con->partner_altmode[i] == altmode);
1317     }
1318    
1319     -static u8 ucsi_altmode_next_mode(struct typec_altmode **alt, u16 svid)
1320     +static int ucsi_altmode_next_mode(struct typec_altmode **alt, u16 svid)
1321     {
1322     u8 mode = 1;
1323     int i;
1324    
1325     - for (i = 0; alt[i]; i++)
1326     + for (i = 0; alt[i]; i++) {
1327     + if (i > MODE_DISCOVERY_MAX)
1328     + return -ERANGE;
1329     +
1330     if (alt[i]->svid == svid)
1331     mode++;
1332     + }
1333    
1334     return mode;
1335     }
1336     @@ -288,8 +292,11 @@ static int ucsi_register_altmode(struct ucsi_connector *con,
1337     goto err;
1338     }
1339    
1340     - desc->mode = ucsi_altmode_next_mode(con->port_altmode,
1341     - desc->svid);
1342     + ret = ucsi_altmode_next_mode(con->port_altmode, desc->svid);
1343     + if (ret < 0)
1344     + return ret;
1345     +
1346     + desc->mode = ret;
1347    
1348     switch (desc->svid) {
1349     case USB_TYPEC_DP_SID:
1350     @@ -315,8 +322,11 @@ static int ucsi_register_altmode(struct ucsi_connector *con,
1351     goto err;
1352     }
1353    
1354     - desc->mode = ucsi_altmode_next_mode(con->partner_altmode,
1355     - desc->svid);
1356     + ret = ucsi_altmode_next_mode(con->partner_altmode, desc->svid);
1357     + if (ret < 0)
1358     + return ret;
1359     +
1360     + desc->mode = ret;
1361    
1362     alt = typec_partner_register_altmode(con->partner, desc);
1363     if (IS_ERR(alt)) {
1364     diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
1365     index 8685d28dfdaaf..dc7f5c4f0607e 100644
1366     --- a/drivers/video/fbdev/core/fbcon.c
1367     +++ b/drivers/video/fbdev/core/fbcon.c
1368     @@ -2012,7 +2012,7 @@ static int fbcon_resize(struct vc_data *vc, unsigned int width,
1369     struct fb_var_screeninfo var = info->var;
1370     int x_diff, y_diff, virt_w, virt_h, virt_fw, virt_fh;
1371    
1372     - if (ops->p && ops->p->userfont && FNTSIZE(vc->vc_font.data)) {
1373     + if (p->userfont && FNTSIZE(vc->vc_font.data)) {
1374     int size;
1375     int pitch = PITCH(vc->vc_font.width);
1376    
1377     diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
1378     index eb2e3db3916f0..17df90b5f57a2 100644
1379     --- a/fs/cifs/inode.c
1380     +++ b/fs/cifs/inode.c
1381     @@ -898,6 +898,8 @@ cifs_get_inode_info(struct inode **inode, const char *full_path,
1382     if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MODE_FROM_SID) {
1383     rc = cifs_acl_to_fattr(cifs_sb, &fattr, *inode, true,
1384     full_path, fid);
1385     + if (rc == -EREMOTE)
1386     + rc = 0;
1387     if (rc) {
1388     cifs_dbg(FYI, "%s: Get mode from SID failed. rc=%d\n",
1389     __func__, rc);
1390     @@ -906,6 +908,8 @@ cifs_get_inode_info(struct inode **inode, const char *full_path,
1391     } else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
1392     rc = cifs_acl_to_fattr(cifs_sb, &fattr, *inode, false,
1393     full_path, fid);
1394     + if (rc == -EREMOTE)
1395     + rc = 0;
1396     if (rc) {
1397     cifs_dbg(FYI, "%s: Getting ACL failed with error: %d\n",
1398     __func__, rc);
1399     diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
1400     index ec9a1f9ce2dd6..68be334afc286 100644
1401     --- a/fs/f2fs/data.c
1402     +++ b/fs/f2fs/data.c
1403     @@ -2753,6 +2753,9 @@ static int check_direct_IO(struct inode *inode, struct iov_iter *iter,
1404     unsigned long align = offset | iov_iter_alignment(iter);
1405     struct block_device *bdev = inode->i_sb->s_bdev;
1406    
1407     + if (iov_iter_rw(iter) == READ && offset >= i_size_read(inode))
1408     + return 1;
1409     +
1410     if (align & blocksize_mask) {
1411     if (bdev)
1412     blkbits = blksize_bits(bdev_logical_block_size(bdev));
1413     diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
1414     index daeac4268c1ab..8a67b933ccd42 100644
1415     --- a/fs/f2fs/node.c
1416     +++ b/fs/f2fs/node.c
1417     @@ -2315,6 +2315,9 @@ static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi,
1418     if (unlikely(nid >= nm_i->max_nid))
1419     nid = 0;
1420    
1421     + if (unlikely(nid % NAT_ENTRY_PER_BLOCK))
1422     + nid = NAT_BLOCK_OFFSET(nid) * NAT_ENTRY_PER_BLOCK;
1423     +
1424     /* Enough entries */
1425     if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK)
1426     return 0;
1427     diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
1428     index 83cf64da474cb..d5b9274662db1 100644
1429     --- a/fs/gfs2/glops.c
1430     +++ b/fs/gfs2/glops.c
1431     @@ -87,6 +87,8 @@ static void gfs2_ail_empty_gl(struct gfs2_glock *gl)
1432     memset(&tr, 0, sizeof(tr));
1433     INIT_LIST_HEAD(&tr.tr_buf);
1434     INIT_LIST_HEAD(&tr.tr_databuf);
1435     + INIT_LIST_HEAD(&tr.tr_ail1_list);
1436     + INIT_LIST_HEAD(&tr.tr_ail2_list);
1437     tr.tr_revokes = atomic_read(&gl->gl_ail_count);
1438    
1439     if (!tr.tr_revokes) {
1440     diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
1441     index a4b6a49462a41..00a90fc725977 100644
1442     --- a/fs/gfs2/log.c
1443     +++ b/fs/gfs2/log.c
1444     @@ -810,8 +810,6 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl, u32 flags)
1445     tr = sdp->sd_log_tr;
1446     if (tr) {
1447     sdp->sd_log_tr = NULL;
1448     - INIT_LIST_HEAD(&tr->tr_ail1_list);
1449     - INIT_LIST_HEAD(&tr->tr_ail2_list);
1450     tr->tr_first = sdp->sd_log_flush_head;
1451     if (unlikely (state == SFS_FROZEN))
1452     gfs2_assert_withdraw(sdp, !tr->tr_num_buf_new && !tr->tr_num_databuf_new);
1453     diff --git a/fs/gfs2/trans.c b/fs/gfs2/trans.c
1454     index 9d4227330de47..2a12d30ae0de4 100644
1455     --- a/fs/gfs2/trans.c
1456     +++ b/fs/gfs2/trans.c
1457     @@ -53,6 +53,8 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
1458     sizeof(u64));
1459     INIT_LIST_HEAD(&tr->tr_databuf);
1460     INIT_LIST_HEAD(&tr->tr_buf);
1461     + INIT_LIST_HEAD(&tr->tr_ail1_list);
1462     + INIT_LIST_HEAD(&tr->tr_ail2_list);
1463    
1464     sb_start_intwrite(sdp->sd_vfs);
1465    
1466     diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
1467     index d0cb827b72cfa..00435556db0ce 100644
1468     --- a/fs/nfs/nfs4proc.c
1469     +++ b/fs/nfs/nfs4proc.c
1470     @@ -3257,8 +3257,10 @@ static int _nfs4_do_setattr(struct inode *inode,
1471    
1472     /* Servers should only apply open mode checks for file size changes */
1473     truncate = (arg->iap->ia_valid & ATTR_SIZE) ? true : false;
1474     - if (!truncate)
1475     + if (!truncate) {
1476     + nfs4_inode_make_writeable(inode);
1477     goto zero_stateid;
1478     + }
1479    
1480     if (nfs4_copy_delegation_stateid(inode, FMODE_WRITE, &arg->stateid, &delegation_cred)) {
1481     /* Use that stateid */
1482     @@ -7232,7 +7234,12 @@ int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state,
1483     err = nfs4_set_lock_state(state, fl);
1484     if (err != 0)
1485     return err;
1486     - err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
1487     + do {
1488     + err = _nfs4_do_setlk(state, F_SETLK, fl, NFS_LOCK_NEW);
1489     + if (err != -NFS4ERR_DELAY)
1490     + break;
1491     + ssleep(1);
1492     + } while (err == -NFS4ERR_DELAY);
1493     return nfs4_handle_delegation_recall_error(server, state, stateid, fl, err);
1494     }
1495    
1496     diff --git a/include/linux/dax.h b/include/linux/dax.h
1497     index 9bd8528bd305f..72a7f03a59f4c 100644
1498     --- a/include/linux/dax.h
1499     +++ b/include/linux/dax.h
1500     @@ -56,6 +56,8 @@ static inline void set_dax_synchronous(struct dax_device *dax_dev)
1501     {
1502     __set_dax_synchronous(dax_dev);
1503     }
1504     +bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
1505     + int blocksize, sector_t start, sector_t len);
1506     /*
1507     * Check if given mapping is supported by the file / underlying device.
1508     */
1509     @@ -102,6 +104,12 @@ static inline bool dax_synchronous(struct dax_device *dax_dev)
1510     static inline void set_dax_synchronous(struct dax_device *dax_dev)
1511     {
1512     }
1513     +static inline bool dax_supported(struct dax_device *dax_dev,
1514     + struct block_device *bdev, int blocksize, sector_t start,
1515     + sector_t len)
1516     +{
1517     + return false;
1518     +}
1519     static inline bool daxdev_mapping_supported(struct vm_area_struct *vma,
1520     struct dax_device *dax_dev)
1521     {
1522     @@ -197,14 +205,23 @@ static inline void dax_unlock_page(struct page *page, dax_entry_t cookie)
1523     }
1524     #endif
1525    
1526     +#if IS_ENABLED(CONFIG_DAX)
1527     int dax_read_lock(void);
1528     void dax_read_unlock(int id);
1529     +#else
1530     +static inline int dax_read_lock(void)
1531     +{
1532     + return 0;
1533     +}
1534     +
1535     +static inline void dax_read_unlock(int id)
1536     +{
1537     +}
1538     +#endif /* CONFIG_DAX */
1539     bool dax_alive(struct dax_device *dax_dev);
1540     void *dax_get_private(struct dax_device *dax_dev);
1541     long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages,
1542     void **kaddr, pfn_t *pfn);
1543     -bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
1544     - int blocksize, sector_t start, sector_t len);
1545     size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
1546     size_t bytes, struct iov_iter *i);
1547     size_t dax_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
1548     diff --git a/include/linux/i2c-algo-pca.h b/include/linux/i2c-algo-pca.h
1549     index d03071732db4a..7c522fdd9ea73 100644
1550     --- a/include/linux/i2c-algo-pca.h
1551     +++ b/include/linux/i2c-algo-pca.h
1552     @@ -53,6 +53,20 @@
1553     #define I2C_PCA_CON_SI 0x08 /* Serial Interrupt */
1554     #define I2C_PCA_CON_CR 0x07 /* Clock Rate (MASK) */
1555    
1556     +/**
1557     + * struct pca_i2c_bus_settings - The configured PCA i2c bus settings
1558     + * @mode: Configured i2c bus mode
1559     + * @tlow: Configured SCL LOW period
1560     + * @thi: Configured SCL HIGH period
1561     + * @clock_freq: The configured clock frequency
1562     + */
1563     +struct pca_i2c_bus_settings {
1564     + int mode;
1565     + int tlow;
1566     + int thi;
1567     + int clock_freq;
1568     +};
1569     +
1570     struct i2c_algo_pca_data {
1571     void *data; /* private low level data */
1572     void (*write_byte) (void *data, int reg, int val);
1573     @@ -64,6 +78,7 @@ struct i2c_algo_pca_data {
1574     * For PCA9665, use the frequency you want here. */
1575     unsigned int i2c_clock;
1576     unsigned int chip;
1577     + struct pca_i2c_bus_settings bus_settings;
1578     };
1579    
1580     int i2c_pca_add_bus(struct i2c_adapter *);
1581     diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
1582     index e735bc4075dc7..1b6b8e05868dd 100644
1583     --- a/include/uapi/linux/kvm.h
1584     +++ b/include/uapi/linux/kvm.h
1585     @@ -768,9 +768,10 @@ struct kvm_ppc_resize_hpt {
1586     #define KVM_VM_PPC_HV 1
1587     #define KVM_VM_PPC_PR 2
1588    
1589     -/* on MIPS, 0 forces trap & emulate, 1 forces VZ ASE */
1590     -#define KVM_VM_MIPS_TE 0
1591     +/* on MIPS, 0 indicates auto, 1 forces VZ ASE, 2 forces trap & emulate */
1592     +#define KVM_VM_MIPS_AUTO 0
1593     #define KVM_VM_MIPS_VZ 1
1594     +#define KVM_VM_MIPS_TE 2
1595    
1596     #define KVM_S390_SIE_PAGE_OFFSET 1
1597    
1598     diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
1599     index 3128d95847125..3eb0b311b4a12 100644
1600     --- a/mm/memory_hotplug.c
1601     +++ b/mm/memory_hotplug.c
1602     @@ -1566,6 +1566,20 @@ static int __ref __offline_pages(unsigned long start_pfn,
1603     /* check again */
1604     ret = walk_system_ram_range(start_pfn, end_pfn - start_pfn,
1605     NULL, check_pages_isolated_cb);
1606     + /*
1607     + * per-cpu pages are drained in start_isolate_page_range, but if
1608     + * there are still pages that are not free, make sure that we
1609     + * drain again, because when we isolated range we might
1610     + * have raced with another thread that was adding pages to pcp
1611     + * list.
1612     + *
1613     + * Forward progress should be still guaranteed because
1614     + * pages on the pcp list can only belong to MOVABLE_ZONE
1615     + * because has_unmovable_pages explicitly checks for
1616     + * PageBuddy on freed pages on other zones.
1617     + */
1618     + if (ret)
1619     + drain_all_pages(zone);
1620     } while (ret);
1621    
1622     /* Ok, all of our target is isolated.
1623     diff --git a/mm/page_isolation.c b/mm/page_isolation.c
1624     index 89c19c0feadb9..da0f6e1ae01e2 100644
1625     --- a/mm/page_isolation.c
1626     +++ b/mm/page_isolation.c
1627     @@ -187,6 +187,14 @@ __first_valid_page(unsigned long pfn, unsigned long nr_pages)
1628     * pageblocks we may have modified and return -EBUSY to caller. This
1629     * prevents two threads from simultaneously working on overlapping ranges.
1630     *
1631     + * Please note that there is no strong synchronization with the page allocator
1632     + * either. Pages might be freed while their page blocks are marked ISOLATED.
1633     + * In some cases pages might still end up on pcp lists and that would allow
1634     + * for their allocation even when they are in fact isolated already. Depending
1635     + * on how strong of a guarantee the caller needs drain_all_pages might be needed
1636     + * (e.g. __offline_pages will need to call it after check for isolated range for
1637     + * a next retry).
1638     + *
1639     * Return: the number of isolated pageblocks on success and -EBUSY if any part
1640     * of range cannot be isolated.
1641     */
1642     diff --git a/mm/percpu.c b/mm/percpu.c
1643     index 7e06a1e587209..806bc16f88eb8 100644
1644     --- a/mm/percpu.c
1645     +++ b/mm/percpu.c
1646     @@ -1328,7 +1328,7 @@ static struct pcpu_chunk * __init pcpu_alloc_first_chunk(unsigned long tmp_addr,
1647    
1648     /* allocate chunk */
1649     alloc_size = sizeof(struct pcpu_chunk) +
1650     - BITS_TO_LONGS(region_size >> PAGE_SHIFT);
1651     + BITS_TO_LONGS(region_size >> PAGE_SHIFT) * sizeof(unsigned long);
1652     chunk = memblock_alloc(alloc_size, SMP_CACHE_BYTES);
1653     if (!chunk)
1654     panic("%s: Failed to allocate %zu bytes\n", __func__,
1655     diff --git a/net/core/skbuff.c b/net/core/skbuff.c
1656     index f80b6999ca1cb..08d9915d50c0f 100644
1657     --- a/net/core/skbuff.c
1658     +++ b/net/core/skbuff.c
1659     @@ -5882,9 +5882,13 @@ static int pskb_carve_inside_nonlinear(struct sk_buff *skb, const u32 off,
1660     if (skb_has_frag_list(skb))
1661     skb_clone_fraglist(skb);
1662    
1663     - if (k == 0) {
1664     - /* split line is in frag list */
1665     - pskb_carve_frag_list(skb, shinfo, off - pos, gfp_mask);
1666     + /* split line is in frag list */
1667     + if (k == 0 && pskb_carve_frag_list(skb, shinfo, off - pos, gfp_mask)) {
1668     + /* skb_frag_unref() is not needed here as shinfo->nr_frags = 0. */
1669     + if (skb_has_frag_list(skb))
1670     + kfree_skb_list(skb_shinfo(skb)->frag_list);
1671     + kfree(data);
1672     + return -ENOMEM;
1673     }
1674     skb_release_data(skb);
1675    
1676     diff --git a/net/dsa/tag_edsa.c b/net/dsa/tag_edsa.c
1677     index e8eaa804ccb9e..d6200ff982007 100644
1678     --- a/net/dsa/tag_edsa.c
1679     +++ b/net/dsa/tag_edsa.c
1680     @@ -13,6 +13,16 @@
1681     #define DSA_HLEN 4
1682     #define EDSA_HLEN 8
1683    
1684     +#define FRAME_TYPE_TO_CPU 0x00
1685     +#define FRAME_TYPE_FORWARD 0x03
1686     +
1687     +#define TO_CPU_CODE_MGMT_TRAP 0x00
1688     +#define TO_CPU_CODE_FRAME2REG 0x01
1689     +#define TO_CPU_CODE_IGMP_MLD_TRAP 0x02
1690     +#define TO_CPU_CODE_POLICY_TRAP 0x03
1691     +#define TO_CPU_CODE_ARP_MIRROR 0x04
1692     +#define TO_CPU_CODE_POLICY_MIRROR 0x05
1693     +
1694     static struct sk_buff *edsa_xmit(struct sk_buff *skb, struct net_device *dev)
1695     {
1696     struct dsa_port *dp = dsa_slave_to_port(dev);
1697     @@ -77,6 +87,8 @@ static struct sk_buff *edsa_rcv(struct sk_buff *skb, struct net_device *dev,
1698     struct packet_type *pt)
1699     {
1700     u8 *edsa_header;
1701     + int frame_type;
1702     + int code;
1703     int source_device;
1704     int source_port;
1705    
1706     @@ -91,8 +103,29 @@ static struct sk_buff *edsa_rcv(struct sk_buff *skb, struct net_device *dev,
1707     /*
1708     * Check that frame type is either TO_CPU or FORWARD.
1709     */
1710     - if ((edsa_header[0] & 0xc0) != 0x00 && (edsa_header[0] & 0xc0) != 0xc0)
1711     + frame_type = edsa_header[0] >> 6;
1712     +
1713     + switch (frame_type) {
1714     + case FRAME_TYPE_TO_CPU:
1715     + code = (edsa_header[1] & 0x6) | ((edsa_header[2] >> 4) & 1);
1716     +
1717     + /*
1718     + * Mark the frame to never egress on any port of the same switch
1719     + * unless it's a trapped IGMP/MLD packet, in which case the
1720     + * bridge might want to forward it.
1721     + */
1722     + if (code != TO_CPU_CODE_IGMP_MLD_TRAP)
1723     + skb->offload_fwd_mark = 1;
1724     +
1725     + break;
1726     +
1727     + case FRAME_TYPE_FORWARD:
1728     + skb->offload_fwd_mark = 1;
1729     + break;
1730     +
1731     + default:
1732     return NULL;
1733     + }
1734    
1735     /*
1736     * Determine source device and port.
1737     @@ -156,8 +189,6 @@ static struct sk_buff *edsa_rcv(struct sk_buff *skb, struct net_device *dev,
1738     2 * ETH_ALEN);
1739     }
1740    
1741     - skb->offload_fwd_mark = 1;
1742     -
1743     return skb;
1744     }
1745    
1746     diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c
1747     index 4a020b6888608..1db9f62e466d9 100644
1748     --- a/net/sunrpc/rpcb_clnt.c
1749     +++ b/net/sunrpc/rpcb_clnt.c
1750     @@ -988,8 +988,8 @@ static int rpcb_dec_getaddr(struct rpc_rqst *req, struct xdr_stream *xdr,
1751     p = xdr_inline_decode(xdr, len);
1752     if (unlikely(p == NULL))
1753     goto out_fail;
1754     - dprintk("RPC: %5u RPCB_%s reply: %s\n", req->rq_task->tk_pid,
1755     - req->rq_task->tk_msg.rpc_proc->p_name, (char *)p);
1756     + dprintk("RPC: %5u RPCB_%s reply: %*pE\n", req->rq_task->tk_pid,
1757     + req->rq_task->tk_msg.rpc_proc->p_name, len, (char *)p);
1758    
1759     if (rpc_uaddr2sockaddr(req->rq_xprt->xprt_net, (char *)p, len,
1760     sap, sizeof(address)) == 0)
1761     diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1762     index d614090dae49d..54346ae47d112 100644
1763     --- a/sound/pci/hda/patch_realtek.c
1764     +++ b/sound/pci/hda/patch_realtek.c
1765     @@ -2466,7 +2466,6 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
1766     SND_PCI_QUIRK(0x1462, 0x1276, "MSI-GL73", ALC1220_FIXUP_CLEVO_P950),
1767     SND_PCI_QUIRK(0x1462, 0x1293, "MSI-GP65", ALC1220_FIXUP_CLEVO_P950),
1768     SND_PCI_QUIRK(0x1462, 0x7350, "MSI-7350", ALC889_FIXUP_CD),
1769     - SND_PCI_QUIRK(0x1462, 0x9c37, "MSI X570-A PRO", ALC1220_FIXUP_CLEVO_P950),
1770     SND_PCI_QUIRK(0x1462, 0xda57, "MSI Z270-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS),
1771     SND_PCI_QUIRK_VENDOR(0x1462, "MSI", ALC882_FIXUP_GPIO3),
1772     SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", ALC882_FIXUP_ABIT_AW9D_MAX),
1773     @@ -5975,6 +5974,40 @@ static void alc_fixup_disable_mic_vref(struct hda_codec *codec,
1774     snd_hda_codec_set_pin_target(codec, 0x19, PIN_VREFHIZ);
1775     }
1776    
1777     +
1778     +static void alc294_gx502_toggle_output(struct hda_codec *codec,
1779     + struct hda_jack_callback *cb)
1780     +{
1781     + /* The Windows driver sets the codec up in a very different way where
1782     + * it appears to leave 0x10 = 0x8a20 set. For Linux we need to toggle it
1783     + */
1784     + if (snd_hda_jack_detect_state(codec, 0x21) == HDA_JACK_PRESENT)
1785     + alc_write_coef_idx(codec, 0x10, 0x8a20);
1786     + else
1787     + alc_write_coef_idx(codec, 0x10, 0x0a20);
1788     +}
1789     +
1790     +static void alc294_fixup_gx502_hp(struct hda_codec *codec,
1791     + const struct hda_fixup *fix, int action)
1792     +{
1793     + /* Pin 0x21: headphones/headset mic */
1794     + if (!is_jack_detectable(codec, 0x21))
1795     + return;
1796     +
1797     + switch (action) {
1798     + case HDA_FIXUP_ACT_PRE_PROBE:
1799     + snd_hda_jack_detect_enable_callback(codec, 0x21,
1800     + alc294_gx502_toggle_output);
1801     + break;
1802     + case HDA_FIXUP_ACT_INIT:
1803     + /* Make sure to start in a correct state, i.e. if
1804     + * headphones have been plugged in before powering up the system
1805     + */
1806     + alc294_gx502_toggle_output(codec, NULL);
1807     + break;
1808     + }
1809     +}
1810     +
1811     static void alc285_fixup_hp_gpio_amp_init(struct hda_codec *codec,
1812     const struct hda_fixup *fix, int action)
1813     {
1814     @@ -6155,6 +6188,9 @@ enum {
1815     ALC285_FIXUP_THINKPAD_HEADSET_JACK,
1816     ALC294_FIXUP_ASUS_HPE,
1817     ALC294_FIXUP_ASUS_COEF_1B,
1818     + ALC294_FIXUP_ASUS_GX502_HP,
1819     + ALC294_FIXUP_ASUS_GX502_PINS,
1820     + ALC294_FIXUP_ASUS_GX502_VERBS,
1821     ALC285_FIXUP_HP_GPIO_LED,
1822     ALC285_FIXUP_HP_MUTE_LED,
1823     ALC236_FIXUP_HP_MUTE_LED,
1824     @@ -6173,6 +6209,7 @@ enum {
1825     ALC269_FIXUP_LEMOTE_A1802,
1826     ALC269_FIXUP_LEMOTE_A190X,
1827     ALC256_FIXUP_INTEL_NUC8_RUGGED,
1828     + ALC255_FIXUP_XIAOMI_HEADSET_MIC,
1829     };
1830    
1831     static const struct hda_fixup alc269_fixups[] = {
1832     @@ -7320,6 +7357,33 @@ static const struct hda_fixup alc269_fixups[] = {
1833     .chained = true,
1834     .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC
1835     },
1836     + [ALC294_FIXUP_ASUS_GX502_PINS] = {
1837     + .type = HDA_FIXUP_PINS,
1838     + .v.pins = (const struct hda_pintbl[]) {
1839     + { 0x19, 0x03a11050 }, /* front HP mic */
1840     + { 0x1a, 0x01a11830 }, /* rear external mic */
1841     + { 0x21, 0x03211020 }, /* front HP out */
1842     + { }
1843     + },
1844     + .chained = true,
1845     + .chain_id = ALC294_FIXUP_ASUS_GX502_VERBS
1846     + },
1847     + [ALC294_FIXUP_ASUS_GX502_VERBS] = {
1848     + .type = HDA_FIXUP_VERBS,
1849     + .v.verbs = (const struct hda_verb[]) {
1850     + /* set 0x15 to HP-OUT ctrl */
1851     + { 0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0 },
1852     + /* unmute the 0x15 amp */
1853     + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb000 },
1854     + { }
1855     + },
1856     + .chained = true,
1857     + .chain_id = ALC294_FIXUP_ASUS_GX502_HP
1858     + },
1859     + [ALC294_FIXUP_ASUS_GX502_HP] = {
1860     + .type = HDA_FIXUP_FUNC,
1861     + .v.func = alc294_fixup_gx502_hp,
1862     + },
1863     [ALC294_FIXUP_ASUS_COEF_1B] = {
1864     .type = HDA_FIXUP_VERBS,
1865     .v.verbs = (const struct hda_verb[]) {
1866     @@ -7509,6 +7573,16 @@ static const struct hda_fixup alc269_fixups[] = {
1867     .chained = true,
1868     .chain_id = ALC269_FIXUP_HEADSET_MODE
1869     },
1870     + [ALC255_FIXUP_XIAOMI_HEADSET_MIC] = {
1871     + .type = HDA_FIXUP_VERBS,
1872     + .v.verbs = (const struct hda_verb[]) {
1873     + { 0x20, AC_VERB_SET_COEF_INDEX, 0x45 },
1874     + { 0x20, AC_VERB_SET_PROC_COEF, 0x5089 },
1875     + { }
1876     + },
1877     + .chained = true,
1878     + .chain_id = ALC289_FIXUP_ASUS_GA401
1879     + },
1880     };
1881    
1882     static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1883     @@ -7693,6 +7767,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1884     SND_PCI_QUIRK(0x1043, 0x1ccd, "ASUS X555UB", ALC256_FIXUP_ASUS_MIC),
1885     SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502),
1886     SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),
1887     + SND_PCI_QUIRK(0x1043, 0x1881, "ASUS Zephyrus S/M", ALC294_FIXUP_ASUS_GX502_PINS),
1888     SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
1889     SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
1890     SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC),
1891     @@ -7805,6 +7880,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1892     SND_PCI_QUIRK(0x1b35, 0x1236, "CZC TMI", ALC269_FIXUP_CZC_TMI),
1893     SND_PCI_QUIRK(0x1b35, 0x1237, "CZC L101", ALC269_FIXUP_CZC_L101),
1894     SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */
1895     + SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC),
1896     SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),
1897     SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE),
1898     SND_PCI_QUIRK(0x1c06, 0x2013, "Lemote A1802", ALC269_FIXUP_LEMOTE_A1802),
1899     @@ -7982,6 +8058,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
1900     {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"},
1901     {.id = ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, .name = "alc256-medion-headset"},
1902     {.id = ALC298_FIXUP_SAMSUNG_HEADPHONE_VERY_QUIET, .name = "alc298-samsung-headphone"},
1903     + {.id = ALC255_FIXUP_XIAOMI_HEADSET_MIC, .name = "alc255-xiaomi-headset"},
1904     {}
1905     };
1906     #define ALC225_STANDARD_PINS \
1907     diff --git a/sound/soc/meson/axg-toddr.c b/sound/soc/meson/axg-toddr.c
1908     index ecf41c7549a65..32b9fd59353a4 100644
1909     --- a/sound/soc/meson/axg-toddr.c
1910     +++ b/sound/soc/meson/axg-toddr.c
1911     @@ -18,6 +18,7 @@
1912     #define CTRL0_TODDR_SEL_RESAMPLE BIT(30)
1913     #define CTRL0_TODDR_EXT_SIGNED BIT(29)
1914     #define CTRL0_TODDR_PP_MODE BIT(28)
1915     +#define CTRL0_TODDR_SYNC_CH BIT(27)
1916     #define CTRL0_TODDR_TYPE_MASK GENMASK(15, 13)
1917     #define CTRL0_TODDR_TYPE(x) ((x) << 13)
1918     #define CTRL0_TODDR_MSB_POS_MASK GENMASK(12, 8)
1919     @@ -184,10 +185,31 @@ static const struct axg_fifo_match_data axg_toddr_match_data = {
1920     .dai_drv = &axg_toddr_dai_drv
1921     };
1922    
1923     +static int g12a_toddr_dai_startup(struct snd_pcm_substream *substream,
1924     + struct snd_soc_dai *dai)
1925     +{
1926     + struct axg_fifo *fifo = snd_soc_dai_get_drvdata(dai);
1927     + int ret;
1928     +
1929     + ret = axg_toddr_dai_startup(substream, dai);
1930     + if (ret)
1931     + return ret;
1932     +
1933     + /*
1934     + * Make sure the first channel ends up in the at beginning of the output
1935     + * As weird as it looks, without this the first channel may be misplaced
1936     + * in memory, with a random shift of 2 channels.
1937     + */
1938     + regmap_update_bits(fifo->map, FIFO_CTRL0, CTRL0_TODDR_SYNC_CH,
1939     + CTRL0_TODDR_SYNC_CH);
1940     +
1941     + return 0;
1942     +}
1943     +
1944     static const struct snd_soc_dai_ops g12a_toddr_ops = {
1945     .prepare = g12a_toddr_dai_prepare,
1946     .hw_params = axg_toddr_dai_hw_params,
1947     - .startup = axg_toddr_dai_startup,
1948     + .startup = g12a_toddr_dai_startup,
1949     .shutdown = axg_toddr_dai_shutdown,
1950     };
1951    
1952     diff --git a/sound/soc/qcom/apq8016_sbc.c b/sound/soc/qcom/apq8016_sbc.c
1953     index ac75838bbfabe..15a88020dfab2 100644
1954     --- a/sound/soc/qcom/apq8016_sbc.c
1955     +++ b/sound/soc/qcom/apq8016_sbc.c
1956     @@ -235,6 +235,7 @@ static int apq8016_sbc_platform_probe(struct platform_device *pdev)
1957     return -ENOMEM;
1958    
1959     card->dev = dev;
1960     + card->owner = THIS_MODULE;
1961     card->dapm_widgets = apq8016_sbc_dapm_widgets;
1962     card->num_dapm_widgets = ARRAY_SIZE(apq8016_sbc_dapm_widgets);
1963     data = apq8016_sbc_parse_of(card);
1964     diff --git a/sound/soc/qcom/apq8096.c b/sound/soc/qcom/apq8096.c
1965     index 94363fd6846ab..c10c5f2ec29b7 100644
1966     --- a/sound/soc/qcom/apq8096.c
1967     +++ b/sound/soc/qcom/apq8096.c
1968     @@ -114,6 +114,7 @@ static int apq8096_platform_probe(struct platform_device *pdev)
1969     return -ENOMEM;
1970    
1971     card->dev = dev;
1972     + card->owner = THIS_MODULE;
1973     dev_set_drvdata(dev, card);
1974     ret = qcom_snd_parse_of(card);
1975     if (ret) {
1976     diff --git a/sound/soc/qcom/common.c b/sound/soc/qcom/common.c
1977     index 8ada4ecba8472..10322690c0eaa 100644
1978     --- a/sound/soc/qcom/common.c
1979     +++ b/sound/soc/qcom/common.c
1980     @@ -45,8 +45,10 @@ int qcom_snd_parse_of(struct snd_soc_card *card)
1981    
1982     for_each_child_of_node(dev->of_node, np) {
1983     dlc = devm_kzalloc(dev, 2 * sizeof(*dlc), GFP_KERNEL);
1984     - if (!dlc)
1985     - return -ENOMEM;
1986     + if (!dlc) {
1987     + ret = -ENOMEM;
1988     + goto err;
1989     + }
1990    
1991     link->cpus = &dlc[0];
1992     link->platforms = &dlc[1];
1993     diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c
1994     index 28f3cef696e61..7e6c41e63d8e1 100644
1995     --- a/sound/soc/qcom/sdm845.c
1996     +++ b/sound/soc/qcom/sdm845.c
1997     @@ -410,6 +410,7 @@ static int sdm845_snd_platform_probe(struct platform_device *pdev)
1998     card->dapm_widgets = sdm845_snd_widgets;
1999     card->num_dapm_widgets = ARRAY_SIZE(sdm845_snd_widgets);
2000     card->dev = dev;
2001     + card->owner = THIS_MODULE;
2002     dev_set_drvdata(dev, card);
2003     ret = qcom_snd_parse_of(card);
2004     if (ret) {
2005     diff --git a/sound/soc/qcom/storm.c b/sound/soc/qcom/storm.c
2006     index e6666e597265a..236759179100a 100644
2007     --- a/sound/soc/qcom/storm.c
2008     +++ b/sound/soc/qcom/storm.c
2009     @@ -96,6 +96,7 @@ static int storm_platform_probe(struct platform_device *pdev)
2010     return -ENOMEM;
2011    
2012     card->dev = &pdev->dev;
2013     + card->owner = THIS_MODULE;
2014    
2015     ret = snd_soc_of_parse_card_name(card, "qcom,model");
2016     if (ret) {
2017     diff --git a/tools/perf/tests/bp_signal.c b/tools/perf/tests/bp_signal.c
2018     index 166f411568a50..b5cdedd13cbc7 100644
2019     --- a/tools/perf/tests/bp_signal.c
2020     +++ b/tools/perf/tests/bp_signal.c
2021     @@ -45,10 +45,13 @@ volatile long the_var;
2022     #if defined (__x86_64__)
2023     extern void __test_function(volatile long *ptr);
2024     asm (
2025     + ".pushsection .text;"
2026     ".globl __test_function\n"
2027     + ".type __test_function, @function;"
2028     "__test_function:\n"
2029     "incq (%rdi)\n"
2030     - "ret\n");
2031     + "ret\n"
2032     + ".popsection\n");
2033     #else
2034     static void __test_function(volatile long *ptr)
2035     {
2036     diff --git a/tools/perf/tests/pmu.c b/tools/perf/tests/pmu.c
2037     index 74379ff1f7fa0..46cd1db85bd06 100644
2038     --- a/tools/perf/tests/pmu.c
2039     +++ b/tools/perf/tests/pmu.c
2040     @@ -173,6 +173,7 @@ int test__pmu(struct test *test __maybe_unused, int subtest __maybe_unused)
2041     ret = 0;
2042     } while (0);
2043    
2044     + perf_pmu__del_formats(&formats);
2045     test_format_dir_put(format);
2046     return ret;
2047     }
2048     diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
2049     index de79c735e4411..505b890ac85cc 100644
2050     --- a/tools/perf/util/evlist.c
2051     +++ b/tools/perf/util/evlist.c
2052     @@ -976,6 +976,10 @@ int perf_evlist__create_maps(struct evlist *evlist, struct target *target)
2053    
2054     perf_evlist__set_maps(&evlist->core, cpus, threads);
2055    
2056     + /* as evlist now has references, put count here */
2057     + perf_cpu_map__put(cpus);
2058     + perf_thread_map__put(threads);
2059     +
2060     return 0;
2061    
2062     out_delete_threads:
2063     @@ -1230,11 +1234,12 @@ static int perf_evlist__create_syswide_maps(struct evlist *evlist)
2064     goto out_put;
2065    
2066     perf_evlist__set_maps(&evlist->core, cpus, threads);
2067     -out:
2068     - return err;
2069     +
2070     + perf_thread_map__put(threads);
2071     out_put:
2072     perf_cpu_map__put(cpus);
2073     - goto out;
2074     +out:
2075     + return err;
2076     }
2077    
2078     int evlist__open(struct evlist *evlist)
2079     diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
2080     index 422ad1888e74f..759a99f723fc3 100644
2081     --- a/tools/perf/util/parse-events.c
2082     +++ b/tools/perf/util/parse-events.c
2083     @@ -370,7 +370,7 @@ static int add_event_tool(struct list_head *list, int *idx,
2084     return -ENOMEM;
2085     evsel->tool_event = tool_event;
2086     if (tool_event == PERF_TOOL_DURATION_TIME)
2087     - evsel->unit = strdup("ns");
2088     + evsel->unit = "ns";
2089     return 0;
2090     }
2091    
2092     diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
2093     index 5608da82ad239..628a6d5a5b384 100644
2094     --- a/tools/perf/util/pmu.c
2095     +++ b/tools/perf/util/pmu.c
2096     @@ -1294,6 +1294,17 @@ void perf_pmu__set_format(unsigned long *bits, long from, long to)
2097     set_bit(b, bits);
2098     }
2099    
2100     +void perf_pmu__del_formats(struct list_head *formats)
2101     +{
2102     + struct perf_pmu_format *fmt, *tmp;
2103     +
2104     + list_for_each_entry_safe(fmt, tmp, formats, list) {
2105     + list_del(&fmt->list);
2106     + free(fmt->name);
2107     + free(fmt);
2108     + }
2109     +}
2110     +
2111     static int sub_non_neg(int a, int b)
2112     {
2113     if (b > a)
2114     diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
2115     index f36ade6df76d1..9570d9b26250f 100644
2116     --- a/tools/perf/util/pmu.h
2117     +++ b/tools/perf/util/pmu.h
2118     @@ -81,6 +81,7 @@ int perf_pmu__new_format(struct list_head *list, char *name,
2119     int config, unsigned long *bits);
2120     void perf_pmu__set_format(unsigned long *bits, long from, long to);
2121     int perf_pmu__format_parse(char *dir, struct list_head *head);
2122     +void perf_pmu__del_formats(struct list_head *formats);
2123    
2124     struct perf_pmu *perf_pmu__scan(struct perf_pmu *pmu);
2125    
2126     diff --git a/tools/testing/selftests/vm/map_hugetlb.c b/tools/testing/selftests/vm/map_hugetlb.c
2127     index 6af951900aa39..312889edb84ab 100644
2128     --- a/tools/testing/selftests/vm/map_hugetlb.c
2129     +++ b/tools/testing/selftests/vm/map_hugetlb.c
2130     @@ -83,7 +83,7 @@ int main(int argc, char **argv)
2131     }
2132    
2133     if (shift)
2134     - printf("%u kB hugepages\n", 1 << shift);
2135     + printf("%u kB hugepages\n", 1 << (shift - 10));
2136     else
2137     printf("Default size hugepages\n");
2138     printf("Mapping %lu Mbytes\n", (unsigned long)length >> 20);