Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.19/0157-4.19.58-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3436 - (hide annotations) (download)
Fri Aug 2 11:48:04 2019 UTC (4 years, 10 months ago) by niro
File size: 80452 byte(s)
-linux-4.19.58
1 niro 3436 diff --git a/Makefile b/Makefile
2     index 5412d556b561..5dcd01cd1bf6 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 4
8     PATCHLEVEL = 19
9     -SUBLEVEL = 57
10     +SUBLEVEL = 58
11     EXTRAVERSION =
12     NAME = "People's Front"
13    
14     diff --git a/arch/arm/boot/dts/armada-xp-98dx3236.dtsi b/arch/arm/boot/dts/armada-xp-98dx3236.dtsi
15     index 8d708cc22495..3e7d093d7a9a 100644
16     --- a/arch/arm/boot/dts/armada-xp-98dx3236.dtsi
17     +++ b/arch/arm/boot/dts/armada-xp-98dx3236.dtsi
18     @@ -336,3 +336,11 @@
19     status = "disabled";
20     };
21    
22     +&uart0 {
23     + compatible = "marvell,armada-38x-uart";
24     +};
25     +
26     +&uart1 {
27     + compatible = "marvell,armada-38x-uart";
28     +};
29     +
30     diff --git a/arch/arm64/kernel/module.c b/arch/arm64/kernel/module.c
31     index 0b368ceccee4..8644f154ea7a 100644
32     --- a/arch/arm64/kernel/module.c
33     +++ b/arch/arm64/kernel/module.c
34     @@ -32,6 +32,7 @@
35    
36     void *module_alloc(unsigned long size)
37     {
38     + u64 module_alloc_end = module_alloc_base + MODULES_VSIZE;
39     gfp_t gfp_mask = GFP_KERNEL;
40     void *p;
41    
42     @@ -39,9 +40,12 @@ void *module_alloc(unsigned long size)
43     if (IS_ENABLED(CONFIG_ARM64_MODULE_PLTS))
44     gfp_mask |= __GFP_NOWARN;
45    
46     + if (IS_ENABLED(CONFIG_KASAN))
47     + /* don't exceed the static module region - see below */
48     + module_alloc_end = MODULES_END;
49     +
50     p = __vmalloc_node_range(size, MODULE_ALIGN, module_alloc_base,
51     - module_alloc_base + MODULES_VSIZE,
52     - gfp_mask, PAGE_KERNEL_EXEC, 0,
53     + module_alloc_end, gfp_mask, PAGE_KERNEL_EXEC, 0,
54     NUMA_NO_NODE, __builtin_return_address(0));
55    
56     if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) &&
57     diff --git a/arch/mips/Makefile b/arch/mips/Makefile
58     index d74b3742fa5d..ad0a92f95af1 100644
59     --- a/arch/mips/Makefile
60     +++ b/arch/mips/Makefile
61     @@ -16,6 +16,7 @@ archscripts: scripts_basic
62     $(Q)$(MAKE) $(build)=arch/mips/boot/tools relocs
63    
64     KBUILD_DEFCONFIG := 32r2el_defconfig
65     +KBUILD_DTBS := dtbs
66    
67     #
68     # Select the object file format to substitute into the linker script.
69     @@ -385,7 +386,7 @@ quiet_cmd_64 = OBJCOPY $@
70     vmlinux.64: vmlinux
71     $(call cmd,64)
72    
73     -all: $(all-y)
74     +all: $(all-y) $(KBUILD_DTBS)
75    
76     # boot
77     $(boot-y): $(vmlinux-32) FORCE
78     diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
79     index 7755a1fad05a..1b705fb2f10c 100644
80     --- a/arch/mips/mm/mmap.c
81     +++ b/arch/mips/mm/mmap.c
82     @@ -203,7 +203,7 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
83    
84     int __virt_addr_valid(const volatile void *kaddr)
85     {
86     - unsigned long vaddr = (unsigned long)vaddr;
87     + unsigned long vaddr = (unsigned long)kaddr;
88    
89     if ((vaddr < PAGE_OFFSET) || (vaddr >= MAP_BASE))
90     return 0;
91     diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
92     index 067714291643..8c4fda52b91d 100644
93     --- a/arch/mips/mm/tlbex.c
94     +++ b/arch/mips/mm/tlbex.c
95     @@ -391,6 +391,7 @@ static struct work_registers build_get_work_registers(u32 **p)
96     static void build_restore_work_registers(u32 **p)
97     {
98     if (scratch_reg >= 0) {
99     + uasm_i_ehb(p);
100     UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
101     return;
102     }
103     @@ -667,10 +668,12 @@ static void build_restore_pagemask(u32 **p, struct uasm_reloc **r,
104     uasm_i_mtc0(p, 0, C0_PAGEMASK);
105     uasm_il_b(p, r, lid);
106     }
107     - if (scratch_reg >= 0)
108     + if (scratch_reg >= 0) {
109     + uasm_i_ehb(p);
110     UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
111     - else
112     + } else {
113     UASM_i_LW(p, 1, scratchpad_offset(0), 0);
114     + }
115     } else {
116     /* Reset default page size */
117     if (PM_DEFAULT_MASK >> 16) {
118     @@ -935,10 +938,12 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
119     uasm_i_jr(p, ptr);
120    
121     if (mode == refill_scratch) {
122     - if (scratch_reg >= 0)
123     + if (scratch_reg >= 0) {
124     + uasm_i_ehb(p);
125     UASM_i_MFC0(p, 1, c0_kscratch(), scratch_reg);
126     - else
127     + } else {
128     UASM_i_LW(p, 1, scratchpad_offset(0), 0);
129     + }
130     } else {
131     uasm_i_nop(p);
132     }
133     @@ -1255,6 +1260,7 @@ build_fast_tlb_refill_handler (u32 **p, struct uasm_label **l,
134     UASM_i_MTC0(p, odd, C0_ENTRYLO1); /* load it */
135    
136     if (c0_scratch_reg >= 0) {
137     + uasm_i_ehb(p);
138     UASM_i_MFC0(p, scratch, c0_kscratch(), c0_scratch_reg);
139     build_tlb_write_entry(p, l, r, tlb_random);
140     uasm_l_leave(l, *p);
141     @@ -1600,15 +1606,17 @@ static void build_setup_pgd(void)
142     uasm_i_dinsm(&p, a0, 0, 29, 64 - 29);
143     uasm_l_tlbl_goaround1(&l, p);
144     UASM_i_SLL(&p, a0, a0, 11);
145     - uasm_i_jr(&p, 31);
146     UASM_i_MTC0(&p, a0, C0_CONTEXT);
147     + uasm_i_jr(&p, 31);
148     + uasm_i_ehb(&p);
149     } else {
150     /* PGD in c0_KScratch */
151     - uasm_i_jr(&p, 31);
152     if (cpu_has_ldpte)
153     UASM_i_MTC0(&p, a0, C0_PWBASE);
154     else
155     UASM_i_MTC0(&p, a0, c0_kscratch(), pgd_reg);
156     + uasm_i_jr(&p, 31);
157     + uasm_i_ehb(&p);
158     }
159     #else
160     #ifdef CONFIG_SMP
161     @@ -1622,13 +1630,16 @@ static void build_setup_pgd(void)
162     UASM_i_LA_mostly(&p, a2, pgdc);
163     UASM_i_SW(&p, a0, uasm_rel_lo(pgdc), a2);
164     #endif /* SMP */
165     - uasm_i_jr(&p, 31);
166    
167     /* if pgd_reg is allocated, save PGD also to scratch register */
168     - if (pgd_reg != -1)
169     + if (pgd_reg != -1) {
170     UASM_i_MTC0(&p, a0, c0_kscratch(), pgd_reg);
171     - else
172     + uasm_i_jr(&p, 31);
173     + uasm_i_ehb(&p);
174     + } else {
175     + uasm_i_jr(&p, 31);
176     uasm_i_nop(&p);
177     + }
178     #endif
179     if (p >= (u32 *)tlbmiss_handler_setup_pgd_end)
180     panic("tlbmiss_handler_setup_pgd space exceeded");
181     diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
182     index f105ae8651c9..f62e347862cc 100644
183     --- a/arch/x86/boot/compressed/head_64.S
184     +++ b/arch/x86/boot/compressed/head_64.S
185     @@ -602,10 +602,12 @@ ENTRY(trampoline_32bit_src)
186     3:
187     /* Set EFER.LME=1 as a precaution in case hypervsior pulls the rug */
188     pushl %ecx
189     + pushl %edx
190     movl $MSR_EFER, %ecx
191     rdmsr
192     btsl $_EFER_LME, %eax
193     wrmsr
194     + popl %edx
195     popl %ecx
196    
197     /* Enable PAE and LA57 (if required) paging modes */
198     diff --git a/arch/x86/include/asm/intel-family.h b/arch/x86/include/asm/intel-family.h
199     index 058b1a1994c4..2e38fb82b91d 100644
200     --- a/arch/x86/include/asm/intel-family.h
201     +++ b/arch/x86/include/asm/intel-family.h
202     @@ -52,6 +52,9 @@
203    
204     #define INTEL_FAM6_CANNONLAKE_MOBILE 0x66
205    
206     +#define INTEL_FAM6_ICELAKE_X 0x6A
207     +#define INTEL_FAM6_ICELAKE_XEON_D 0x6C
208     +#define INTEL_FAM6_ICELAKE_DESKTOP 0x7D
209     #define INTEL_FAM6_ICELAKE_MOBILE 0x7E
210    
211     /* "Small Core" Processors (Atom) */
212     diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
213     index 9f033dfd2766..50d309662d78 100644
214     --- a/arch/x86/kernel/ftrace.c
215     +++ b/arch/x86/kernel/ftrace.c
216     @@ -22,6 +22,7 @@
217     #include <linux/init.h>
218     #include <linux/list.h>
219     #include <linux/module.h>
220     +#include <linux/memory.h>
221    
222     #include <trace/syscall.h>
223    
224     @@ -35,6 +36,7 @@
225    
226     int ftrace_arch_code_modify_prepare(void)
227     {
228     + mutex_lock(&text_mutex);
229     set_kernel_text_rw();
230     set_all_modules_text_rw();
231     return 0;
232     @@ -44,6 +46,7 @@ int ftrace_arch_code_modify_post_process(void)
233     {
234     set_all_modules_text_ro();
235     set_kernel_text_ro();
236     + mutex_unlock(&text_mutex);
237     return 0;
238     }
239    
240     diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
241     index cba414db14cb..031bd7f91f98 100644
242     --- a/arch/x86/kvm/lapic.c
243     +++ b/arch/x86/kvm/lapic.c
244     @@ -2275,7 +2275,7 @@ int kvm_apic_has_interrupt(struct kvm_vcpu *vcpu)
245     struct kvm_lapic *apic = vcpu->arch.apic;
246     u32 ppr;
247    
248     - if (!apic_enabled(apic))
249     + if (!kvm_apic_hw_enabled(apic))
250     return -1;
251    
252     __apic_update_ppr(apic, &ppr);
253     diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
254     index 7fed1d6dd1a1..cea6568667c4 100644
255     --- a/arch/x86/kvm/x86.c
256     +++ b/arch/x86/kvm/x86.c
257     @@ -1447,7 +1447,7 @@ static int set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool scale)
258     vcpu->arch.tsc_always_catchup = 1;
259     return 0;
260     } else {
261     - WARN(1, "user requested TSC rate below hardware speed\n");
262     + pr_warn_ratelimited("user requested TSC rate below hardware speed\n");
263     return -1;
264     }
265     }
266     @@ -1457,8 +1457,8 @@ static int set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool scale)
267     user_tsc_khz, tsc_khz);
268    
269     if (ratio == 0 || ratio >= kvm_max_tsc_scaling_ratio) {
270     - WARN_ONCE(1, "Invalid TSC scaling ratio - virtual-tsc-khz=%u\n",
271     - user_tsc_khz);
272     + pr_warn_ratelimited("Invalid TSC scaling ratio - virtual-tsc-khz=%u\n",
273     + user_tsc_khz);
274     return -1;
275     }
276    
277     diff --git a/block/blk-core.c b/block/blk-core.c
278     index 6eed5d84c2ef..682bc561b77b 100644
279     --- a/block/blk-core.c
280     +++ b/block/blk-core.c
281     @@ -2445,10 +2445,8 @@ blk_qc_t generic_make_request(struct bio *bio)
282     flags = 0;
283     if (bio->bi_opf & REQ_NOWAIT)
284     flags = BLK_MQ_REQ_NOWAIT;
285     - if (blk_queue_enter(q, flags) < 0) {
286     + if (blk_queue_enter(q, flags) < 0)
287     enter_succeeded = false;
288     - q = NULL;
289     - }
290     }
291    
292     if (enter_succeeded) {
293     @@ -2479,6 +2477,7 @@ blk_qc_t generic_make_request(struct bio *bio)
294     bio_wouldblock_error(bio);
295     else
296     bio_io_error(bio);
297     + q = NULL;
298     }
299     bio = bio_list_pop(&bio_list_on_stack[0]);
300     } while (bio);
301     diff --git a/crypto/cryptd.c b/crypto/cryptd.c
302     index addca7bae33f..e0c8e907b086 100644
303     --- a/crypto/cryptd.c
304     +++ b/crypto/cryptd.c
305     @@ -586,6 +586,7 @@ static void cryptd_skcipher_free(struct skcipher_instance *inst)
306     struct skcipherd_instance_ctx *ctx = skcipher_instance_ctx(inst);
307    
308     crypto_drop_skcipher(&ctx->spawn);
309     + kfree(inst);
310     }
311    
312     static int cryptd_create_skcipher(struct crypto_template *tmpl,
313     diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
314     index ceeb2eaf28cf..3cca814348a2 100644
315     --- a/crypto/crypto_user.c
316     +++ b/crypto/crypto_user.c
317     @@ -55,6 +55,9 @@ static struct crypto_alg *crypto_alg_match(struct crypto_user_alg *p, int exact)
318     list_for_each_entry(q, &crypto_alg_list, cra_list) {
319     int match = 0;
320    
321     + if (crypto_is_larval(q))
322     + continue;
323     +
324     if ((q->cra_flags ^ p->cru_type) & p->cru_mask)
325     continue;
326    
327     diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
328     index cb1b44d78a1f..1c658ec3cbf4 100644
329     --- a/drivers/dma/imx-sdma.c
330     +++ b/drivers/dma/imx-sdma.c
331     @@ -681,7 +681,7 @@ static int sdma_load_script(struct sdma_engine *sdma, void *buf, int size,
332     spin_lock_irqsave(&sdma->channel_0_lock, flags);
333    
334     bd0->mode.command = C0_SETPM;
335     - bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
336     + bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD;
337     bd0->mode.count = size / 2;
338     bd0->buffer_addr = buf_phys;
339     bd0->ext_buffer_addr = address;
340     @@ -1000,7 +1000,7 @@ static int sdma_load_context(struct sdma_channel *sdmac)
341     context->gReg[7] = sdmac->watermark_level;
342    
343     bd0->mode.command = C0_SETDM;
344     - bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD;
345     + bd0->mode.status = BD_DONE | BD_WRAP | BD_EXTD;
346     bd0->mode.count = sizeof(*context) / 4;
347     bd0->buffer_addr = sdma->context_phys;
348     bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * channel;
349     diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c
350     index 1617715aa6e0..489c8fa4d2e2 100644
351     --- a/drivers/dma/qcom/bam_dma.c
352     +++ b/drivers/dma/qcom/bam_dma.c
353     @@ -808,6 +808,9 @@ static u32 process_channel_irqs(struct bam_device *bdev)
354     /* Number of bytes available to read */
355     avail = CIRC_CNT(offset, bchan->head, MAX_DESCRIPTORS + 1);
356    
357     + if (offset < bchan->head)
358     + avail--;
359     +
360     list_for_each_entry_safe(async_desc, tmp,
361     &bchan->desc_list, desc_node) {
362     /* Not enough data to read */
363     diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
364     index 325e2213cac5..46568497ef18 100644
365     --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
366     +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
367     @@ -1801,25 +1801,6 @@ static void gfx_v9_0_gpu_init(struct amdgpu_device *adev)
368     mutex_unlock(&adev->srbm_mutex);
369    
370     gfx_v9_0_init_compute_vmid(adev);
371     -
372     - mutex_lock(&adev->grbm_idx_mutex);
373     - /*
374     - * making sure that the following register writes will be broadcasted
375     - * to all the shaders
376     - */
377     - gfx_v9_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
378     -
379     - WREG32_SOC15(GC, 0, mmPA_SC_FIFO_SIZE,
380     - (adev->gfx.config.sc_prim_fifo_size_frontend <<
381     - PA_SC_FIFO_SIZE__SC_FRONTEND_PRIM_FIFO_SIZE__SHIFT) |
382     - (adev->gfx.config.sc_prim_fifo_size_backend <<
383     - PA_SC_FIFO_SIZE__SC_BACKEND_PRIM_FIFO_SIZE__SHIFT) |
384     - (adev->gfx.config.sc_hiz_tile_fifo_size <<
385     - PA_SC_FIFO_SIZE__SC_HIZ_TILE_FIFO_SIZE__SHIFT) |
386     - (adev->gfx.config.sc_earlyz_tile_fifo_size <<
387     - PA_SC_FIFO_SIZE__SC_EARLYZ_TILE_FIFO_SIZE__SHIFT));
388     - mutex_unlock(&adev->grbm_idx_mutex);
389     -
390     }
391    
392     static void gfx_v9_0_wait_for_rlc_serdes(struct amdgpu_device *adev)
393     diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c b/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c
394     index 4e1fd5393845..fbbd5a4877e9 100644
395     --- a/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c
396     +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/process_pptables_v1_0.c
397     @@ -916,8 +916,10 @@ static int init_thermal_controller(
398     PHM_PlatformCaps_ThermalController
399     );
400    
401     - if (0 == powerplay_table->usFanTableOffset)
402     + if (0 == powerplay_table->usFanTableOffset) {
403     + hwmgr->thermal_controller.use_hw_fan_control = 1;
404     return 0;
405     + }
406    
407     fan_table = (const PPTable_Generic_SubTable_Header *)
408     (((unsigned long)powerplay_table) +
409     diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
410     index d3d96260f440..6ee864455a12 100644
411     --- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
412     +++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
413     @@ -677,6 +677,7 @@ struct pp_thermal_controller_info {
414     uint8_t ucType;
415     uint8_t ucI2cLine;
416     uint8_t ucI2cAddress;
417     + uint8_t use_hw_fan_control;
418     struct pp_fan_info fanInfo;
419     struct pp_advance_fan_control_parameters advanceFanControlParameters;
420     };
421     diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
422     index 45629f26dbc2..0dbca3865851 100644
423     --- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
424     +++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
425     @@ -2038,6 +2038,10 @@ static int polaris10_thermal_setup_fan_table(struct pp_hwmgr *hwmgr)
426     return 0;
427     }
428    
429     + /* use hardware fan control */
430     + if (hwmgr->thermal_controller.use_hw_fan_control)
431     + return 0;
432     +
433     tmp64 = hwmgr->thermal_controller.advanceFanControlParameters.
434     usPWMMin * duty100;
435     do_div(tmp64, 10000);
436     diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
437     index a0663f44e218..8b546fde139d 100644
438     --- a/drivers/gpu/drm/drm_fb_helper.c
439     +++ b/drivers/gpu/drm/drm_fb_helper.c
440     @@ -2957,7 +2957,8 @@ static int drm_fbdev_fb_open(struct fb_info *info, int user)
441     {
442     struct drm_fb_helper *fb_helper = info->par;
443    
444     - if (!try_module_get(fb_helper->dev->driver->fops->owner))
445     + /* No need to take a ref for fbcon because it unbinds on unregister */
446     + if (user && !try_module_get(fb_helper->dev->driver->fops->owner))
447     return -ENODEV;
448    
449     return 0;
450     @@ -2967,7 +2968,8 @@ static int drm_fbdev_fb_release(struct fb_info *info, int user)
451     {
452     struct drm_fb_helper *fb_helper = info->par;
453    
454     - module_put(fb_helper->dev->driver->fops->owner);
455     + if (user)
456     + module_put(fb_helper->dev->driver->fops->owner);
457    
458     return 0;
459     }
460     diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
461     index ee4a5e1221f1..b44bed554211 100644
462     --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
463     +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
464     @@ -42,6 +42,14 @@ static const struct drm_dmi_panel_orientation_data asus_t100ha = {
465     .orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
466     };
467    
468     +static const struct drm_dmi_panel_orientation_data gpd_micropc = {
469     + .width = 720,
470     + .height = 1280,
471     + .bios_dates = (const char * const []){ "04/26/2019",
472     + NULL },
473     + .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
474     +};
475     +
476     static const struct drm_dmi_panel_orientation_data gpd_pocket = {
477     .width = 1200,
478     .height = 1920,
479     @@ -50,6 +58,14 @@ static const struct drm_dmi_panel_orientation_data gpd_pocket = {
480     .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
481     };
482    
483     +static const struct drm_dmi_panel_orientation_data gpd_pocket2 = {
484     + .width = 1200,
485     + .height = 1920,
486     + .bios_dates = (const char * const []){ "06/28/2018", "08/28/2018",
487     + "12/07/2018", NULL },
488     + .orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
489     +};
490     +
491     static const struct drm_dmi_panel_orientation_data gpd_win = {
492     .width = 720,
493     .height = 1280,
494     @@ -85,6 +101,14 @@ static const struct dmi_system_id orientation_data[] = {
495     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100HAN"),
496     },
497     .driver_data = (void *)&asus_t100ha,
498     + }, { /* GPD MicroPC (generic strings, also match on bios date) */
499     + .matches = {
500     + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
501     + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
502     + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
503     + DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
504     + },
505     + .driver_data = (void *)&gpd_micropc,
506     }, { /*
507     * GPD Pocket, note that the the DMI data is less generic then
508     * it seems, devices with a board-vendor of "AMI Corporation"
509     @@ -98,6 +122,14 @@ static const struct dmi_system_id orientation_data[] = {
510     DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
511     },
512     .driver_data = (void *)&gpd_pocket,
513     + }, { /* GPD Pocket 2 (generic strings, also match on bios date) */
514     + .matches = {
515     + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Default string"),
516     + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Default string"),
517     + DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Default string"),
518     + DMI_EXACT_MATCH(DMI_BOARD_NAME, "Default string"),
519     + },
520     + .driver_data = (void *)&gpd_pocket2,
521     }, { /* GPD Win (same note on DMI match as GPD Pocket) */
522     .matches = {
523     DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AMI Corporation"),
524     diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
525     index f225fbc6edd2..6a859e077ea0 100644
526     --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
527     +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
528     @@ -760,7 +760,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
529     if (IS_ERR(gpu->cmdbuf_suballoc)) {
530     dev_err(gpu->dev, "Failed to create cmdbuf suballocator\n");
531     ret = PTR_ERR(gpu->cmdbuf_suballoc);
532     - goto fail;
533     + goto destroy_iommu;
534     }
535    
536     /* Create buffer: */
537     @@ -768,7 +768,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
538     PAGE_SIZE);
539     if (ret) {
540     dev_err(gpu->dev, "could not create command buffer\n");
541     - goto destroy_iommu;
542     + goto destroy_suballoc;
543     }
544    
545     if (gpu->mmu->version == ETNAVIV_IOMMU_V1 &&
546     @@ -800,6 +800,9 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu)
547     free_buffer:
548     etnaviv_cmdbuf_free(&gpu->buffer);
549     gpu->buffer.suballoc = NULL;
550     +destroy_suballoc:
551     + etnaviv_cmdbuf_suballoc_destroy(gpu->cmdbuf_suballoc);
552     + gpu->cmdbuf_suballoc = NULL;
553     destroy_iommu:
554     etnaviv_iommu_destroy(gpu->mmu);
555     gpu->mmu = NULL;
556     diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
557     index cf9b600cca79..ca1a578d790d 100644
558     --- a/drivers/gpu/drm/i915/intel_csr.c
559     +++ b/drivers/gpu/drm/i915/intel_csr.c
560     @@ -282,10 +282,17 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
561     uint32_t i;
562     uint32_t *dmc_payload;
563     uint32_t required_version;
564     + size_t fsize;
565    
566     if (!fw)
567     return NULL;
568    
569     + fsize = sizeof(struct intel_css_header) +
570     + sizeof(struct intel_package_header) +
571     + sizeof(struct intel_dmc_header);
572     + if (fsize > fw->size)
573     + goto error_truncated;
574     +
575     /* Extract CSS Header information*/
576     css_header = (struct intel_css_header *)fw->data;
577     if (sizeof(struct intel_css_header) !=
578     @@ -360,6 +367,9 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
579     return NULL;
580     }
581     readcount += dmc_offset;
582     + fsize += dmc_offset;
583     + if (fsize > fw->size)
584     + goto error_truncated;
585    
586     /* Extract dmc_header information. */
587     dmc_header = (struct intel_dmc_header *)&fw->data[readcount];
588     @@ -391,6 +401,10 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
589    
590     /* fw_size is in dwords, so multiplied by 4 to convert into bytes. */
591     nbytes = dmc_header->fw_size * 4;
592     + fsize += nbytes;
593     + if (fsize > fw->size)
594     + goto error_truncated;
595     +
596     if (nbytes > CSR_MAX_FW_SIZE) {
597     DRM_ERROR("DMC firmware too big (%u bytes)\n", nbytes);
598     return NULL;
599     @@ -404,6 +418,10 @@ static uint32_t *parse_csr_fw(struct drm_i915_private *dev_priv,
600     }
601    
602     return memcpy(dmc_payload, &fw->data[readcount], nbytes);
603     +
604     +error_truncated:
605     + DRM_ERROR("Truncated DMC firmware, rejecting.\n");
606     + return NULL;
607     }
608    
609     static void csr_load_work_fn(struct work_struct *work)
610     diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c
611     index 11e2dcdd6b18..ff34f9bb55a1 100644
612     --- a/drivers/gpu/drm/imx/ipuv3-crtc.c
613     +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
614     @@ -98,14 +98,14 @@ static void ipu_crtc_atomic_disable(struct drm_crtc *crtc,
615     ipu_dc_disable(ipu);
616     ipu_prg_disable(ipu);
617    
618     + drm_crtc_vblank_off(crtc);
619     +
620     spin_lock_irq(&crtc->dev->event_lock);
621     - if (crtc->state->event) {
622     + if (crtc->state->event && !crtc->state->active) {
623     drm_crtc_send_vblank_event(crtc, crtc->state->event);
624     crtc->state->event = NULL;
625     }
626     spin_unlock_irq(&crtc->dev->event_lock);
627     -
628     - drm_crtc_vblank_off(crtc);
629     }
630    
631     static void imx_drm_crtc_reset(struct drm_crtc *crtc)
632     diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
633     index 47ec604289b7..fd83046d8376 100644
634     --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
635     +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
636     @@ -310,6 +310,7 @@ err_config_cleanup:
637     static void mtk_drm_kms_deinit(struct drm_device *drm)
638     {
639     drm_kms_helper_poll_fini(drm);
640     + drm_atomic_helper_shutdown(drm);
641    
642     component_unbind_all(drm->dev, drm);
643     drm_mode_config_cleanup(drm);
644     @@ -390,7 +391,9 @@ static void mtk_drm_unbind(struct device *dev)
645     struct mtk_drm_private *private = dev_get_drvdata(dev);
646    
647     drm_dev_unregister(private->drm);
648     + mtk_drm_kms_deinit(private->drm);
649     drm_dev_put(private->drm);
650     + private->num_pipes = 0;
651     private->drm = NULL;
652     }
653    
654     @@ -559,13 +562,8 @@ err_node:
655     static int mtk_drm_remove(struct platform_device *pdev)
656     {
657     struct mtk_drm_private *private = platform_get_drvdata(pdev);
658     - struct drm_device *drm = private->drm;
659     int i;
660    
661     - drm_dev_unregister(drm);
662     - mtk_drm_kms_deinit(drm);
663     - drm_dev_put(drm);
664     -
665     component_master_del(&pdev->dev, &mtk_drm_ops);
666     pm_runtime_disable(&pdev->dev);
667     of_node_put(private->mutex_node);
668     diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
669     index 66df1b177959..0dd317ac5fe5 100644
670     --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
671     +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
672     @@ -630,6 +630,15 @@ static void mtk_dsi_poweroff(struct mtk_dsi *dsi)
673     if (--dsi->refcount != 0)
674     return;
675    
676     + /*
677     + * mtk_dsi_stop() and mtk_dsi_start() is asymmetric, since
678     + * mtk_dsi_stop() should be called after mtk_drm_crtc_atomic_disable(),
679     + * which needs irq for vblank, and mtk_dsi_stop() will disable irq.
680     + * mtk_dsi_start() needs to be called in mtk_output_dsi_enable(),
681     + * after dsi is fully set.
682     + */
683     + mtk_dsi_stop(dsi);
684     +
685     if (!mtk_dsi_switch_to_cmd_mode(dsi, VM_DONE_INT_FLAG, 500)) {
686     if (dsi->panel) {
687     if (drm_panel_unprepare(dsi->panel)) {
688     @@ -696,7 +705,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
689     }
690     }
691    
692     - mtk_dsi_stop(dsi);
693     mtk_dsi_poweroff(dsi);
694    
695     dsi->enabled = false;
696     @@ -841,6 +849,8 @@ static void mtk_dsi_destroy_conn_enc(struct mtk_dsi *dsi)
697     /* Skip connector cleanup if creation was delegated to the bridge */
698     if (dsi->conn.dev)
699     drm_connector_cleanup(&dsi->conn);
700     + if (dsi->panel)
701     + drm_panel_detach(dsi->panel);
702     }
703    
704     static void mtk_dsi_ddp_start(struct mtk_ddp_comp *comp)
705     diff --git a/drivers/i2c/busses/i2c-pca-platform.c b/drivers/i2c/busses/i2c-pca-platform.c
706     index de3fe6e828cb..f50afa8e3cba 100644
707     --- a/drivers/i2c/busses/i2c-pca-platform.c
708     +++ b/drivers/i2c/busses/i2c-pca-platform.c
709     @@ -21,7 +21,6 @@
710     #include <linux/platform_device.h>
711     #include <linux/i2c-algo-pca.h>
712     #include <linux/platform_data/i2c-pca-platform.h>
713     -#include <linux/gpio.h>
714     #include <linux/gpio/consumer.h>
715     #include <linux/io.h>
716     #include <linux/of.h>
717     @@ -173,7 +172,7 @@ static int i2c_pca_pf_probe(struct platform_device *pdev)
718     i2c->adap.dev.parent = &pdev->dev;
719     i2c->adap.dev.of_node = np;
720    
721     - i2c->gpio = devm_gpiod_get_optional(&pdev->dev, "reset-gpios", GPIOD_OUT_LOW);
722     + i2c->gpio = devm_gpiod_get_optional(&pdev->dev, "reset", GPIOD_OUT_LOW);
723     if (IS_ERR(i2c->gpio))
724     return PTR_ERR(i2c->gpio);
725    
726     diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
727     index ac1cffd2a09b..f4daa56d204d 100644
728     --- a/drivers/md/raid0.c
729     +++ b/drivers/md/raid0.c
730     @@ -547,6 +547,7 @@ static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
731     trace_block_bio_remap(bdev_get_queue(rdev->bdev),
732     discard_bio, disk_devt(mddev->gendisk),
733     bio->bi_iter.bi_sector);
734     + bio_clear_flag(bio, BIO_QUEUE_ENTERED);
735     generic_make_request(discard_bio);
736     }
737     bio_endio(bio);
738     @@ -602,6 +603,7 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
739     disk_devt(mddev->gendisk), bio_sector);
740     mddev_check_writesame(mddev, bio);
741     mddev_check_write_zeroes(mddev, bio);
742     + bio_clear_flag(bio, BIO_QUEUE_ENTERED);
743     generic_make_request(bio);
744     return true;
745     }
746     diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
747     index 927a1235408d..ca11f8a7569d 100644
748     --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
749     +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
750     @@ -1089,7 +1089,6 @@ static struct device *s5p_mfc_alloc_memdev(struct device *dev,
751     device_initialize(child);
752     dev_set_name(child, "%s:%s", dev_name(dev), name);
753     child->parent = dev;
754     - child->bus = dev->bus;
755     child->coherent_dma_mask = dev->coherent_dma_mask;
756     child->dma_mask = dev->dma_mask;
757     child->release = s5p_mfc_memdev_release;
758     diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
759     index fdff5526d2e8..f2b0b587a1be 100644
760     --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
761     +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c
762     @@ -2777,7 +2777,7 @@ static void set_promisc_tcam_enable(struct dsaf_device *dsaf_dev, u32 port)
763     struct hns_mac_cb *mac_cb;
764     u8 addr[ETH_ALEN] = {0};
765     u8 port_num;
766     - u16 mskid;
767     + int mskid;
768    
769     /* promisc use vague table match with vlanid = 0 & macaddr = 0 */
770     hns_dsaf_set_mac_key(dsaf_dev, &mac_key, 0x00, port, addr);
771     @@ -3149,6 +3149,9 @@ int hns_dsaf_roce_reset(struct fwnode_handle *dsaf_fwnode, bool dereset)
772     dsaf_set_bit(credit, DSAF_SBM_ROCEE_CFG_CRD_EN_B, 1);
773     dsaf_write_dev(dsaf_dev, DSAF_SBM_ROCEE_CFG_REG_REG, credit);
774     }
775     +
776     + put_device(&pdev->dev);
777     +
778     return 0;
779     }
780     EXPORT_SYMBOL(hns_dsaf_roce_reset);
781     diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
782     index ff2f6b8e2fab..0cab06046e5d 100644
783     --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
784     +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
785     @@ -4681,6 +4681,16 @@ static int mlxsw_sp_netdevice_port_upper_event(struct net_device *lower_dev,
786     } else if (netif_is_macvlan(upper_dev)) {
787     if (!info->linking)
788     mlxsw_sp_rif_macvlan_del(mlxsw_sp, upper_dev);
789     + } else if (is_vlan_dev(upper_dev)) {
790     + struct net_device *br_dev;
791     +
792     + if (!netif_is_bridge_port(upper_dev))
793     + break;
794     + if (info->linking)
795     + break;
796     + br_dev = netdev_master_upper_dev_get(upper_dev);
797     + mlxsw_sp_port_bridge_leave(mlxsw_sp_port, upper_dev,
798     + br_dev);
799     }
800     break;
801     }
802     diff --git a/drivers/platform/mellanox/mlxreg-hotplug.c b/drivers/platform/mellanox/mlxreg-hotplug.c
803     index eca16d00e310..d52c821b8584 100644
804     --- a/drivers/platform/mellanox/mlxreg-hotplug.c
805     +++ b/drivers/platform/mellanox/mlxreg-hotplug.c
806     @@ -673,6 +673,7 @@ static int mlxreg_hotplug_remove(struct platform_device *pdev)
807    
808     /* Clean interrupts setup. */
809     mlxreg_hotplug_unset_irq(priv);
810     + devm_free_irq(&pdev->dev, priv->irq, priv);
811    
812     return 0;
813     }
814     diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
815     index b6f2ff95c3ed..59f3a37a44d7 100644
816     --- a/drivers/platform/x86/asus-nb-wmi.c
817     +++ b/drivers/platform/x86/asus-nb-wmi.c
818     @@ -78,10 +78,12 @@ static bool asus_q500a_i8042_filter(unsigned char data, unsigned char str,
819    
820     static struct quirk_entry quirk_asus_unknown = {
821     .wapf = 0,
822     + .wmi_backlight_set_devstate = true,
823     };
824    
825     static struct quirk_entry quirk_asus_q500a = {
826     .i8042_filter = asus_q500a_i8042_filter,
827     + .wmi_backlight_set_devstate = true,
828     };
829    
830     /*
831     @@ -92,26 +94,32 @@ static struct quirk_entry quirk_asus_q500a = {
832     static struct quirk_entry quirk_asus_x55u = {
833     .wapf = 4,
834     .wmi_backlight_power = true,
835     + .wmi_backlight_set_devstate = true,
836     .no_display_toggle = true,
837     };
838    
839     static struct quirk_entry quirk_asus_wapf4 = {
840     .wapf = 4,
841     + .wmi_backlight_set_devstate = true,
842     };
843    
844     static struct quirk_entry quirk_asus_x200ca = {
845     .wapf = 2,
846     + .wmi_backlight_set_devstate = true,
847     };
848    
849     static struct quirk_entry quirk_asus_ux303ub = {
850     .wmi_backlight_native = true,
851     + .wmi_backlight_set_devstate = true,
852     };
853    
854     static struct quirk_entry quirk_asus_x550lb = {
855     + .wmi_backlight_set_devstate = true,
856     .xusb2pr = 0x01D9,
857     };
858    
859     static struct quirk_entry quirk_asus_forceals = {
860     + .wmi_backlight_set_devstate = true,
861     .wmi_force_als_set = true,
862     };
863    
864     diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
865     index db3556dc90d1..22eac449d3a3 100644
866     --- a/drivers/platform/x86/asus-wmi.c
867     +++ b/drivers/platform/x86/asus-wmi.c
868     @@ -2231,7 +2231,7 @@ static int asus_wmi_add(struct platform_device *pdev)
869     err = asus_wmi_backlight_init(asus);
870     if (err && err != -ENODEV)
871     goto fail_backlight;
872     - } else
873     + } else if (asus->driver->quirks->wmi_backlight_set_devstate)
874     err = asus_wmi_set_devstate(ASUS_WMI_DEVID_BACKLIGHT, 2, NULL);
875    
876     status = wmi_install_notify_handler(asus->driver->event_guid,
877     diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
878     index 6c1311f4b04d..57a79bddb286 100644
879     --- a/drivers/platform/x86/asus-wmi.h
880     +++ b/drivers/platform/x86/asus-wmi.h
881     @@ -44,6 +44,7 @@ struct quirk_entry {
882     bool store_backlight_power;
883     bool wmi_backlight_power;
884     bool wmi_backlight_native;
885     + bool wmi_backlight_set_devstate;
886     bool wmi_force_als_set;
887     int wapf;
888     /*
889     diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c
890     index 06cd7e818ed5..a0d0cecff55f 100644
891     --- a/drivers/platform/x86/intel-vbtn.c
892     +++ b/drivers/platform/x86/intel-vbtn.c
893     @@ -76,12 +76,24 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
894     struct platform_device *device = context;
895     struct intel_vbtn_priv *priv = dev_get_drvdata(&device->dev);
896     unsigned int val = !(event & 1); /* Even=press, Odd=release */
897     - const struct key_entry *ke_rel;
898     + const struct key_entry *ke, *ke_rel;
899     bool autorelease;
900    
901     if (priv->wakeup_mode) {
902     - if (sparse_keymap_entry_from_scancode(priv->input_dev, event)) {
903     + ke = sparse_keymap_entry_from_scancode(priv->input_dev, event);
904     + if (ke) {
905     pm_wakeup_hard_event(&device->dev);
906     +
907     + /*
908     + * Switch events like tablet mode will wake the device
909     + * and report the new switch position to the input
910     + * subsystem.
911     + */
912     + if (ke->type == KE_SW)
913     + sparse_keymap_report_event(priv->input_dev,
914     + event,
915     + val,
916     + 0);
917     return;
918     }
919     goto out_unknown;
920     diff --git a/drivers/platform/x86/mlx-platform.c b/drivers/platform/x86/mlx-platform.c
921     index 78b4aa4410fb..742a0c217925 100644
922     --- a/drivers/platform/x86/mlx-platform.c
923     +++ b/drivers/platform/x86/mlx-platform.c
924     @@ -1626,7 +1626,7 @@ static int __init mlxplat_init(void)
925    
926     for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) {
927     priv->pdev_mux[i] = platform_device_register_resndata(
928     - &mlxplat_dev->dev,
929     + &priv->pdev_i2c->dev,
930     "i2c-mux-reg", i, NULL,
931     0, &mlxplat_mux_data[i],
932     sizeof(mlxplat_mux_data[i]));
933     diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
934     index c120929d4ffe..c43eccdea65d 100644
935     --- a/drivers/scsi/hpsa.c
936     +++ b/drivers/scsi/hpsa.c
937     @@ -4923,7 +4923,7 @@ static int hpsa_scsi_ioaccel2_queue_command(struct ctlr_info *h,
938     curr_sg->reserved[0] = 0;
939     curr_sg->reserved[1] = 0;
940     curr_sg->reserved[2] = 0;
941     - curr_sg->chain_indicator = 0x80;
942     + curr_sg->chain_indicator = IOACCEL2_CHAIN;
943    
944     curr_sg = h->ioaccel2_cmd_sg_list[c->cmdindex];
945     }
946     @@ -4940,6 +4940,11 @@ static int hpsa_scsi_ioaccel2_queue_command(struct ctlr_info *h,
947     curr_sg++;
948     }
949    
950     + /*
951     + * Set the last s/g element bit
952     + */
953     + (curr_sg - 1)->chain_indicator = IOACCEL2_LAST_SG;
954     +
955     switch (cmd->sc_data_direction) {
956     case DMA_TO_DEVICE:
957     cp->direction &= ~IOACCEL2_DIRECTION_MASK;
958     diff --git a/drivers/scsi/hpsa_cmd.h b/drivers/scsi/hpsa_cmd.h
959     index 21a726e2eec6..f6afca4b2319 100644
960     --- a/drivers/scsi/hpsa_cmd.h
961     +++ b/drivers/scsi/hpsa_cmd.h
962     @@ -517,6 +517,7 @@ struct ioaccel2_sg_element {
963     u8 reserved[3];
964     u8 chain_indicator;
965     #define IOACCEL2_CHAIN 0x80
966     +#define IOACCEL2_LAST_SG 0x40
967     };
968    
969     /*
970     diff --git a/drivers/spi/spi-bitbang.c b/drivers/spi/spi-bitbang.c
971     index f29176000b8d..06cf9388e74f 100644
972     --- a/drivers/spi/spi-bitbang.c
973     +++ b/drivers/spi/spi-bitbang.c
974     @@ -416,7 +416,7 @@ int spi_bitbang_start(struct spi_bitbang *bitbang)
975     if (ret)
976     spi_master_put(master);
977    
978     - return 0;
979     + return ret;
980     }
981     EXPORT_SYMBOL_GPL(spi_bitbang_start);
982    
983     diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
984     index ac7620120491..c46efa47d68a 100644
985     --- a/drivers/target/target_core_user.c
986     +++ b/drivers/target/target_core_user.c
987     @@ -1317,12 +1317,13 @@ static int tcmu_check_expired_cmd(int id, void *p, void *data)
988     * target_complete_cmd will translate this to LUN COMM FAILURE
989     */
990     scsi_status = SAM_STAT_CHECK_CONDITION;
991     + list_del_init(&cmd->queue_entry);
992     } else {
993     + list_del_init(&cmd->queue_entry);
994     idr_remove(&udev->commands, id);
995     tcmu_free_cmd(cmd);
996     scsi_status = SAM_STAT_TASK_SET_FULL;
997     }
998     - list_del_init(&cmd->queue_entry);
999    
1000     pr_debug("Timing out cmd %u on dev %s that is %s.\n",
1001     id, udev->name, is_running ? "inflight" : "queued");
1002     diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
1003     index b121d8f8f3d7..27aeca30eeae 100644
1004     --- a/drivers/tty/rocket.c
1005     +++ b/drivers/tty/rocket.c
1006     @@ -266,7 +266,7 @@ MODULE_PARM_DESC(pc104_3, "set interface types for ISA(PC104) board #3 (e.g. pc1
1007     module_param_array(pc104_4, ulong, NULL, 0);
1008     MODULE_PARM_DESC(pc104_4, "set interface types for ISA(PC104) board #4 (e.g. pc104_4=232,232,485,485,...");
1009    
1010     -static int rp_init(void);
1011     +static int __init rp_init(void);
1012     static void rp_cleanup_module(void);
1013    
1014     module_init(rp_init);
1015     diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
1016     index 55b178c1bd65..372cc7ff228f 100644
1017     --- a/drivers/tty/serial/sc16is7xx.c
1018     +++ b/drivers/tty/serial/sc16is7xx.c
1019     @@ -1494,10 +1494,12 @@ static int __init sc16is7xx_init(void)
1020     #endif
1021     return ret;
1022    
1023     +#ifdef CONFIG_SERIAL_SC16IS7XX_SPI
1024     err_spi:
1025     #ifdef CONFIG_SERIAL_SC16IS7XX_I2C
1026     i2c_del_driver(&sc16is7xx_i2c_uart_driver);
1027     #endif
1028     +#endif
1029     err_i2c:
1030     uart_unregister_driver(&sc16is7xx_uart);
1031     return ret;
1032     diff --git a/drivers/usb/gadget/udc/fusb300_udc.c b/drivers/usb/gadget/udc/fusb300_udc.c
1033     index 263804d154a7..00e3f66836a9 100644
1034     --- a/drivers/usb/gadget/udc/fusb300_udc.c
1035     +++ b/drivers/usb/gadget/udc/fusb300_udc.c
1036     @@ -1342,12 +1342,15 @@ static const struct usb_gadget_ops fusb300_gadget_ops = {
1037     static int fusb300_remove(struct platform_device *pdev)
1038     {
1039     struct fusb300 *fusb300 = platform_get_drvdata(pdev);
1040     + int i;
1041    
1042     usb_del_gadget_udc(&fusb300->gadget);
1043     iounmap(fusb300->reg);
1044     free_irq(platform_get_irq(pdev, 0), fusb300);
1045    
1046     fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req);
1047     + for (i = 0; i < FUSB300_MAX_NUM_EP; i++)
1048     + kfree(fusb300->ep[i]);
1049     kfree(fusb300);
1050    
1051     return 0;
1052     @@ -1491,6 +1494,8 @@ clean_up:
1053     if (fusb300->ep0_req)
1054     fusb300_free_request(&fusb300->ep[0]->ep,
1055     fusb300->ep0_req);
1056     + for (i = 0; i < FUSB300_MAX_NUM_EP; i++)
1057     + kfree(fusb300->ep[i]);
1058     kfree(fusb300);
1059     }
1060     if (reg)
1061     diff --git a/drivers/usb/gadget/udc/lpc32xx_udc.c b/drivers/usb/gadget/udc/lpc32xx_udc.c
1062     index b0781771704e..eafc2a00c96a 100644
1063     --- a/drivers/usb/gadget/udc/lpc32xx_udc.c
1064     +++ b/drivers/usb/gadget/udc/lpc32xx_udc.c
1065     @@ -922,8 +922,7 @@ static struct lpc32xx_usbd_dd_gad *udc_dd_alloc(struct lpc32xx_udc *udc)
1066     dma_addr_t dma;
1067     struct lpc32xx_usbd_dd_gad *dd;
1068    
1069     - dd = (struct lpc32xx_usbd_dd_gad *) dma_pool_alloc(
1070     - udc->dd_cache, (GFP_KERNEL | GFP_DMA), &dma);
1071     + dd = dma_pool_alloc(udc->dd_cache, GFP_ATOMIC | GFP_DMA, &dma);
1072     if (dd)
1073     dd->this_dma = dma;
1074    
1075     diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
1076     index 8fed470bb7e1..23b13fbecdc2 100644
1077     --- a/fs/btrfs/dev-replace.c
1078     +++ b/fs/btrfs/dev-replace.c
1079     @@ -599,17 +599,25 @@ static int btrfs_dev_replace_finishing(struct btrfs_fs_info *fs_info,
1080     }
1081     btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
1082    
1083     - trans = btrfs_start_transaction(root, 0);
1084     - if (IS_ERR(trans)) {
1085     - mutex_unlock(&dev_replace->lock_finishing_cancel_unmount);
1086     - return PTR_ERR(trans);
1087     + while (1) {
1088     + trans = btrfs_start_transaction(root, 0);
1089     + if (IS_ERR(trans)) {
1090     + mutex_unlock(&dev_replace->lock_finishing_cancel_unmount);
1091     + return PTR_ERR(trans);
1092     + }
1093     + ret = btrfs_commit_transaction(trans);
1094     + WARN_ON(ret);
1095     + /* keep away write_all_supers() during the finishing procedure */
1096     + mutex_lock(&fs_info->fs_devices->device_list_mutex);
1097     + mutex_lock(&fs_info->chunk_mutex);
1098     + if (src_device->has_pending_chunks) {
1099     + mutex_unlock(&root->fs_info->chunk_mutex);
1100     + mutex_unlock(&root->fs_info->fs_devices->device_list_mutex);
1101     + } else {
1102     + break;
1103     + }
1104     }
1105     - ret = btrfs_commit_transaction(trans);
1106     - WARN_ON(ret);
1107    
1108     - /* keep away write_all_supers() during the finishing procedure */
1109     - mutex_lock(&fs_info->fs_devices->device_list_mutex);
1110     - mutex_lock(&fs_info->chunk_mutex);
1111     btrfs_dev_replace_write_lock(dev_replace);
1112     dev_replace->replace_state =
1113     scrub_ret ? BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED
1114     diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
1115     index 207f4e87445d..2fd000308be7 100644
1116     --- a/fs/btrfs/volumes.c
1117     +++ b/fs/btrfs/volumes.c
1118     @@ -4873,6 +4873,7 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
1119     for (i = 0; i < map->num_stripes; i++) {
1120     num_bytes = map->stripes[i].dev->bytes_used + stripe_size;
1121     btrfs_device_set_bytes_used(map->stripes[i].dev, num_bytes);
1122     + map->stripes[i].dev->has_pending_chunks = true;
1123     }
1124    
1125     atomic64_sub(stripe_size * map->num_stripes, &info->free_chunk_space);
1126     @@ -7348,6 +7349,7 @@ void btrfs_update_commit_device_bytes_used(struct btrfs_transaction *trans)
1127     for (i = 0; i < map->num_stripes; i++) {
1128     dev = map->stripes[i].dev;
1129     dev->commit_bytes_used = dev->bytes_used;
1130     + dev->has_pending_chunks = false;
1131     }
1132     }
1133     mutex_unlock(&fs_info->chunk_mutex);
1134     diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
1135     index 23e9285d88de..c0e3015b1bac 100644
1136     --- a/fs/btrfs/volumes.h
1137     +++ b/fs/btrfs/volumes.h
1138     @@ -54,6 +54,11 @@ struct btrfs_device {
1139    
1140     spinlock_t io_lock ____cacheline_aligned;
1141     int running_pending;
1142     + /* When true means this device has pending chunk alloc in
1143     + * current transaction. Protected by chunk_mutex.
1144     + */
1145     + bool has_pending_chunks;
1146     +
1147     /* regular prio bios */
1148     struct btrfs_pending_bios pending_bios;
1149     /* sync bios */
1150     diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
1151     index ebe649d9793c..bbe155465ca0 100644
1152     --- a/fs/f2fs/debug.c
1153     +++ b/fs/f2fs/debug.c
1154     @@ -94,8 +94,10 @@ static void update_general_status(struct f2fs_sb_info *sbi)
1155     si->free_secs = free_sections(sbi);
1156     si->prefree_count = prefree_segments(sbi);
1157     si->dirty_count = dirty_segments(sbi);
1158     - si->node_pages = NODE_MAPPING(sbi)->nrpages;
1159     - si->meta_pages = META_MAPPING(sbi)->nrpages;
1160     + if (sbi->node_inode)
1161     + si->node_pages = NODE_MAPPING(sbi)->nrpages;
1162     + if (sbi->meta_inode)
1163     + si->meta_pages = META_MAPPING(sbi)->nrpages;
1164     si->nats = NM_I(sbi)->nat_cnt;
1165     si->dirty_nats = NM_I(sbi)->dirty_nat_cnt;
1166     si->sits = MAIN_SEGS(sbi);
1167     @@ -168,7 +170,6 @@ static void update_sit_info(struct f2fs_sb_info *sbi)
1168     static void update_mem_info(struct f2fs_sb_info *sbi)
1169     {
1170     struct f2fs_stat_info *si = F2FS_STAT(sbi);
1171     - unsigned npages;
1172     int i;
1173    
1174     if (si->base_mem)
1175     @@ -251,10 +252,14 @@ get_cache:
1176     sizeof(struct extent_node);
1177    
1178     si->page_mem = 0;
1179     - npages = NODE_MAPPING(sbi)->nrpages;
1180     - si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
1181     - npages = META_MAPPING(sbi)->nrpages;
1182     - si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
1183     + if (sbi->node_inode) {
1184     + unsigned npages = NODE_MAPPING(sbi)->nrpages;
1185     + si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
1186     + }
1187     + if (sbi->meta_inode) {
1188     + unsigned npages = META_MAPPING(sbi)->nrpages;
1189     + si->page_mem += (unsigned long long)npages << PAGE_SHIFT;
1190     + }
1191     }
1192    
1193     static int stat_show(struct seq_file *s, void *v)
1194     diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
1195     index 2264f27fd26d..1871031e2d5e 100644
1196     --- a/fs/f2fs/super.c
1197     +++ b/fs/f2fs/super.c
1198     @@ -1050,7 +1050,10 @@ static void f2fs_put_super(struct super_block *sb)
1199     f2fs_bug_on(sbi, sbi->fsync_node_num);
1200    
1201     iput(sbi->node_inode);
1202     + sbi->node_inode = NULL;
1203     +
1204     iput(sbi->meta_inode);
1205     + sbi->meta_inode = NULL;
1206    
1207     /*
1208     * iput() can update stat information, if f2fs_write_checkpoint()
1209     @@ -3166,6 +3169,7 @@ free_node_inode:
1210     f2fs_release_ino_entry(sbi, true);
1211     truncate_inode_pages_final(NODE_MAPPING(sbi));
1212     iput(sbi->node_inode);
1213     + sbi->node_inode = NULL;
1214     free_stats:
1215     f2fs_destroy_stats(sbi);
1216     free_nm:
1217     @@ -3178,6 +3182,7 @@ free_devices:
1218     free_meta_inode:
1219     make_bad_inode(sbi->meta_inode);
1220     iput(sbi->meta_inode);
1221     + sbi->meta_inode = NULL;
1222     free_io_dummy:
1223     mempool_destroy(sbi->write_io_dummy);
1224     free_percpu:
1225     diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
1226     index bec75600e692..5f62007140cf 100644
1227     --- a/fs/nfsd/nfs4state.c
1228     +++ b/fs/nfsd/nfs4state.c
1229     @@ -1523,7 +1523,7 @@ static u32 nfsd4_get_drc_mem(struct nfsd4_channel_attrs *ca)
1230     * Never use more than a third of the remaining memory,
1231     * unless it's the only way to give this client a slot:
1232     */
1233     - avail = clamp_t(int, avail, slotsize, total_avail/3);
1234     + avail = clamp_t(unsigned long, avail, slotsize, total_avail/3);
1235     num = min_t(int, num, avail / slotsize);
1236     nfsd_drc_mem_used += num * slotsize;
1237     spin_unlock(&nfsd_drc_lock);
1238     diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
1239     index aaca81b5e119..e1ebdbe40032 100644
1240     --- a/fs/userfaultfd.c
1241     +++ b/fs/userfaultfd.c
1242     @@ -40,6 +40,16 @@ enum userfaultfd_state {
1243     /*
1244     * Start with fault_pending_wqh and fault_wqh so they're more likely
1245     * to be in the same cacheline.
1246     + *
1247     + * Locking order:
1248     + * fd_wqh.lock
1249     + * fault_pending_wqh.lock
1250     + * fault_wqh.lock
1251     + * event_wqh.lock
1252     + *
1253     + * To avoid deadlocks, IRQs must be disabled when taking any of the above locks,
1254     + * since fd_wqh.lock is taken by aio_poll() while it's holding a lock that's
1255     + * also taken in IRQ context.
1256     */
1257     struct userfaultfd_ctx {
1258     /* waitqueue head for the pending (i.e. not read) userfaults */
1259     @@ -459,7 +469,7 @@ vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
1260     blocking_state = return_to_userland ? TASK_INTERRUPTIBLE :
1261     TASK_KILLABLE;
1262    
1263     - spin_lock(&ctx->fault_pending_wqh.lock);
1264     + spin_lock_irq(&ctx->fault_pending_wqh.lock);
1265     /*
1266     * After the __add_wait_queue the uwq is visible to userland
1267     * through poll/read().
1268     @@ -471,7 +481,7 @@ vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
1269     * __add_wait_queue.
1270     */
1271     set_current_state(blocking_state);
1272     - spin_unlock(&ctx->fault_pending_wqh.lock);
1273     + spin_unlock_irq(&ctx->fault_pending_wqh.lock);
1274    
1275     if (!is_vm_hugetlb_page(vmf->vma))
1276     must_wait = userfaultfd_must_wait(ctx, vmf->address, vmf->flags,
1277     @@ -553,13 +563,13 @@ vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
1278     * kernel stack can be released after the list_del_init.
1279     */
1280     if (!list_empty_careful(&uwq.wq.entry)) {
1281     - spin_lock(&ctx->fault_pending_wqh.lock);
1282     + spin_lock_irq(&ctx->fault_pending_wqh.lock);
1283     /*
1284     * No need of list_del_init(), the uwq on the stack
1285     * will be freed shortly anyway.
1286     */
1287     list_del(&uwq.wq.entry);
1288     - spin_unlock(&ctx->fault_pending_wqh.lock);
1289     + spin_unlock_irq(&ctx->fault_pending_wqh.lock);
1290     }
1291    
1292     /*
1293     @@ -584,7 +594,7 @@ static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx,
1294     init_waitqueue_entry(&ewq->wq, current);
1295     release_new_ctx = NULL;
1296    
1297     - spin_lock(&ctx->event_wqh.lock);
1298     + spin_lock_irq(&ctx->event_wqh.lock);
1299     /*
1300     * After the __add_wait_queue the uwq is visible to userland
1301     * through poll/read().
1302     @@ -614,15 +624,15 @@ static void userfaultfd_event_wait_completion(struct userfaultfd_ctx *ctx,
1303     break;
1304     }
1305    
1306     - spin_unlock(&ctx->event_wqh.lock);
1307     + spin_unlock_irq(&ctx->event_wqh.lock);
1308    
1309     wake_up_poll(&ctx->fd_wqh, EPOLLIN);
1310     schedule();
1311    
1312     - spin_lock(&ctx->event_wqh.lock);
1313     + spin_lock_irq(&ctx->event_wqh.lock);
1314     }
1315     __set_current_state(TASK_RUNNING);
1316     - spin_unlock(&ctx->event_wqh.lock);
1317     + spin_unlock_irq(&ctx->event_wqh.lock);
1318    
1319     if (release_new_ctx) {
1320     struct vm_area_struct *vma;
1321     @@ -919,10 +929,10 @@ wakeup:
1322     * the last page faults that may have been already waiting on
1323     * the fault_*wqh.
1324     */
1325     - spin_lock(&ctx->fault_pending_wqh.lock);
1326     + spin_lock_irq(&ctx->fault_pending_wqh.lock);
1327     __wake_up_locked_key(&ctx->fault_pending_wqh, TASK_NORMAL, &range);
1328     __wake_up(&ctx->fault_wqh, TASK_NORMAL, 1, &range);
1329     - spin_unlock(&ctx->fault_pending_wqh.lock);
1330     + spin_unlock_irq(&ctx->fault_pending_wqh.lock);
1331    
1332     /* Flush pending events that may still wait on event_wqh */
1333     wake_up_all(&ctx->event_wqh);
1334     @@ -1135,7 +1145,7 @@ static ssize_t userfaultfd_ctx_read(struct userfaultfd_ctx *ctx, int no_wait,
1335    
1336     if (!ret && msg->event == UFFD_EVENT_FORK) {
1337     ret = resolve_userfault_fork(ctx, fork_nctx, msg);
1338     - spin_lock(&ctx->event_wqh.lock);
1339     + spin_lock_irq(&ctx->event_wqh.lock);
1340     if (!list_empty(&fork_event)) {
1341     /*
1342     * The fork thread didn't abort, so we can
1343     @@ -1181,7 +1191,7 @@ static ssize_t userfaultfd_ctx_read(struct userfaultfd_ctx *ctx, int no_wait,
1344     if (ret)
1345     userfaultfd_ctx_put(fork_nctx);
1346     }
1347     - spin_unlock(&ctx->event_wqh.lock);
1348     + spin_unlock_irq(&ctx->event_wqh.lock);
1349     }
1350    
1351     return ret;
1352     @@ -1220,14 +1230,14 @@ static ssize_t userfaultfd_read(struct file *file, char __user *buf,
1353     static void __wake_userfault(struct userfaultfd_ctx *ctx,
1354     struct userfaultfd_wake_range *range)
1355     {
1356     - spin_lock(&ctx->fault_pending_wqh.lock);
1357     + spin_lock_irq(&ctx->fault_pending_wqh.lock);
1358     /* wake all in the range and autoremove */
1359     if (waitqueue_active(&ctx->fault_pending_wqh))
1360     __wake_up_locked_key(&ctx->fault_pending_wqh, TASK_NORMAL,
1361     range);
1362     if (waitqueue_active(&ctx->fault_wqh))
1363     __wake_up(&ctx->fault_wqh, TASK_NORMAL, 1, range);
1364     - spin_unlock(&ctx->fault_pending_wqh.lock);
1365     + spin_unlock_irq(&ctx->fault_pending_wqh.lock);
1366     }
1367    
1368     static __always_inline void wake_userfault(struct userfaultfd_ctx *ctx,
1369     @@ -1882,7 +1892,7 @@ static void userfaultfd_show_fdinfo(struct seq_file *m, struct file *f)
1370     wait_queue_entry_t *wq;
1371     unsigned long pending = 0, total = 0;
1372    
1373     - spin_lock(&ctx->fault_pending_wqh.lock);
1374     + spin_lock_irq(&ctx->fault_pending_wqh.lock);
1375     list_for_each_entry(wq, &ctx->fault_pending_wqh.head, entry) {
1376     pending++;
1377     total++;
1378     @@ -1890,7 +1900,7 @@ static void userfaultfd_show_fdinfo(struct seq_file *m, struct file *f)
1379     list_for_each_entry(wq, &ctx->fault_wqh.head, entry) {
1380     total++;
1381     }
1382     - spin_unlock(&ctx->fault_pending_wqh.lock);
1383     + spin_unlock_irq(&ctx->fault_pending_wqh.lock);
1384    
1385     /*
1386     * If more protocols will be added, there will be all shown
1387     diff --git a/include/linux/filter.h b/include/linux/filter.h
1388     index d52a7484aeb2..3705c6f10b17 100644
1389     --- a/include/linux/filter.h
1390     +++ b/include/linux/filter.h
1391     @@ -837,7 +837,7 @@ bpf_run_sk_reuseport(struct sock_reuseport *reuse, struct sock *sk,
1392     extern int bpf_jit_enable;
1393     extern int bpf_jit_harden;
1394     extern int bpf_jit_kallsyms;
1395     -extern int bpf_jit_limit;
1396     +extern long bpf_jit_limit;
1397    
1398     typedef void (*bpf_jit_fill_hole_t)(void *area, unsigned int size);
1399    
1400     diff --git a/include/net/ipv6_frag.h b/include/net/ipv6_frag.h
1401     index 28aa9b30aece..1f77fb4dc79d 100644
1402     --- a/include/net/ipv6_frag.h
1403     +++ b/include/net/ipv6_frag.h
1404     @@ -94,7 +94,6 @@ ip6frag_expire_frag_queue(struct net *net, struct frag_queue *fq)
1405     goto out;
1406    
1407     head->dev = dev;
1408     - skb_get(head);
1409     spin_unlock(&fq->q.lock);
1410    
1411     icmpv6_send(head, ICMPV6_TIME_EXCEED, ICMPV6_EXC_FRAGTIME, 0);
1412     diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
1413     index bad9985b8a08..36be400c3e65 100644
1414     --- a/kernel/bpf/core.c
1415     +++ b/kernel/bpf/core.c
1416     @@ -366,13 +366,11 @@ void bpf_prog_kallsyms_del_all(struct bpf_prog *fp)
1417     }
1418    
1419     #ifdef CONFIG_BPF_JIT
1420     -# define BPF_JIT_LIMIT_DEFAULT (PAGE_SIZE * 40000)
1421     -
1422     /* All BPF JIT sysctl knobs here. */
1423     int bpf_jit_enable __read_mostly = IS_BUILTIN(CONFIG_BPF_JIT_ALWAYS_ON);
1424     int bpf_jit_harden __read_mostly;
1425     int bpf_jit_kallsyms __read_mostly;
1426     -int bpf_jit_limit __read_mostly = BPF_JIT_LIMIT_DEFAULT;
1427     +long bpf_jit_limit __read_mostly;
1428    
1429     static __always_inline void
1430     bpf_get_prog_addr_region(const struct bpf_prog *prog,
1431     @@ -583,16 +581,27 @@ int bpf_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
1432    
1433     static atomic_long_t bpf_jit_current;
1434    
1435     +/* Can be overridden by an arch's JIT compiler if it has a custom,
1436     + * dedicated BPF backend memory area, or if neither of the two
1437     + * below apply.
1438     + */
1439     +u64 __weak bpf_jit_alloc_exec_limit(void)
1440     +{
1441     #if defined(MODULES_VADDR)
1442     + return MODULES_END - MODULES_VADDR;
1443     +#else
1444     + return VMALLOC_END - VMALLOC_START;
1445     +#endif
1446     +}
1447     +
1448     static int __init bpf_jit_charge_init(void)
1449     {
1450     /* Only used as heuristic here to derive limit. */
1451     - bpf_jit_limit = min_t(u64, round_up((MODULES_END - MODULES_VADDR) >> 2,
1452     - PAGE_SIZE), INT_MAX);
1453     + bpf_jit_limit = min_t(u64, round_up(bpf_jit_alloc_exec_limit() >> 2,
1454     + PAGE_SIZE), LONG_MAX);
1455     return 0;
1456     }
1457     pure_initcall(bpf_jit_charge_init);
1458     -#endif
1459    
1460     static int bpf_jit_charge_modmem(u32 pages)
1461     {
1462     diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
1463     index 266f10cb7222..ff956ccbb6df 100644
1464     --- a/kernel/cgroup/cpuset.c
1465     +++ b/kernel/cgroup/cpuset.c
1466     @@ -2432,10 +2432,23 @@ void cpuset_cpus_allowed(struct task_struct *tsk, struct cpumask *pmask)
1467     spin_unlock_irqrestore(&callback_lock, flags);
1468     }
1469    
1470     +/**
1471     + * cpuset_cpus_allowed_fallback - final fallback before complete catastrophe.
1472     + * @tsk: pointer to task_struct with which the scheduler is struggling
1473     + *
1474     + * Description: In the case that the scheduler cannot find an allowed cpu in
1475     + * tsk->cpus_allowed, we fall back to task_cs(tsk)->cpus_allowed. In legacy
1476     + * mode however, this value is the same as task_cs(tsk)->effective_cpus,
1477     + * which will not contain a sane cpumask during cases such as cpu hotplugging.
1478     + * This is the absolute last resort for the scheduler and it is only used if
1479     + * _every_ other avenue has been traveled.
1480     + **/
1481     +
1482     void cpuset_cpus_allowed_fallback(struct task_struct *tsk)
1483     {
1484     rcu_read_lock();
1485     - do_set_cpus_allowed(tsk, task_cs(tsk)->effective_cpus);
1486     + do_set_cpus_allowed(tsk, is_in_v2_mode() ?
1487     + task_cs(tsk)->cpus_allowed : cpu_possible_mask);
1488     rcu_read_unlock();
1489    
1490     /*
1491     diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
1492     index 5b77a7314e01..722c27c40e5b 100644
1493     --- a/kernel/livepatch/core.c
1494     +++ b/kernel/livepatch/core.c
1495     @@ -30,6 +30,7 @@
1496     #include <linux/elf.h>
1497     #include <linux/moduleloader.h>
1498     #include <linux/completion.h>
1499     +#include <linux/memory.h>
1500     #include <asm/cacheflush.h>
1501     #include "core.h"
1502     #include "patch.h"
1503     @@ -708,16 +709,21 @@ static int klp_init_object_loaded(struct klp_patch *patch,
1504     struct klp_func *func;
1505     int ret;
1506    
1507     + mutex_lock(&text_mutex);
1508     +
1509     module_disable_ro(patch->mod);
1510     ret = klp_write_object_relocations(patch->mod, obj);
1511     if (ret) {
1512     module_enable_ro(patch->mod, true);
1513     + mutex_unlock(&text_mutex);
1514     return ret;
1515     }
1516    
1517     arch_klp_init_object_loaded(patch, obj);
1518     module_enable_ro(patch->mod, true);
1519    
1520     + mutex_unlock(&text_mutex);
1521     +
1522     klp_for_each_func(obj, func) {
1523     ret = klp_find_object_symbol(obj->name, func->old_name,
1524     func->old_sympos,
1525     diff --git a/kernel/ptrace.c b/kernel/ptrace.c
1526     index 5d0838c2349e..fed682a01a75 100644
1527     --- a/kernel/ptrace.c
1528     +++ b/kernel/ptrace.c
1529     @@ -78,9 +78,7 @@ void __ptrace_link(struct task_struct *child, struct task_struct *new_parent,
1530     */
1531     static void ptrace_link(struct task_struct *child, struct task_struct *new_parent)
1532     {
1533     - rcu_read_lock();
1534     - __ptrace_link(child, new_parent, __task_cred(new_parent));
1535     - rcu_read_unlock();
1536     + __ptrace_link(child, new_parent, current_cred());
1537     }
1538    
1539     /**
1540     diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
1541     index 1688782f3dfb..118ecce14386 100644
1542     --- a/kernel/trace/ftrace.c
1543     +++ b/kernel/trace/ftrace.c
1544     @@ -2952,14 +2952,13 @@ static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs)
1545     p = &pg->records[i];
1546     p->flags = rec_flags;
1547    
1548     -#ifndef CC_USING_NOP_MCOUNT
1549     /*
1550     * Do the initial record conversion from mcount jump
1551     * to the NOP instructions.
1552     */
1553     - if (!ftrace_code_disable(mod, p))
1554     + if (!__is_defined(CC_USING_NOP_MCOUNT) &&
1555     + !ftrace_code_disable(mod, p))
1556     break;
1557     -#endif
1558    
1559     update_cnt++;
1560     }
1561     @@ -4208,10 +4207,13 @@ void free_ftrace_func_mapper(struct ftrace_func_mapper *mapper,
1562     struct ftrace_func_entry *entry;
1563     struct ftrace_func_map *map;
1564     struct hlist_head *hhd;
1565     - int size = 1 << mapper->hash.size_bits;
1566     - int i;
1567     + int size, i;
1568     +
1569     + if (!mapper)
1570     + return;
1571    
1572     if (free_func && mapper->hash.count) {
1573     + size = 1 << mapper->hash.size_bits;
1574     for (i = 0; i < size; i++) {
1575     hhd = &mapper->hash.buckets[i];
1576     hlist_for_each_entry(entry, hhd, hlist) {
1577     diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
1578     index 181dba75a203..3b0de19b9ed7 100644
1579     --- a/kernel/trace/trace.c
1580     +++ b/kernel/trace/trace.c
1581     @@ -6471,11 +6471,13 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
1582     break;
1583     }
1584     #endif
1585     - if (!tr->allocated_snapshot) {
1586     + if (tr->allocated_snapshot)
1587     + ret = resize_buffer_duplicate_size(&tr->max_buffer,
1588     + &tr->trace_buffer, iter->cpu_file);
1589     + else
1590     ret = tracing_alloc_snapshot_instance(tr);
1591     - if (ret < 0)
1592     - break;
1593     - }
1594     + if (ret < 0)
1595     + break;
1596     local_irq_disable();
1597     /* Now, we're going to swap */
1598     if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
1599     diff --git a/lib/mpi/mpi-pow.c b/lib/mpi/mpi-pow.c
1600     index a5c921e6d667..d3ca55093fa5 100644
1601     --- a/lib/mpi/mpi-pow.c
1602     +++ b/lib/mpi/mpi-pow.c
1603     @@ -37,6 +37,7 @@
1604     int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)
1605     {
1606     mpi_ptr_t mp_marker = NULL, bp_marker = NULL, ep_marker = NULL;
1607     + struct karatsuba_ctx karactx = {};
1608     mpi_ptr_t xp_marker = NULL;
1609     mpi_ptr_t tspace = NULL;
1610     mpi_ptr_t rp, ep, mp, bp;
1611     @@ -163,13 +164,11 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)
1612     int c;
1613     mpi_limb_t e;
1614     mpi_limb_t carry_limb;
1615     - struct karatsuba_ctx karactx;
1616    
1617     xp = xp_marker = mpi_alloc_limb_space(2 * (msize + 1));
1618     if (!xp)
1619     goto enomem;
1620    
1621     - memset(&karactx, 0, sizeof karactx);
1622     negative_result = (ep[0] & 1) && base->sign;
1623    
1624     i = esize - 1;
1625     @@ -294,8 +293,6 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)
1626     if (mod_shift_cnt)
1627     mpihelp_rshift(rp, rp, rsize, mod_shift_cnt);
1628     MPN_NORMALIZE(rp, rsize);
1629     -
1630     - mpihelp_release_karatsuba_ctx(&karactx);
1631     }
1632    
1633     if (negative_result && rsize) {
1634     @@ -312,6 +309,7 @@ int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)
1635     leave:
1636     rc = 0;
1637     enomem:
1638     + mpihelp_release_karatsuba_ctx(&karactx);
1639     if (assign_rp)
1640     mpi_assign_limb_space(res, rp, size);
1641     if (mp_marker)
1642     diff --git a/mm/mlock.c b/mm/mlock.c
1643     index 41cc47e28ad6..0ab8250af1f8 100644
1644     --- a/mm/mlock.c
1645     +++ b/mm/mlock.c
1646     @@ -636,11 +636,11 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,
1647     * is also counted.
1648     * Return value: previously mlocked page counts
1649     */
1650     -static int count_mm_mlocked_page_nr(struct mm_struct *mm,
1651     +static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm,
1652     unsigned long start, size_t len)
1653     {
1654     struct vm_area_struct *vma;
1655     - int count = 0;
1656     + unsigned long count = 0;
1657    
1658     if (mm == NULL)
1659     mm = current->mm;
1660     diff --git a/mm/vmscan.c b/mm/vmscan.c
1661     index dec88fcf8876..e42f44cf7b43 100644
1662     --- a/mm/vmscan.c
1663     +++ b/mm/vmscan.c
1664     @@ -3599,19 +3599,18 @@ out:
1665     }
1666    
1667     /*
1668     - * pgdat->kswapd_classzone_idx is the highest zone index that a recent
1669     - * allocation request woke kswapd for. When kswapd has not woken recently,
1670     - * the value is MAX_NR_ZONES which is not a valid index. This compares a
1671     - * given classzone and returns it or the highest classzone index kswapd
1672     - * was recently woke for.
1673     + * The pgdat->kswapd_classzone_idx is used to pass the highest zone index to be
1674     + * reclaimed by kswapd from the waker. If the value is MAX_NR_ZONES which is not
1675     + * a valid index then either kswapd runs for first time or kswapd couldn't sleep
1676     + * after previous reclaim attempt (node is still unbalanced). In that case
1677     + * return the zone index of the previous kswapd reclaim cycle.
1678     */
1679     static enum zone_type kswapd_classzone_idx(pg_data_t *pgdat,
1680     - enum zone_type classzone_idx)
1681     + enum zone_type prev_classzone_idx)
1682     {
1683     if (pgdat->kswapd_classzone_idx == MAX_NR_ZONES)
1684     - return classzone_idx;
1685     -
1686     - return max(pgdat->kswapd_classzone_idx, classzone_idx);
1687     + return prev_classzone_idx;
1688     + return pgdat->kswapd_classzone_idx;
1689     }
1690    
1691     static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_order,
1692     @@ -3752,7 +3751,7 @@ kswapd_try_sleep:
1693    
1694     /* Read the new order and classzone_idx */
1695     alloc_order = reclaim_order = pgdat->kswapd_order;
1696     - classzone_idx = kswapd_classzone_idx(pgdat, 0);
1697     + classzone_idx = kswapd_classzone_idx(pgdat, classzone_idx);
1698     pgdat->kswapd_order = 0;
1699     pgdat->kswapd_classzone_idx = MAX_NR_ZONES;
1700    
1701     @@ -3806,8 +3805,12 @@ void wakeup_kswapd(struct zone *zone, gfp_t gfp_flags, int order,
1702     if (!cpuset_zone_allowed(zone, gfp_flags))
1703     return;
1704     pgdat = zone->zone_pgdat;
1705     - pgdat->kswapd_classzone_idx = kswapd_classzone_idx(pgdat,
1706     - classzone_idx);
1707     +
1708     + if (pgdat->kswapd_classzone_idx == MAX_NR_ZONES)
1709     + pgdat->kswapd_classzone_idx = classzone_idx;
1710     + else
1711     + pgdat->kswapd_classzone_idx = max(pgdat->kswapd_classzone_idx,
1712     + classzone_idx);
1713     pgdat->kswapd_order = max(pgdat->kswapd_order, order);
1714     if (!waitqueue_active(&pgdat->kswapd_wait))
1715     return;
1716     diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
1717     index 69e3be51a2c3..879d5432bf77 100644
1718     --- a/net/bluetooth/l2cap_core.c
1719     +++ b/net/bluetooth/l2cap_core.c
1720     @@ -1352,7 +1352,7 @@ static bool l2cap_check_enc_key_size(struct hci_conn *hcon)
1721     * actually encrypted before enforcing a key size.
1722     */
1723     return (!test_bit(HCI_CONN_ENCRYPT, &hcon->flags) ||
1724     - hcon->enc_key_size > HCI_MIN_ENC_KEY_SIZE);
1725     + hcon->enc_key_size >= HCI_MIN_ENC_KEY_SIZE);
1726     }
1727    
1728     static void l2cap_do_start(struct l2cap_chan *chan)
1729     diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
1730     index 37b4667128a3..d67ec17f2cc8 100644
1731     --- a/net/core/sysctl_net_core.c
1732     +++ b/net/core/sysctl_net_core.c
1733     @@ -28,6 +28,8 @@ static int two __maybe_unused = 2;
1734     static int min_sndbuf = SOCK_MIN_SNDBUF;
1735     static int min_rcvbuf = SOCK_MIN_RCVBUF;
1736     static int max_skb_frags = MAX_SKB_FRAGS;
1737     +static long long_one __maybe_unused = 1;
1738     +static long long_max __maybe_unused = LONG_MAX;
1739    
1740     static int net_msg_warn; /* Unused, but still a sysctl */
1741    
1742     @@ -289,6 +291,17 @@ proc_dointvec_minmax_bpf_restricted(struct ctl_table *table, int write,
1743    
1744     return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
1745     }
1746     +
1747     +static int
1748     +proc_dolongvec_minmax_bpf_restricted(struct ctl_table *table, int write,
1749     + void __user *buffer, size_t *lenp,
1750     + loff_t *ppos)
1751     +{
1752     + if (!capable(CAP_SYS_ADMIN))
1753     + return -EPERM;
1754     +
1755     + return proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
1756     +}
1757     #endif
1758    
1759     static struct ctl_table net_core_table[] = {
1760     @@ -398,10 +411,11 @@ static struct ctl_table net_core_table[] = {
1761     {
1762     .procname = "bpf_jit_limit",
1763     .data = &bpf_jit_limit,
1764     - .maxlen = sizeof(int),
1765     + .maxlen = sizeof(long),
1766     .mode = 0600,
1767     - .proc_handler = proc_dointvec_minmax_bpf_restricted,
1768     - .extra1 = &one,
1769     + .proc_handler = proc_dolongvec_minmax_bpf_restricted,
1770     + .extra1 = &long_one,
1771     + .extra2 = &long_max,
1772     },
1773     #endif
1774     {
1775     diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
1776     index cb1b4772dac0..35d5a76867d0 100644
1777     --- a/net/ipv6/netfilter/nf_conntrack_reasm.c
1778     +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
1779     @@ -265,8 +265,14 @@ static int nf_ct_frag6_queue(struct frag_queue *fq, struct sk_buff *skb,
1780    
1781     prev = fq->q.fragments_tail;
1782     err = inet_frag_queue_insert(&fq->q, skb, offset, end);
1783     - if (err)
1784     + if (err) {
1785     + if (err == IPFRAG_DUP) {
1786     + /* No error for duplicates, pretend they got queued. */
1787     + kfree_skb(skb);
1788     + return -EINPROGRESS;
1789     + }
1790     goto insert_error;
1791     + }
1792    
1793     if (dev)
1794     fq->iif = dev->ifindex;
1795     @@ -293,15 +299,17 @@ static int nf_ct_frag6_queue(struct frag_queue *fq, struct sk_buff *skb,
1796     skb->_skb_refdst = 0UL;
1797     err = nf_ct_frag6_reasm(fq, skb, prev, dev);
1798     skb->_skb_refdst = orefdst;
1799     - return err;
1800     +
1801     + /* After queue has assumed skb ownership, only 0 or
1802     + * -EINPROGRESS must be returned.
1803     + */
1804     + return err ? -EINPROGRESS : 0;
1805     }
1806    
1807     skb_dst_drop(skb);
1808     return -EINPROGRESS;
1809    
1810     insert_error:
1811     - if (err == IPFRAG_DUP)
1812     - goto err;
1813     inet_frag_kill(&fq->q);
1814     err:
1815     skb_dst_drop(skb);
1816     @@ -481,12 +489,6 @@ int nf_ct_frag6_gather(struct net *net, struct sk_buff *skb, u32 user)
1817     ret = 0;
1818     }
1819    
1820     - /* after queue has assumed skb ownership, only 0 or -EINPROGRESS
1821     - * must be returned.
1822     - */
1823     - if (ret)
1824     - ret = -EINPROGRESS;
1825     -
1826     spin_unlock_bh(&fq->q.lock);
1827     inet_frag_put(&fq->q);
1828     return ret;
1829     diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c
1830     index 49a90217622b..ac1f5db52994 100644
1831     --- a/net/mac80211/mesh_pathtbl.c
1832     +++ b/net/mac80211/mesh_pathtbl.c
1833     @@ -627,7 +627,7 @@ static int table_path_del(struct mesh_table *tbl,
1834     spin_lock_bh(&tbl->walk_lock);
1835     mpath = rhashtable_lookup_fast(&tbl->rhead, addr, mesh_rht_params);
1836     if (!mpath) {
1837     - rcu_read_unlock();
1838     + spin_unlock_bh(&tbl->walk_lock);
1839     return -ENXIO;
1840     }
1841    
1842     diff --git a/net/netfilter/nf_flow_table_ip.c b/net/netfilter/nf_flow_table_ip.c
1843     index 129e9ec99ec9..a8c9ea12c3f5 100644
1844     --- a/net/netfilter/nf_flow_table_ip.c
1845     +++ b/net/netfilter/nf_flow_table_ip.c
1846     @@ -246,8 +246,7 @@ nf_flow_offload_ip_hook(void *priv, struct sk_buff *skb,
1847     flow = container_of(tuplehash, struct flow_offload, tuplehash[dir]);
1848     rt = (struct rtable *)flow->tuplehash[dir].tuple.dst_cache;
1849    
1850     - if (unlikely(nf_flow_exceeds_mtu(skb, flow->tuplehash[dir].tuple.mtu)) &&
1851     - (ip_hdr(skb)->frag_off & htons(IP_DF)) != 0)
1852     + if (unlikely(nf_flow_exceeds_mtu(skb, flow->tuplehash[dir].tuple.mtu)))
1853     return NF_ACCEPT;
1854    
1855     if (skb_try_make_writable(skb, sizeof(*iph)))
1856     diff --git a/net/netfilter/nft_flow_offload.c b/net/netfilter/nft_flow_offload.c
1857     index 7f85af4c40ff..6e0c26025ab1 100644
1858     --- a/net/netfilter/nft_flow_offload.c
1859     +++ b/net/netfilter/nft_flow_offload.c
1860     @@ -12,7 +12,6 @@
1861     #include <net/netfilter/nf_conntrack_core.h>
1862     #include <linux/netfilter/nf_conntrack_common.h>
1863     #include <net/netfilter/nf_flow_table.h>
1864     -#include <net/netfilter/nf_conntrack_helper.h>
1865    
1866     struct nft_flow_offload {
1867     struct nft_flowtable *flowtable;
1868     @@ -49,15 +48,20 @@ static int nft_flow_route(const struct nft_pktinfo *pkt,
1869     return 0;
1870     }
1871    
1872     -static bool nft_flow_offload_skip(struct sk_buff *skb)
1873     +static bool nft_flow_offload_skip(struct sk_buff *skb, int family)
1874     {
1875     - struct ip_options *opt = &(IPCB(skb)->opt);
1876     -
1877     - if (unlikely(opt->optlen))
1878     - return true;
1879     if (skb_sec_path(skb))
1880     return true;
1881    
1882     + if (family == NFPROTO_IPV4) {
1883     + const struct ip_options *opt;
1884     +
1885     + opt = &(IPCB(skb)->opt);
1886     +
1887     + if (unlikely(opt->optlen))
1888     + return true;
1889     + }
1890     +
1891     return false;
1892     }
1893    
1894     @@ -67,15 +71,15 @@ static void nft_flow_offload_eval(const struct nft_expr *expr,
1895     {
1896     struct nft_flow_offload *priv = nft_expr_priv(expr);
1897     struct nf_flowtable *flowtable = &priv->flowtable->data;
1898     - const struct nf_conn_help *help;
1899     enum ip_conntrack_info ctinfo;
1900     struct nf_flow_route route;
1901     struct flow_offload *flow;
1902     enum ip_conntrack_dir dir;
1903     + bool is_tcp = false;
1904     struct nf_conn *ct;
1905     int ret;
1906    
1907     - if (nft_flow_offload_skip(pkt->skb))
1908     + if (nft_flow_offload_skip(pkt->skb, nft_pf(pkt)))
1909     goto out;
1910    
1911     ct = nf_ct_get(pkt->skb, &ctinfo);
1912     @@ -84,14 +88,16 @@ static void nft_flow_offload_eval(const struct nft_expr *expr,
1913    
1914     switch (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum) {
1915     case IPPROTO_TCP:
1916     + is_tcp = true;
1917     + break;
1918     case IPPROTO_UDP:
1919     break;
1920     default:
1921     goto out;
1922     }
1923    
1924     - help = nfct_help(ct);
1925     - if (help)
1926     + if (nf_ct_ext_exist(ct, NF_CT_EXT_HELPER) ||
1927     + ct->status & IPS_SEQ_ADJUST)
1928     goto out;
1929    
1930     if (ctinfo == IP_CT_NEW ||
1931     @@ -109,6 +115,11 @@ static void nft_flow_offload_eval(const struct nft_expr *expr,
1932     if (!flow)
1933     goto err_flow_alloc;
1934    
1935     + if (is_tcp) {
1936     + ct->proto.tcp.seen[0].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
1937     + ct->proto.tcp.seen[1].flags |= IP_CT_TCP_FLAG_BE_LIBERAL;
1938     + }
1939     +
1940     ret = flow_offload_add(flowtable, flow);
1941     if (ret < 0)
1942     goto err_flow_add;
1943     diff --git a/net/rds/send.c b/net/rds/send.c
1944     index ec2267cbf85f..26e2c2305f7a 100644
1945     --- a/net/rds/send.c
1946     +++ b/net/rds/send.c
1947     @@ -1106,9 +1106,11 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len)
1948     sock_flag(rds_rs_to_sk(rs), SOCK_ZEROCOPY));
1949     int num_sgs = ceil(payload_len, PAGE_SIZE);
1950     int namelen;
1951     - struct rds_iov_vector_arr vct = {0};
1952     + struct rds_iov_vector_arr vct;
1953     int ind;
1954    
1955     + memset(&vct, 0, sizeof(vct));
1956     +
1957     /* expect 1 RDMA CMSG per rds_sendmsg. can still grow if more needed. */
1958     vct.incr = 1;
1959    
1960     diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
1961     index e6e506b2db99..9bbab6ba2dab 100644
1962     --- a/net/smc/af_smc.c
1963     +++ b/net/smc/af_smc.c
1964     @@ -848,11 +848,11 @@ static int smc_clcsock_accept(struct smc_sock *lsmc, struct smc_sock **new_smc)
1965     if (rc < 0)
1966     lsk->sk_err = -rc;
1967     if (rc < 0 || lsk->sk_state == SMC_CLOSED) {
1968     + new_sk->sk_prot->unhash(new_sk);
1969     if (new_clcsock)
1970     sock_release(new_clcsock);
1971     new_sk->sk_state = SMC_CLOSED;
1972     sock_set_flag(new_sk, SOCK_DEAD);
1973     - new_sk->sk_prot->unhash(new_sk);
1974     sock_put(new_sk); /* final */
1975     *new_smc = NULL;
1976     goto out;
1977     @@ -903,11 +903,11 @@ struct sock *smc_accept_dequeue(struct sock *parent,
1978    
1979     smc_accept_unlink(new_sk);
1980     if (new_sk->sk_state == SMC_CLOSED) {
1981     + new_sk->sk_prot->unhash(new_sk);
1982     if (isk->clcsock) {
1983     sock_release(isk->clcsock);
1984     isk->clcsock = NULL;
1985     }
1986     - new_sk->sk_prot->unhash(new_sk);
1987     sock_put(new_sk); /* final */
1988     continue;
1989     }
1990     @@ -932,6 +932,7 @@ void smc_close_non_accepted(struct sock *sk)
1991     sock_set_flag(sk, SOCK_DEAD);
1992     sk->sk_shutdown |= SHUTDOWN_MASK;
1993     }
1994     + sk->sk_prot->unhash(sk);
1995     if (smc->clcsock) {
1996     struct socket *tcp;
1997    
1998     @@ -947,7 +948,6 @@ void smc_close_non_accepted(struct sock *sk)
1999     smc_conn_free(&smc->conn);
2000     }
2001     release_sock(sk);
2002     - sk->sk_prot->unhash(sk);
2003     sock_put(sk); /* final sock_put */
2004     }
2005    
2006     diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
2007     index ce5c610b49c7..7308992b7a18 100644
2008     --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
2009     +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
2010     @@ -270,9 +270,14 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id,
2011     /* Save client advertised inbound read limit for use later in accept. */
2012     newxprt->sc_ord = param->initiator_depth;
2013    
2014     - /* Set the local and remote addresses in the transport */
2015     sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr;
2016     svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa));
2017     + /* The remote port is arbitrary and not under the control of the
2018     + * client ULP. Set it to a fixed value so that the DRC continues
2019     + * to be effective after a reconnect.
2020     + */
2021     + rpc_set_port((struct sockaddr *)&newxprt->sc_xprt.xpt_remote, 0);
2022     +
2023     sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr;
2024     svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa));
2025    
2026     diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
2027     index 98a7d63a723e..c4a9ddb174bc 100755
2028     --- a/scripts/decode_stacktrace.sh
2029     +++ b/scripts/decode_stacktrace.sh
2030     @@ -66,7 +66,7 @@ parse_symbol() {
2031     if [[ "${cache[$module,$address]+isset}" == "isset" ]]; then
2032     local code=${cache[$module,$address]}
2033     else
2034     - local code=$(addr2line -i -e "$objfile" "$address")
2035     + local code=$(${CROSS_COMPILE}addr2line -i -e "$objfile" "$address")
2036     cache[$module,$address]=$code
2037     fi
2038    
2039     diff --git a/sound/core/seq/oss/seq_oss_ioctl.c b/sound/core/seq/oss/seq_oss_ioctl.c
2040     index 5b8520177b0e..7d72e3d48ad5 100644
2041     --- a/sound/core/seq/oss/seq_oss_ioctl.c
2042     +++ b/sound/core/seq/oss/seq_oss_ioctl.c
2043     @@ -62,7 +62,7 @@ static int snd_seq_oss_oob_user(struct seq_oss_devinfo *dp, void __user *arg)
2044     if (copy_from_user(ev, arg, 8))
2045     return -EFAULT;
2046     memset(&tmpev, 0, sizeof(tmpev));
2047     - snd_seq_oss_fill_addr(dp, &tmpev, dp->addr.port, dp->addr.client);
2048     + snd_seq_oss_fill_addr(dp, &tmpev, dp->addr.client, dp->addr.port);
2049     tmpev.time.tick = 0;
2050     if (! snd_seq_oss_process_event(dp, (union evrec *)ev, &tmpev)) {
2051     snd_seq_oss_dispatch(dp, &tmpev, 0, 0);
2052     diff --git a/sound/core/seq/oss/seq_oss_rw.c b/sound/core/seq/oss/seq_oss_rw.c
2053     index 30886f5fb100..05fbb564beb3 100644
2054     --- a/sound/core/seq/oss/seq_oss_rw.c
2055     +++ b/sound/core/seq/oss/seq_oss_rw.c
2056     @@ -174,7 +174,7 @@ insert_queue(struct seq_oss_devinfo *dp, union evrec *rec, struct file *opt)
2057     memset(&event, 0, sizeof(event));
2058     /* set dummy -- to be sure */
2059     event.type = SNDRV_SEQ_EVENT_NOTEOFF;
2060     - snd_seq_oss_fill_addr(dp, &event, dp->addr.port, dp->addr.client);
2061     + snd_seq_oss_fill_addr(dp, &event, dp->addr.client, dp->addr.port);
2062    
2063     if (snd_seq_oss_process_event(dp, rec, &event))
2064     return 0; /* invalid event - no need to insert queue */
2065     diff --git a/sound/firewire/amdtp-am824.c b/sound/firewire/amdtp-am824.c
2066     index 4210e5c6262e..d09da9dbf235 100644
2067     --- a/sound/firewire/amdtp-am824.c
2068     +++ b/sound/firewire/amdtp-am824.c
2069     @@ -321,7 +321,7 @@ static void read_midi_messages(struct amdtp_stream *s,
2070     u8 *b;
2071    
2072     for (f = 0; f < frames; f++) {
2073     - port = (s->data_block_counter + f) % 8;
2074     + port = (8 - s->tx_first_dbc + s->data_block_counter + f) % 8;
2075     b = (u8 *)&buffer[p->midi_position];
2076    
2077     len = b[0] - 0x80;
2078     diff --git a/sound/hda/ext/hdac_ext_bus.c b/sound/hda/ext/hdac_ext_bus.c
2079     index 9c37d9af3023..08cc0ce3b924 100644
2080     --- a/sound/hda/ext/hdac_ext_bus.c
2081     +++ b/sound/hda/ext/hdac_ext_bus.c
2082     @@ -173,7 +173,6 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_init);
2083     void snd_hdac_ext_bus_device_exit(struct hdac_device *hdev)
2084     {
2085     snd_hdac_device_exit(hdev);
2086     - kfree(hdev);
2087     }
2088     EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_exit);
2089    
2090     diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
2091     index 21de8145f1a6..a6233775e779 100644
2092     --- a/sound/pci/hda/hda_codec.c
2093     +++ b/sound/pci/hda/hda_codec.c
2094     @@ -971,6 +971,7 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
2095    
2096     /* power-up all before initialization */
2097     hda_set_power_state(codec, AC_PWRST_D0);
2098     + codec->core.dev.power.power_state = PMSG_ON;
2099    
2100     snd_hda_codec_proc_new(codec);
2101    
2102     diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
2103     index e154506a66cb..6453370abacc 100644
2104     --- a/sound/pci/hda/patch_realtek.c
2105     +++ b/sound/pci/hda/patch_realtek.c
2106     @@ -2443,9 +2443,10 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
2107     SND_PCI_QUIRK(0x1558, 0x9501, "Clevo P950HR", ALC1220_FIXUP_CLEVO_P950),
2108     SND_PCI_QUIRK(0x1558, 0x95e1, "Clevo P95xER", ALC1220_FIXUP_CLEVO_P950),
2109     SND_PCI_QUIRK(0x1558, 0x95e2, "Clevo P950ER", ALC1220_FIXUP_CLEVO_P950),
2110     - SND_PCI_QUIRK(0x1558, 0x96e1, "System76 Oryx Pro (oryp5)", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2111     - SND_PCI_QUIRK(0x1558, 0x97e1, "System76 Oryx Pro (oryp5)", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2112     - SND_PCI_QUIRK(0x1558, 0x65d1, "Tuxedo Book XC1509", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2113     + SND_PCI_QUIRK(0x1558, 0x96e1, "Clevo P960[ER][CDFN]-K", ALC1220_FIXUP_CLEVO_P950),
2114     + SND_PCI_QUIRK(0x1558, 0x97e1, "Clevo P970[ER][CDFN]", ALC1220_FIXUP_CLEVO_P950),
2115     + SND_PCI_QUIRK(0x1558, 0x65d1, "Clevo PB51[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2116     + SND_PCI_QUIRK(0x1558, 0x67d1, "Clevo PB71[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2117     SND_PCI_QUIRK_VENDOR(0x1558, "Clevo laptop", ALC882_FIXUP_EAPD),
2118     SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_FIXUP_EAPD),
2119     SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Y530", ALC882_FIXUP_LENOVO_Y530),
2120     @@ -6938,6 +6939,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
2121     SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
2122     SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
2123     SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
2124     + SND_PCI_QUIRK(0x17aa, 0x3111, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
2125     SND_PCI_QUIRK(0x17aa, 0x312a, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
2126     SND_PCI_QUIRK(0x17aa, 0x312f, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
2127     SND_PCI_QUIRK(0x17aa, 0x313c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
2128     diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c
2129     index 299ada4dfaa0..3bd57c02e6fd 100644
2130     --- a/sound/soc/codecs/ak4458.c
2131     +++ b/sound/soc/codecs/ak4458.c
2132     @@ -272,7 +272,10 @@ static int ak4458_rstn_control(struct snd_soc_component *component, int bit)
2133     AK4458_00_CONTROL1,
2134     AK4458_RSTN_MASK,
2135     0x0);
2136     - return ret;
2137     + if (ret < 0)
2138     + return ret;
2139     +
2140     + return 0;
2141     }
2142    
2143     static int ak4458_hw_params(struct snd_pcm_substream *substream,
2144     @@ -492,9 +495,10 @@ static void ak4458_power_on(struct ak4458_priv *ak4458)
2145     }
2146     }
2147    
2148     -static void ak4458_init(struct snd_soc_component *component)
2149     +static int ak4458_init(struct snd_soc_component *component)
2150     {
2151     struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
2152     + int ret;
2153    
2154     /* External Mute ON */
2155     if (ak4458->mute_gpiod)
2156     @@ -502,21 +506,21 @@ static void ak4458_init(struct snd_soc_component *component)
2157    
2158     ak4458_power_on(ak4458);
2159    
2160     - snd_soc_component_update_bits(component, AK4458_00_CONTROL1,
2161     + ret = snd_soc_component_update_bits(component, AK4458_00_CONTROL1,
2162     0x80, 0x80); /* ACKS bit = 1; 10000000 */
2163     + if (ret < 0)
2164     + return ret;
2165    
2166     - ak4458_rstn_control(component, 1);
2167     + return ak4458_rstn_control(component, 1);
2168     }
2169    
2170     static int ak4458_probe(struct snd_soc_component *component)
2171     {
2172     struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
2173    
2174     - ak4458_init(component);
2175     -
2176     ak4458->fs = 48000;
2177    
2178     - return 0;
2179     + return ak4458_init(component);
2180     }
2181    
2182     static void ak4458_remove(struct snd_soc_component *component)
2183     diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c
2184     index 407554175282..68d18aca397d 100644
2185     --- a/sound/soc/codecs/cs4265.c
2186     +++ b/sound/soc/codecs/cs4265.c
2187     @@ -60,7 +60,7 @@ static const struct reg_default cs4265_reg_defaults[] = {
2188     static bool cs4265_readable_register(struct device *dev, unsigned int reg)
2189     {
2190     switch (reg) {
2191     - case CS4265_CHIP_ID ... CS4265_SPDIF_CTL2:
2192     + case CS4265_CHIP_ID ... CS4265_MAX_REGISTER:
2193     return true;
2194     default:
2195     return false;
2196     diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c
2197     index f06ae43650a3..c3b28b2f4b10 100644
2198     --- a/sound/soc/codecs/max98090.c
2199     +++ b/sound/soc/codecs/max98090.c
2200     @@ -1924,6 +1924,21 @@ static int max98090_configure_dmic(struct max98090_priv *max98090,
2201     return 0;
2202     }
2203    
2204     +static int max98090_dai_startup(struct snd_pcm_substream *substream,
2205     + struct snd_soc_dai *dai)
2206     +{
2207     + struct snd_soc_component *component = dai->component;
2208     + struct max98090_priv *max98090 = snd_soc_component_get_drvdata(component);
2209     + unsigned int fmt = max98090->dai_fmt;
2210     +
2211     + /* Remove 24-bit format support if it is not in right justified mode. */
2212     + if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) != SND_SOC_DAIFMT_RIGHT_J) {
2213     + substream->runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE;
2214     + snd_pcm_hw_constraint_msbits(substream->runtime, 0, 16, 16);
2215     + }
2216     + return 0;
2217     +}
2218     +
2219     static int max98090_dai_hw_params(struct snd_pcm_substream *substream,
2220     struct snd_pcm_hw_params *params,
2221     struct snd_soc_dai *dai)
2222     @@ -2331,6 +2346,7 @@ EXPORT_SYMBOL_GPL(max98090_mic_detect);
2223     #define MAX98090_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
2224    
2225     static const struct snd_soc_dai_ops max98090_dai_ops = {
2226     + .startup = max98090_dai_startup,
2227     .set_sysclk = max98090_dai_set_sysclk,
2228     .set_fmt = max98090_dai_set_fmt,
2229     .set_tdm_slot = max98090_set_tdm_slot,
2230     diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c
2231     index 18a931c25ca5..f09f2d87ac60 100644
2232     --- a/sound/soc/codecs/rt274.c
2233     +++ b/sound/soc/codecs/rt274.c
2234     @@ -398,6 +398,8 @@ static int rt274_mic_detect(struct snd_soc_component *component,
2235     {
2236     struct rt274_priv *rt274 = snd_soc_component_get_drvdata(component);
2237    
2238     + rt274->jack = jack;
2239     +
2240     if (jack == NULL) {
2241     /* Disable jack detection */
2242     regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
2243     @@ -405,7 +407,6 @@ static int rt274_mic_detect(struct snd_soc_component *component,
2244    
2245     return 0;
2246     }
2247     - rt274->jack = jack;
2248    
2249     regmap_update_bits(rt274->regmap, RT274_EAPD_GPIO_IRQ_CTRL,
2250     RT274_IRQ_EN, RT274_IRQ_EN);
2251     diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
2252     index 33060af18b5a..6566c8831a96 100644
2253     --- a/sound/soc/soc-pcm.c
2254     +++ b/sound/soc/soc-pcm.c
2255     @@ -2451,7 +2451,8 @@ int dpcm_be_dai_prepare(struct snd_soc_pcm_runtime *fe, int stream)
2256    
2257     if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_PARAMS) &&
2258     (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP) &&
2259     - (be->dpcm[stream].state != SND_SOC_DPCM_STATE_SUSPEND))
2260     + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_SUSPEND) &&
2261     + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED))
2262     continue;
2263    
2264     dev_dbg(be->dev, "ASoC: prepare BE %s\n",
2265     diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
2266     index a4aa931ebfae..6173dd86c62c 100644
2267     --- a/sound/soc/sunxi/sun4i-i2s.c
2268     +++ b/sound/soc/sunxi/sun4i-i2s.c
2269     @@ -110,7 +110,7 @@
2270    
2271     #define SUN8I_I2S_TX_CHAN_MAP_REG 0x44
2272     #define SUN8I_I2S_TX_CHAN_SEL_REG 0x34
2273     -#define SUN8I_I2S_TX_CHAN_OFFSET_MASK GENMASK(13, 11)
2274     +#define SUN8I_I2S_TX_CHAN_OFFSET_MASK GENMASK(13, 12)
2275     #define SUN8I_I2S_TX_CHAN_OFFSET(offset) (offset << 12)
2276     #define SUN8I_I2S_TX_CHAN_EN_MASK GENMASK(11, 4)
2277     #define SUN8I_I2S_TX_CHAN_EN(num_chan) (((1 << num_chan) - 1) << 4)
2278     @@ -460,6 +460,10 @@ static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
2279     regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG,
2280     SUN8I_I2S_TX_CHAN_OFFSET_MASK,
2281     SUN8I_I2S_TX_CHAN_OFFSET(offset));
2282     +
2283     + regmap_update_bits(i2s->regmap, SUN8I_I2S_RX_CHAN_SEL_REG,
2284     + SUN8I_I2S_TX_CHAN_OFFSET_MASK,
2285     + SUN8I_I2S_TX_CHAN_OFFSET(offset));
2286     }
2287    
2288     regmap_field_write(i2s->field_fmt_mode, val);
2289     diff --git a/sound/usb/line6/pcm.c b/sound/usb/line6/pcm.c
2290     index 72c6f8e82a7e..78c2d6cab3b5 100644
2291     --- a/sound/usb/line6/pcm.c
2292     +++ b/sound/usb/line6/pcm.c
2293     @@ -560,6 +560,11 @@ int line6_init_pcm(struct usb_line6 *line6,
2294     line6pcm->max_packet_size_out =
2295     usb_maxpacket(line6->usbdev,
2296     usb_sndisocpipe(line6->usbdev, ep_write), 1);
2297     + if (!line6pcm->max_packet_size_in || !line6pcm->max_packet_size_out) {
2298     + dev_err(line6pcm->line6->ifcdev,
2299     + "cannot get proper max packet size\n");
2300     + return -EINVAL;
2301     + }
2302    
2303     spin_lock_init(&line6pcm->out.lock);
2304     spin_lock_init(&line6pcm->in.lock);
2305     diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
2306     index cbfb48bdea51..5b342fe30c75 100644
2307     --- a/sound/usb/mixer_quirks.c
2308     +++ b/sound/usb/mixer_quirks.c
2309     @@ -753,7 +753,7 @@ static int snd_ni_control_init_val(struct usb_mixer_interface *mixer,
2310     return err;
2311     }
2312    
2313     - kctl->private_value |= (value << 24);
2314     + kctl->private_value |= ((unsigned int)value << 24);
2315     return 0;
2316     }
2317    
2318     @@ -914,7 +914,7 @@ static int snd_ftu_eff_switch_init(struct usb_mixer_interface *mixer,
2319     if (err < 0)
2320     return err;
2321    
2322     - kctl->private_value |= value[0] << 24;
2323     + kctl->private_value |= (unsigned int)value[0] << 24;
2324     return 0;
2325     }
2326    
2327     diff --git a/tools/testing/selftests/net/fib_rule_tests.sh b/tools/testing/selftests/net/fib_rule_tests.sh
2328     index dbd90ca73e44..1ba069967fa2 100755
2329     --- a/tools/testing/selftests/net/fib_rule_tests.sh
2330     +++ b/tools/testing/selftests/net/fib_rule_tests.sh
2331     @@ -148,8 +148,8 @@ fib_rule6_test()
2332    
2333     fib_check_iproute_support "ipproto" "ipproto"
2334     if [ $? -eq 0 ]; then
2335     - match="ipproto icmp"
2336     - fib_rule6_test_match_n_redirect "$match" "$match" "ipproto icmp match"
2337     + match="ipproto ipv6-icmp"
2338     + fib_rule6_test_match_n_redirect "$match" "$match" "ipproto ipv6-icmp match"
2339     fi
2340     }
2341