Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.9/0267-4.9.168-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3344 - (hide annotations) (download)
Tue Jun 18 09:41:58 2019 UTC (4 years, 10 months ago) by niro
File size: 93547 byte(s)
-linux-4.9.168
1 niro 3344 diff --git a/Documentation/arm/kernel_mode_neon.txt b/Documentation/arm/kernel_mode_neon.txt
2     index 525452726d31..b9e060c5b61e 100644
3     --- a/Documentation/arm/kernel_mode_neon.txt
4     +++ b/Documentation/arm/kernel_mode_neon.txt
5     @@ -6,7 +6,7 @@ TL;DR summary
6     * Use only NEON instructions, or VFP instructions that don't rely on support
7     code
8     * Isolate your NEON code in a separate compilation unit, and compile it with
9     - '-mfpu=neon -mfloat-abi=softfp'
10     + '-march=armv7-a -mfpu=neon -mfloat-abi=softfp'
11     * Put kernel_neon_begin() and kernel_neon_end() calls around the calls into your
12     NEON code
13     * Don't sleep in your NEON code, and be aware that it will be executed with
14     @@ -87,7 +87,7 @@ instructions appearing in unexpected places if no special care is taken.
15     Therefore, the recommended and only supported way of using NEON/VFP in the
16     kernel is by adhering to the following rules:
17     * isolate the NEON code in a separate compilation unit and compile it with
18     - '-mfpu=neon -mfloat-abi=softfp';
19     + '-march=armv7-a -mfpu=neon -mfloat-abi=softfp';
20     * issue the calls to kernel_neon_begin(), kernel_neon_end() as well as the calls
21     into the unit containing the NEON code from a compilation unit which is *not*
22     built with the GCC flag '-mfpu=neon' set.
23     diff --git a/Makefile b/Makefile
24     index 2f030baeb162..f44094d2b147 100644
25     --- a/Makefile
26     +++ b/Makefile
27     @@ -1,6 +1,6 @@
28     VERSION = 4
29     PATCHLEVEL = 9
30     -SUBLEVEL = 167
31     +SUBLEVEL = 168
32     EXTRAVERSION =
33     NAME = Roaring Lionus
34    
35     diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi
36     index b5841fab51c1..0d20aadc78bb 100644
37     --- a/arch/arm/boot/dts/lpc32xx.dtsi
38     +++ b/arch/arm/boot/dts/lpc32xx.dtsi
39     @@ -230,7 +230,7 @@
40     status = "disabled";
41     };
42    
43     - i2s1: i2s@2009C000 {
44     + i2s1: i2s@2009c000 {
45     compatible = "nxp,lpc3220-i2s";
46     reg = <0x2009C000 0x1000>;
47     };
48     @@ -273,7 +273,7 @@
49     status = "disabled";
50     };
51    
52     - i2c1: i2c@400A0000 {
53     + i2c1: i2c@400a0000 {
54     compatible = "nxp,pnx-i2c";
55     reg = <0x400A0000 0x100>;
56     interrupt-parent = <&sic1>;
57     @@ -284,7 +284,7 @@
58     clocks = <&clk LPC32XX_CLK_I2C1>;
59     };
60    
61     - i2c2: i2c@400A8000 {
62     + i2c2: i2c@400a8000 {
63     compatible = "nxp,pnx-i2c";
64     reg = <0x400A8000 0x100>;
65     interrupt-parent = <&sic1>;
66     @@ -295,7 +295,7 @@
67     clocks = <&clk LPC32XX_CLK_I2C2>;
68     };
69    
70     - mpwm: mpwm@400E8000 {
71     + mpwm: mpwm@400e8000 {
72     compatible = "nxp,lpc3220-motor-pwm";
73     reg = <0x400E8000 0x78>;
74     status = "disabled";
75     @@ -394,7 +394,7 @@
76     #gpio-cells = <3>; /* bank, pin, flags */
77     };
78    
79     - timer4: timer@4002C000 {
80     + timer4: timer@4002c000 {
81     compatible = "nxp,lpc3220-timer";
82     reg = <0x4002C000 0x1000>;
83     interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
84     @@ -412,7 +412,7 @@
85     status = "disabled";
86     };
87    
88     - watchdog: watchdog@4003C000 {
89     + watchdog: watchdog@4003c000 {
90     compatible = "nxp,pnx4008-wdt";
91     reg = <0x4003C000 0x1000>;
92     clocks = <&clk LPC32XX_CLK_WDOG>;
93     @@ -451,7 +451,7 @@
94     status = "disabled";
95     };
96    
97     - timer1: timer@4004C000 {
98     + timer1: timer@4004c000 {
99     compatible = "nxp,lpc3220-timer";
100     reg = <0x4004C000 0x1000>;
101     interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
102     @@ -475,14 +475,14 @@
103     status = "disabled";
104     };
105    
106     - pwm1: pwm@4005C000 {
107     + pwm1: pwm@4005c000 {
108     compatible = "nxp,lpc3220-pwm";
109     reg = <0x4005C000 0x4>;
110     clocks = <&clk LPC32XX_CLK_PWM1>;
111     status = "disabled";
112     };
113    
114     - pwm2: pwm@4005C004 {
115     + pwm2: pwm@4005c004 {
116     compatible = "nxp,lpc3220-pwm";
117     reg = <0x4005C004 0x4>;
118     clocks = <&clk LPC32XX_CLK_PWM2>;
119     diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
120     index 513e03d138ea..8331cb0d3461 100644
121     --- a/arch/arm/include/asm/barrier.h
122     +++ b/arch/arm/include/asm/barrier.h
123     @@ -10,6 +10,8 @@
124     #define sev() __asm__ __volatile__ ("sev" : : : "memory")
125     #define wfe() __asm__ __volatile__ ("wfe" : : : "memory")
126     #define wfi() __asm__ __volatile__ ("wfi" : : : "memory")
127     +#else
128     +#define wfe() do { } while (0)
129     #endif
130    
131     #if __LINUX_ARM_ARCH__ >= 7
132     diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
133     index 8a1e8e995dae..08509183c7df 100644
134     --- a/arch/arm/include/asm/processor.h
135     +++ b/arch/arm/include/asm/processor.h
136     @@ -77,7 +77,11 @@ extern void release_thread(struct task_struct *);
137     unsigned long get_wchan(struct task_struct *p);
138    
139     #if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
140     -#define cpu_relax() smp_mb()
141     +#define cpu_relax() \
142     + do { \
143     + smp_mb(); \
144     + __asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"); \
145     + } while (0)
146     #else
147     #define cpu_relax() barrier()
148     #endif
149     diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c
150     index b18c1ea56bed..ef6b27fe1d2e 100644
151     --- a/arch/arm/kernel/machine_kexec.c
152     +++ b/arch/arm/kernel/machine_kexec.c
153     @@ -87,8 +87,11 @@ void machine_crash_nonpanic_core(void *unused)
154    
155     set_cpu_online(smp_processor_id(), false);
156     atomic_dec(&waiting_for_crash_ipi);
157     - while (1)
158     +
159     + while (1) {
160     cpu_relax();
161     + wfe();
162     + }
163     }
164    
165     static void machine_kexec_mask_interrupts(void)
166     diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
167     index bc83ec7ed53f..7a5dc011c523 100644
168     --- a/arch/arm/kernel/smp.c
169     +++ b/arch/arm/kernel/smp.c
170     @@ -602,8 +602,10 @@ static void ipi_cpu_stop(unsigned int cpu)
171     local_fiq_disable();
172     local_irq_disable();
173    
174     - while (1)
175     + while (1) {
176     cpu_relax();
177     + wfe();
178     + }
179     }
180    
181     static DEFINE_PER_CPU(struct completion *, cpu_completion);
182     diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c
183     index 0bee233fef9a..314cfb232a63 100644
184     --- a/arch/arm/kernel/unwind.c
185     +++ b/arch/arm/kernel/unwind.c
186     @@ -93,7 +93,7 @@ extern const struct unwind_idx __start_unwind_idx[];
187     static const struct unwind_idx *__origin_unwind_idx;
188     extern const struct unwind_idx __stop_unwind_idx[];
189    
190     -static DEFINE_SPINLOCK(unwind_lock);
191     +static DEFINE_RAW_SPINLOCK(unwind_lock);
192     static LIST_HEAD(unwind_tables);
193    
194     /* Convert a prel31 symbol to an absolute address */
195     @@ -201,7 +201,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
196     /* module unwind tables */
197     struct unwind_table *table;
198    
199     - spin_lock_irqsave(&unwind_lock, flags);
200     + raw_spin_lock_irqsave(&unwind_lock, flags);
201     list_for_each_entry(table, &unwind_tables, list) {
202     if (addr >= table->begin_addr &&
203     addr < table->end_addr) {
204     @@ -213,7 +213,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
205     break;
206     }
207     }
208     - spin_unlock_irqrestore(&unwind_lock, flags);
209     + raw_spin_unlock_irqrestore(&unwind_lock, flags);
210     }
211    
212     pr_debug("%s: idx = %p\n", __func__, idx);
213     @@ -529,9 +529,9 @@ struct unwind_table *unwind_table_add(unsigned long start, unsigned long size,
214     tab->begin_addr = text_addr;
215     tab->end_addr = text_addr + text_size;
216    
217     - spin_lock_irqsave(&unwind_lock, flags);
218     + raw_spin_lock_irqsave(&unwind_lock, flags);
219     list_add_tail(&tab->list, &unwind_tables);
220     - spin_unlock_irqrestore(&unwind_lock, flags);
221     + raw_spin_unlock_irqrestore(&unwind_lock, flags);
222    
223     return tab;
224     }
225     @@ -543,9 +543,9 @@ void unwind_table_del(struct unwind_table *tab)
226     if (!tab)
227     return;
228    
229     - spin_lock_irqsave(&unwind_lock, flags);
230     + raw_spin_lock_irqsave(&unwind_lock, flags);
231     list_del(&tab->list);
232     - spin_unlock_irqrestore(&unwind_lock, flags);
233     + raw_spin_unlock_irqrestore(&unwind_lock, flags);
234    
235     kfree(tab);
236     }
237     diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
238     index 27f4d96258a2..b3ecffb76c3f 100644
239     --- a/arch/arm/lib/Makefile
240     +++ b/arch/arm/lib/Makefile
241     @@ -38,7 +38,7 @@ $(obj)/csumpartialcopy.o: $(obj)/csumpartialcopygeneric.S
242     $(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S
243    
244     ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
245     - NEON_FLAGS := -mfloat-abi=softfp -mfpu=neon
246     + NEON_FLAGS := -march=armv7-a -mfloat-abi=softfp -mfpu=neon
247     CFLAGS_xor-neon.o += $(NEON_FLAGS)
248     obj-$(CONFIG_XOR_BLOCKS) += xor-neon.o
249     endif
250     diff --git a/arch/arm/lib/xor-neon.c b/arch/arm/lib/xor-neon.c
251     index 2c40aeab3eaa..c691b901092f 100644
252     --- a/arch/arm/lib/xor-neon.c
253     +++ b/arch/arm/lib/xor-neon.c
254     @@ -14,7 +14,7 @@
255     MODULE_LICENSE("GPL");
256    
257     #ifndef __ARM_NEON__
258     -#error You should compile this file with '-mfloat-abi=softfp -mfpu=neon'
259     +#error You should compile this file with '-march=armv7-a -mfloat-abi=softfp -mfpu=neon'
260     #endif
261    
262     /*
263     diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
264     index f1ca9479491b..9e14604b9642 100644
265     --- a/arch/arm/mach-omap2/prm_common.c
266     +++ b/arch/arm/mach-omap2/prm_common.c
267     @@ -533,8 +533,10 @@ void omap_prm_reset_system(void)
268    
269     prm_ll_data->reset_system();
270    
271     - while (1)
272     + while (1) {
273     cpu_relax();
274     + wfe();
275     + }
276     }
277    
278     /**
279     diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
280     index e017a9493b92..72a660a74ff9 100644
281     --- a/arch/arm64/kernel/kgdb.c
282     +++ b/arch/arm64/kernel/kgdb.c
283     @@ -231,24 +231,33 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,
284    
285     static int kgdb_brk_fn(struct pt_regs *regs, unsigned int esr)
286     {
287     + if (user_mode(regs))
288     + return DBG_HOOK_ERROR;
289     +
290     kgdb_handle_exception(1, SIGTRAP, 0, regs);
291     - return 0;
292     + return DBG_HOOK_HANDLED;
293     }
294     NOKPROBE_SYMBOL(kgdb_brk_fn)
295    
296     static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int esr)
297     {
298     + if (user_mode(regs))
299     + return DBG_HOOK_ERROR;
300     +
301     compiled_break = 1;
302     kgdb_handle_exception(1, SIGTRAP, 0, regs);
303    
304     - return 0;
305     + return DBG_HOOK_HANDLED;
306     }
307     NOKPROBE_SYMBOL(kgdb_compiled_brk_fn);
308    
309     static int kgdb_step_brk_fn(struct pt_regs *regs, unsigned int esr)
310     {
311     + if (user_mode(regs))
312     + return DBG_HOOK_ERROR;
313     +
314     kgdb_handle_exception(1, SIGTRAP, 0, regs);
315     - return 0;
316     + return DBG_HOOK_HANDLED;
317     }
318     NOKPROBE_SYMBOL(kgdb_step_brk_fn);
319    
320     diff --git a/arch/arm64/kernel/probes/kprobes.c b/arch/arm64/kernel/probes/kprobes.c
321     index d2b1b624ddc3..17f647103ed7 100644
322     --- a/arch/arm64/kernel/probes/kprobes.c
323     +++ b/arch/arm64/kernel/probes/kprobes.c
324     @@ -450,6 +450,9 @@ kprobe_single_step_handler(struct pt_regs *regs, unsigned int esr)
325     struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
326     int retval;
327    
328     + if (user_mode(regs))
329     + return DBG_HOOK_ERROR;
330     +
331     /* return error if this is not our step */
332     retval = kprobe_ss_hit(kcb, instruction_pointer(regs));
333    
334     @@ -466,6 +469,9 @@ kprobe_single_step_handler(struct pt_regs *regs, unsigned int esr)
335     int __kprobes
336     kprobe_breakpoint_handler(struct pt_regs *regs, unsigned int esr)
337     {
338     + if (user_mode(regs))
339     + return DBG_HOOK_ERROR;
340     +
341     kprobe_handler(regs);
342     return DBG_HOOK_HANDLED;
343     }
344     diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
345     index ad49ae8f3967..051b32084776 100644
346     --- a/arch/arm64/mm/fault.c
347     +++ b/arch/arm64/mm/fault.c
348     @@ -673,11 +673,12 @@ void __init hook_debug_fault_code(int nr,
349     debug_fault_info[nr].name = name;
350     }
351    
352     -asmlinkage int __exception do_debug_exception(unsigned long addr,
353     +asmlinkage int __exception do_debug_exception(unsigned long addr_if_watchpoint,
354     unsigned int esr,
355     struct pt_regs *regs)
356     {
357     const struct fault_info *inf = debug_fault_info + DBG_ESR_EVT(esr);
358     + unsigned long pc = instruction_pointer(regs);
359     struct siginfo info;
360     int rv;
361    
362     @@ -688,19 +689,19 @@ asmlinkage int __exception do_debug_exception(unsigned long addr,
363     if (interrupts_enabled(regs))
364     trace_hardirqs_off();
365    
366     - if (user_mode(regs) && instruction_pointer(regs) > TASK_SIZE)
367     + if (user_mode(regs) && pc > TASK_SIZE)
368     arm64_apply_bp_hardening();
369    
370     - if (!inf->fn(addr, esr, regs)) {
371     + if (!inf->fn(addr_if_watchpoint, esr, regs)) {
372     rv = 1;
373     } else {
374     pr_alert("Unhandled debug exception: %s (0x%08x) at 0x%016lx\n",
375     - inf->name, esr, addr);
376     + inf->name, esr, pc);
377    
378     info.si_signo = inf->sig;
379     info.si_errno = 0;
380     info.si_code = inf->code;
381     - info.si_addr = (void __user *)addr;
382     + info.si_addr = (void __user *)pc;
383     arm64_notify_die("", regs, &info, 0);
384     rv = 0;
385     }
386     diff --git a/arch/h8300/Makefile b/arch/h8300/Makefile
387     index e1c02ca230cb..073bba6f9f60 100644
388     --- a/arch/h8300/Makefile
389     +++ b/arch/h8300/Makefile
390     @@ -23,7 +23,7 @@ KBUILD_AFLAGS += $(aflags-y)
391     LDFLAGS += $(ldflags-y)
392    
393     ifeq ($(CROSS_COMPILE),)
394     -CROSS_COMPILE := h8300-unknown-linux-
395     +CROSS_COMPILE := $(call cc-cross-prefix, h8300-unknown-linux- h8300-linux-)
396     endif
397    
398     core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/
399     diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h
400     index 8b3b46b7b0f2..229c91bcf616 100644
401     --- a/arch/powerpc/include/asm/topology.h
402     +++ b/arch/powerpc/include/asm/topology.h
403     @@ -90,6 +90,8 @@ static inline int prrn_is_enabled(void)
404     #define topology_sibling_cpumask(cpu) (per_cpu(cpu_sibling_map, cpu))
405     #define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu))
406     #define topology_core_id(cpu) (cpu_to_core_id(cpu))
407     +
408     +int dlpar_cpu_readd(int cpu);
409     #endif
410     #endif
411    
412     diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
413     index 0ef83c274019..9cad2ed812ab 100644
414     --- a/arch/powerpc/mm/numa.c
415     +++ b/arch/powerpc/mm/numa.c
416     @@ -1540,13 +1540,6 @@ static void reset_topology_timer(void)
417    
418     #ifdef CONFIG_SMP
419    
420     -static void stage_topology_update(int core_id)
421     -{
422     - cpumask_or(&cpu_associativity_changes_mask,
423     - &cpu_associativity_changes_mask, cpu_sibling_mask(core_id));
424     - reset_topology_timer();
425     -}
426     -
427     static int dt_update_callback(struct notifier_block *nb,
428     unsigned long action, void *data)
429     {
430     @@ -1559,7 +1552,7 @@ static int dt_update_callback(struct notifier_block *nb,
431     !of_prop_cmp(update->prop->name, "ibm,associativity")) {
432     u32 core_id;
433     of_property_read_u32(update->dn, "reg", &core_id);
434     - stage_topology_update(core_id);
435     + rc = dlpar_cpu_readd(core_id);
436     rc = NOTIFY_OK;
437     }
438     break;
439     diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
440     index a1b63e00b2f7..7a2beedb9740 100644
441     --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
442     +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
443     @@ -785,6 +785,25 @@ static int dlpar_cpu_add_by_count(u32 cpus_to_add)
444     return rc;
445     }
446    
447     +int dlpar_cpu_readd(int cpu)
448     +{
449     + struct device_node *dn;
450     + struct device *dev;
451     + u32 drc_index;
452     + int rc;
453     +
454     + dev = get_cpu_device(cpu);
455     + dn = dev->of_node;
456     +
457     + rc = of_property_read_u32(dn, "ibm,my-drc-index", &drc_index);
458     +
459     + rc = dlpar_cpu_remove_by_index(drc_index);
460     + if (!rc)
461     + rc = dlpar_cpu_add(drc_index);
462     +
463     + return rc;
464     +}
465     +
466     int dlpar_cpu(struct pseries_hp_errorlog *hp_elog)
467     {
468     u32 count, drc_index;
469     diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
470     index 3b7156f46bc1..3b16935b22bc 100644
471     --- a/arch/x86/boot/Makefile
472     +++ b/arch/x86/boot/Makefile
473     @@ -100,7 +100,7 @@ $(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE
474     AFLAGS_header.o += -I$(objtree)/$(obj)
475     $(obj)/header.o: $(obj)/zoffset.h
476    
477     -LDFLAGS_setup.elf := -T
478     +LDFLAGS_setup.elf := -m elf_i386 -T
479     $(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
480     $(call if_changed,ld)
481    
482     diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
483     index e783a5daaab2..55f04875293f 100644
484     --- a/arch/x86/kernel/vmlinux.lds.S
485     +++ b/arch/x86/kernel/vmlinux.lds.S
486     @@ -367,7 +367,7 @@ SECTIONS
487     * Per-cpu symbols which need to be offset from __per_cpu_load
488     * for the boot processor.
489     */
490     -#define INIT_PER_CPU(x) init_per_cpu__##x = x + __per_cpu_load
491     +#define INIT_PER_CPU(x) init_per_cpu__##x = ABSOLUTE(x) + __per_cpu_load
492     INIT_PER_CPU(gdt_page);
493     INIT_PER_CPU(irq_stack_union);
494    
495     diff --git a/arch/x86/realmode/rm/Makefile b/arch/x86/realmode/rm/Makefile
496     index 25012abc3409..ce5f431e6823 100644
497     --- a/arch/x86/realmode/rm/Makefile
498     +++ b/arch/x86/realmode/rm/Makefile
499     @@ -47,7 +47,7 @@ $(obj)/pasyms.h: $(REALMODE_OBJS) FORCE
500     targets += realmode.lds
501     $(obj)/realmode.lds: $(obj)/pasyms.h
502    
503     -LDFLAGS_realmode.elf := --emit-relocs -T
504     +LDFLAGS_realmode.elf := -m elf_i386 --emit-relocs -T
505     CPPFLAGS_realmode.lds += -P -C -I$(objtree)/$(obj)
506    
507     targets += realmode.elf
508     diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
509     index 667dc5c86fef..ea0573176894 100644
510     --- a/drivers/acpi/acpi_video.c
511     +++ b/drivers/acpi/acpi_video.c
512     @@ -2069,21 +2069,29 @@ static int __init intel_opregion_present(void)
513     return opregion;
514     }
515    
516     +/* Check if the chassis-type indicates there is no builtin LCD panel */
517     static bool dmi_is_desktop(void)
518     {
519     const char *chassis_type;
520     + unsigned long type;
521    
522     chassis_type = dmi_get_system_info(DMI_CHASSIS_TYPE);
523     if (!chassis_type)
524     return false;
525    
526     - if (!strcmp(chassis_type, "3") || /* 3: Desktop */
527     - !strcmp(chassis_type, "4") || /* 4: Low Profile Desktop */
528     - !strcmp(chassis_type, "5") || /* 5: Pizza Box */
529     - !strcmp(chassis_type, "6") || /* 6: Mini Tower */
530     - !strcmp(chassis_type, "7") || /* 7: Tower */
531     - !strcmp(chassis_type, "11")) /* 11: Main Server Chassis */
532     + if (kstrtoul(chassis_type, 10, &type) != 0)
533     + return false;
534     +
535     + switch (type) {
536     + case 0x03: /* Desktop */
537     + case 0x04: /* Low Profile Desktop */
538     + case 0x05: /* Pizza Box */
539     + case 0x06: /* Mini Tower */
540     + case 0x07: /* Tower */
541     + case 0x10: /* Lunch Box */
542     + case 0x11: /* Main Server Chassis */
543     return true;
544     + }
545    
546     return false;
547     }
548     diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
549     index ff4280800cd0..a46f188f679e 100644
550     --- a/drivers/cdrom/cdrom.c
551     +++ b/drivers/cdrom/cdrom.c
552     @@ -265,6 +265,7 @@
553     /* #define ERRLOGMASK (CD_WARNING|CD_OPEN|CD_COUNT_TRACKS|CD_CLOSE) */
554     /* #define ERRLOGMASK (CD_WARNING|CD_REG_UNREG|CD_DO_IOCTL|CD_OPEN|CD_CLOSE|CD_COUNT_TRACKS) */
555    
556     +#include <linux/atomic.h>
557     #include <linux/module.h>
558     #include <linux/fs.h>
559     #include <linux/major.h>
560     @@ -3683,9 +3684,9 @@ static struct ctl_table_header *cdrom_sysctl_header;
561    
562     static void cdrom_sysctl_register(void)
563     {
564     - static int initialized;
565     + static atomic_t initialized = ATOMIC_INIT(0);
566    
567     - if (initialized == 1)
568     + if (!atomic_add_unless(&initialized, 1, 1))
569     return;
570    
571     cdrom_sysctl_header = register_sysctl_table(cdrom_root_table);
572     @@ -3696,8 +3697,6 @@ static void cdrom_sysctl_register(void)
573     cdrom_sysctl_settings.debug = debug;
574     cdrom_sysctl_settings.lock = lockdoor;
575     cdrom_sysctl_settings.check = check_media_type;
576     -
577     - initialized = 1;
578     }
579    
580     static void cdrom_sysctl_unregister(void)
581     diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
582     index 50272fe81f26..818a8d40e5c9 100644
583     --- a/drivers/char/hpet.c
584     +++ b/drivers/char/hpet.c
585     @@ -376,7 +376,7 @@ static __init int hpet_mmap_enable(char *str)
586     pr_info("HPET mmap %s\n", hpet_mmap_enabled ? "enabled" : "disabled");
587     return 1;
588     }
589     -__setup("hpet_mmap", hpet_mmap_enable);
590     +__setup("hpet_mmap=", hpet_mmap_enable);
591    
592     static int hpet_mmap(struct file *file, struct vm_area_struct *vma)
593     {
594     diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
595     index 3fa2f8a009b3..1c5c4314c6b5 100644
596     --- a/drivers/char/hw_random/virtio-rng.c
597     +++ b/drivers/char/hw_random/virtio-rng.c
598     @@ -73,7 +73,7 @@ static int virtio_read(struct hwrng *rng, void *buf, size_t size, bool wait)
599    
600     if (!vi->busy) {
601     vi->busy = true;
602     - init_completion(&vi->have_data);
603     + reinit_completion(&vi->have_data);
604     register_buffer(vi, buf, size);
605     }
606    
607     diff --git a/drivers/crypto/amcc/crypto4xx_trng.c b/drivers/crypto/amcc/crypto4xx_trng.c
608     index 677ca17fd223..368c5599515e 100644
609     --- a/drivers/crypto/amcc/crypto4xx_trng.c
610     +++ b/drivers/crypto/amcc/crypto4xx_trng.c
611     @@ -80,8 +80,10 @@ void ppc4xx_trng_probe(struct crypto4xx_core_device *core_dev)
612    
613     /* Find the TRNG device node and map it */
614     trng = of_find_matching_node(NULL, ppc4xx_trng_match);
615     - if (!trng || !of_device_is_available(trng))
616     + if (!trng || !of_device_is_available(trng)) {
617     + of_node_put(trng);
618     return;
619     + }
620    
621     dev->trng_base = of_iomap(trng, 0);
622     of_node_put(trng);
623     diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c
624     index 1cfa1d9bc971..f8786f60cdc1 100644
625     --- a/drivers/dma/imx-dma.c
626     +++ b/drivers/dma/imx-dma.c
627     @@ -290,7 +290,7 @@ static inline int imxdma_sg_next(struct imxdma_desc *d)
628     struct scatterlist *sg = d->sg;
629     unsigned long now;
630    
631     - now = min(d->len, sg_dma_len(sg));
632     + now = min_t(size_t, d->len, sg_dma_len(sg));
633     if (d->len != IMX_DMA_LENGTH_LOOP)
634     d->len -= now;
635    
636     diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
637     index e244e10a94b5..5444f39bf939 100644
638     --- a/drivers/dma/qcom/hidma.c
639     +++ b/drivers/dma/qcom/hidma.c
640     @@ -131,24 +131,25 @@ static void hidma_process_completed(struct hidma_chan *mchan)
641     desc = &mdesc->desc;
642     last_cookie = desc->cookie;
643    
644     + llstat = hidma_ll_status(mdma->lldev, mdesc->tre_ch);
645     +
646     spin_lock_irqsave(&mchan->lock, irqflags);
647     + if (llstat == DMA_COMPLETE) {
648     + mchan->last_success = last_cookie;
649     + result.result = DMA_TRANS_NOERROR;
650     + } else {
651     + result.result = DMA_TRANS_ABORTED;
652     + }
653     +
654     dma_cookie_complete(desc);
655     spin_unlock_irqrestore(&mchan->lock, irqflags);
656    
657     - llstat = hidma_ll_status(mdma->lldev, mdesc->tre_ch);
658     dmaengine_desc_get_callback(desc, &cb);
659    
660     dma_run_dependencies(desc);
661    
662     spin_lock_irqsave(&mchan->lock, irqflags);
663     list_move(&mdesc->node, &mchan->free);
664     -
665     - if (llstat == DMA_COMPLETE) {
666     - mchan->last_success = last_cookie;
667     - result.result = DMA_TRANS_NOERROR;
668     - } else
669     - result.result = DMA_TRANS_ABORTED;
670     -
671     spin_unlock_irqrestore(&mchan->lock, irqflags);
672    
673     dmaengine_desc_callback_invoke(&cb, &result);
674     diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
675     index 3722b9d8d9fe..22f7f0c68a48 100644
676     --- a/drivers/dma/tegra20-apb-dma.c
677     +++ b/drivers/dma/tegra20-apb-dma.c
678     @@ -635,7 +635,10 @@ static void handle_cont_sngl_cycle_dma_done(struct tegra_dma_channel *tdc,
679    
680     sgreq = list_first_entry(&tdc->pending_sg_req, typeof(*sgreq), node);
681     dma_desc = sgreq->dma_desc;
682     - dma_desc->bytes_transferred += sgreq->req_len;
683     + /* if we dma for long enough the transfer count will wrap */
684     + dma_desc->bytes_transferred =
685     + (dma_desc->bytes_transferred + sgreq->req_len) %
686     + dma_desc->bytes_requested;
687    
688     /* Callback need to be call */
689     if (!dma_desc->cb_count)
690     diff --git a/drivers/firmware/efi/memattr.c b/drivers/firmware/efi/memattr.c
691     index 236004b9a50d..9faa09e7c31f 100644
692     --- a/drivers/firmware/efi/memattr.c
693     +++ b/drivers/firmware/efi/memattr.c
694     @@ -93,7 +93,7 @@ static bool entry_is_valid(const efi_memory_desc_t *in, efi_memory_desc_t *out)
695    
696     if (!(md->attribute & EFI_MEMORY_RUNTIME))
697     continue;
698     - if (md->virt_addr == 0) {
699     + if (md->virt_addr == 0 && md->phys_addr != 0) {
700     /* no virtual mapping has been installed by the stub */
701     break;
702     }
703     diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
704     index 6f9c9ac6ee70..75f30a0c418a 100644
705     --- a/drivers/gpio/gpio-omap.c
706     +++ b/drivers/gpio/gpio-omap.c
707     @@ -837,14 +837,16 @@ static void omap_gpio_unmask_irq(struct irq_data *d)
708     if (trigger)
709     omap_set_gpio_triggering(bank, offset, trigger);
710    
711     - /* For level-triggered GPIOs, the clearing must be done after
712     - * the HW source is cleared, thus after the handler has run */
713     - if (bank->level_mask & BIT(offset)) {
714     - omap_set_gpio_irqenable(bank, offset, 0);
715     + omap_set_gpio_irqenable(bank, offset, 1);
716     +
717     + /*
718     + * For level-triggered GPIOs, clearing must be done after the source
719     + * is cleared, thus after the handler has run. OMAP4 needs this done
720     + * after enabing the interrupt to clear the wakeup status.
721     + */
722     + if (bank->level_mask & BIT(offset))
723     omap_clear_gpio_irqstatus(bank, offset);
724     - }
725    
726     - omap_set_gpio_irqenable(bank, offset, 1);
727     raw_spin_unlock_irqrestore(&bank->lock, flags);
728     }
729    
730     diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
731     index b59441d109a5..4a959740058e 100644
732     --- a/drivers/gpu/drm/drm_dp_mst_topology.c
733     +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
734     @@ -3069,6 +3069,7 @@ static int drm_dp_mst_i2c_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs
735     msg.u.i2c_read.transactions[i].i2c_dev_id = msgs[i].addr;
736     msg.u.i2c_read.transactions[i].num_bytes = msgs[i].len;
737     msg.u.i2c_read.transactions[i].bytes = msgs[i].buf;
738     + msg.u.i2c_read.transactions[i].no_stop_bit = !(msgs[i].flags & I2C_M_STOP);
739     }
740     msg.u.i2c_read.read_i2c_device_id = msgs[num - 1].addr;
741     msg.u.i2c_read.num_bytes_read = msgs[num - 1].len;
742     diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
743     index 434d1e29f279..cd37d00e9723 100644
744     --- a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
745     +++ b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
746     @@ -750,7 +750,9 @@ static int nv17_tv_set_property(struct drm_encoder *encoder,
747     /* Disable the crtc to ensure a full modeset is
748     * performed whenever it's turned on again. */
749     if (crtc)
750     - drm_crtc_force_disable(crtc);
751     + drm_crtc_helper_set_mode(crtc, &crtc->mode,
752     + crtc->x, crtc->y,
753     + crtc->primary->fb);
754     }
755    
756     return 0;
757     diff --git a/drivers/hid/intel-ish-hid/ipc/ipc.c b/drivers/hid/intel-ish-hid/ipc/ipc.c
758     index 0c9ac4d5d850..41d44536aa15 100644
759     --- a/drivers/hid/intel-ish-hid/ipc/ipc.c
760     +++ b/drivers/hid/intel-ish-hid/ipc/ipc.c
761     @@ -92,7 +92,10 @@ static bool check_generated_interrupt(struct ishtp_device *dev)
762     IPC_INT_FROM_ISH_TO_HOST_CHV_AB(pisr_val);
763     } else {
764     pisr_val = ish_reg_read(dev, IPC_REG_PISR_BXT);
765     - interrupt_generated = IPC_INT_FROM_ISH_TO_HOST_BXT(pisr_val);
766     + interrupt_generated = !!pisr_val;
767     + /* only busy-clear bit is RW, others are RO */
768     + if (pisr_val)
769     + ish_reg_write(dev, IPC_REG_PISR_BXT, pisr_val);
770     }
771    
772     return interrupt_generated;
773     @@ -795,11 +798,11 @@ int ish_hw_start(struct ishtp_device *dev)
774     {
775     ish_set_host_rdy(dev);
776    
777     + set_host_ready(dev);
778     +
779     /* After that we can enable ISH DMA operation and wakeup ISHFW */
780     ish_wakeup(dev);
781    
782     - set_host_ready(dev);
783     -
784     /* wait for FW-initiated reset flow */
785     if (!dev->recvd_hw_ready)
786     wait_event_interruptible_timeout(dev->wait_hw_ready,
787     diff --git a/drivers/hid/intel-ish-hid/ishtp/bus.c b/drivers/hid/intel-ish-hid/ishtp/bus.c
788     index 256521509d20..0de18c76f8d4 100644
789     --- a/drivers/hid/intel-ish-hid/ishtp/bus.c
790     +++ b/drivers/hid/intel-ish-hid/ishtp/bus.c
791     @@ -628,7 +628,8 @@ int ishtp_cl_device_bind(struct ishtp_cl *cl)
792     spin_lock_irqsave(&cl->dev->device_list_lock, flags);
793     list_for_each_entry(cl_device, &cl->dev->device_list,
794     device_link) {
795     - if (cl_device->fw_client->client_id == cl->fw_client_id) {
796     + if (cl_device->fw_client &&
797     + cl_device->fw_client->client_id == cl->fw_client_id) {
798     cl->device = cl_device;
799     rv = 0;
800     break;
801     @@ -688,6 +689,7 @@ void ishtp_bus_remove_all_clients(struct ishtp_device *ishtp_dev,
802     spin_lock_irqsave(&ishtp_dev->device_list_lock, flags);
803     list_for_each_entry_safe(cl_device, n, &ishtp_dev->device_list,
804     device_link) {
805     + cl_device->fw_client = NULL;
806     if (warm_reset && cl_device->reference_count)
807     continue;
808    
809     diff --git a/drivers/hwtracing/coresight/coresight-etm4x.c b/drivers/hwtracing/coresight/coresight-etm4x.c
810     index 4db8d6a4d0cb..da27f8edba50 100644
811     --- a/drivers/hwtracing/coresight/coresight-etm4x.c
812     +++ b/drivers/hwtracing/coresight/coresight-etm4x.c
813     @@ -61,7 +61,8 @@ static void etm4_os_unlock(struct etmv4_drvdata *drvdata)
814    
815     static bool etm4_arch_supported(u8 arch)
816     {
817     - switch (arch) {
818     + /* Mask out the minor version number */
819     + switch (arch & 0xf0) {
820     case ETM_ARCH_V4:
821     break;
822     default:
823     diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
824     index 7484aac1e14d..80d82c6792d8 100644
825     --- a/drivers/i2c/i2c-core.c
826     +++ b/drivers/i2c/i2c-core.c
827     @@ -3250,16 +3250,16 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter *adapter, u16 addr,
828     the underlying bus driver */
829     break;
830     case I2C_SMBUS_I2C_BLOCK_DATA:
831     + if (data->block[0] > I2C_SMBUS_BLOCK_MAX) {
832     + dev_err(&adapter->dev, "Invalid block %s size %d\n",
833     + read_write == I2C_SMBUS_READ ? "read" : "write",
834     + data->block[0]);
835     + return -EINVAL;
836     + }
837     if (read_write == I2C_SMBUS_READ) {
838     msg[1].len = data->block[0];
839     } else {
840     msg[0].len = data->block[0] + 1;
841     - if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
842     - dev_err(&adapter->dev,
843     - "Invalid block write size %d\n",
844     - data->block[0]);
845     - return -EINVAL;
846     - }
847     for (i = 1; i <= data->block[0]; i++)
848     msgbuf0[i] = data->block[i];
849     }
850     diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
851     index dd18b74cd01d..a2322b2dbd82 100644
852     --- a/drivers/infiniband/hw/cxgb4/cm.c
853     +++ b/drivers/infiniband/hw/cxgb4/cm.c
854     @@ -1872,8 +1872,10 @@ static int abort_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
855     }
856     mutex_unlock(&ep->com.mutex);
857    
858     - if (release)
859     + if (release) {
860     + close_complete_upcall(ep, -ECONNRESET);
861     release_ep_resources(ep);
862     + }
863     c4iw_put_ep(&ep->com);
864     return 0;
865     }
866     @@ -3567,7 +3569,6 @@ int c4iw_ep_disconnect(struct c4iw_ep *ep, int abrupt, gfp_t gfp)
867     if (close) {
868     if (abrupt) {
869     set_bit(EP_DISC_ABORT, &ep->com.history);
870     - close_complete_upcall(ep, -ECONNRESET);
871     ret = send_abort(ep);
872     } else {
873     set_bit(EP_DISC_CLOSE, &ep->com.history);
874     diff --git a/drivers/infiniband/hw/mlx4/cm.c b/drivers/infiniband/hw/mlx4/cm.c
875     index 39a488889fc7..5dc920fe1326 100644
876     --- a/drivers/infiniband/hw/mlx4/cm.c
877     +++ b/drivers/infiniband/hw/mlx4/cm.c
878     @@ -39,7 +39,7 @@
879    
880     #include "mlx4_ib.h"
881    
882     -#define CM_CLEANUP_CACHE_TIMEOUT (5 * HZ)
883     +#define CM_CLEANUP_CACHE_TIMEOUT (30 * HZ)
884    
885     struct id_map_entry {
886     struct rb_node node;
887     diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c
888     index d68a552cfe8d..3085b47fac1d 100644
889     --- a/drivers/iommu/io-pgtable-arm-v7s.c
890     +++ b/drivers/iommu/io-pgtable-arm-v7s.c
891     @@ -207,7 +207,8 @@ static void *__arm_v7s_alloc_table(int lvl, gfp_t gfp,
892     if (dma != virt_to_phys(table))
893     goto out_unmap;
894     }
895     - kmemleak_ignore(table);
896     + if (lvl == 2)
897     + kmemleak_ignore(table);
898     return table;
899    
900     out_unmap:
901     diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c
902     index 5377f22ff994..e2655953667c 100644
903     --- a/drivers/leds/leds-lp55xx-common.c
904     +++ b/drivers/leds/leds-lp55xx-common.c
905     @@ -201,7 +201,7 @@ static void lp55xx_firmware_loaded(const struct firmware *fw, void *context)
906    
907     if (!fw) {
908     dev_err(dev, "firmware request failed\n");
909     - goto out;
910     + return;
911     }
912    
913     /* handling firmware data is chip dependent */
914     @@ -214,9 +214,9 @@ static void lp55xx_firmware_loaded(const struct firmware *fw, void *context)
915    
916     mutex_unlock(&chip->lock);
917    
918     -out:
919     /* firmware should be released for other channel use */
920     release_firmware(chip->fw);
921     + chip->fw = NULL;
922     }
923    
924     static int lp55xx_request_firmware(struct lp55xx_chip *chip)
925     diff --git a/drivers/md/bcache/sysfs.c b/drivers/md/bcache/sysfs.c
926     index 5a5c1f1bd8a5..463ce6757338 100644
927     --- a/drivers/md/bcache/sysfs.c
928     +++ b/drivers/md/bcache/sysfs.c
929     @@ -215,7 +215,9 @@ STORE(__cached_dev)
930     d_strtoul(writeback_rate_d_term);
931     d_strtoul_nonzero(writeback_rate_p_term_inverse);
932    
933     - d_strtoi_h(sequential_cutoff);
934     + sysfs_strtoul_clamp(sequential_cutoff,
935     + dc->sequential_cutoff,
936     + 0, UINT_MAX);
937     d_strtoi_h(readahead);
938    
939     if (attr == &sysfs_clear_stats)
940     @@ -645,8 +647,17 @@ STORE(__bch_cache_set)
941     c->error_limit = strtoul_or_return(buf) << IO_ERROR_SHIFT;
942    
943     /* See count_io_errors() for why 88 */
944     - if (attr == &sysfs_io_error_halflife)
945     - c->error_decay = strtoul_or_return(buf) / 88;
946     + if (attr == &sysfs_io_error_halflife) {
947     + unsigned long v = 0;
948     + ssize_t ret;
949     +
950     + ret = strtoul_safe_clamp(buf, v, 0, UINT_MAX);
951     + if (!ret) {
952     + c->error_decay = v / 88;
953     + return size;
954     + }
955     + return ret;
956     + }
957    
958     sysfs_strtoul(journal_delay_ms, c->journal_delay_ms);
959     sysfs_strtoul(verify, c->verify);
960     diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h
961     index 0526fe92a683..e7a3c12aa66f 100644
962     --- a/drivers/md/bcache/sysfs.h
963     +++ b/drivers/md/bcache/sysfs.h
964     @@ -80,9 +80,16 @@ do { \
965    
966     #define sysfs_strtoul_clamp(file, var, min, max) \
967     do { \
968     - if (attr == &sysfs_ ## file) \
969     - return strtoul_safe_clamp(buf, var, min, max) \
970     - ?: (ssize_t) size; \
971     + if (attr == &sysfs_ ## file) { \
972     + unsigned long v = 0; \
973     + ssize_t ret; \
974     + ret = strtoul_safe_clamp(buf, v, min, max); \
975     + if (!ret) { \
976     + var = v; \
977     + return size; \
978     + } \
979     + return ret; \
980     + } \
981     } while (0)
982    
983     #define strtoul_or_return(cp) \
984     diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
985     index 345f4d81ba07..23a7e108352a 100644
986     --- a/drivers/md/dm-thin.c
987     +++ b/drivers/md/dm-thin.c
988     @@ -3295,6 +3295,13 @@ static int pool_ctr(struct dm_target *ti, unsigned argc, char **argv)
989     as.argc = argc;
990     as.argv = argv;
991    
992     + /* make sure metadata and data are different devices */
993     + if (!strcmp(argv[0], argv[1])) {
994     + ti->error = "Error setting metadata or data device";
995     + r = -EINVAL;
996     + goto out_unlock;
997     + }
998     +
999     /*
1000     * Set default pool features.
1001     */
1002     @@ -4177,6 +4184,12 @@ static int thin_ctr(struct dm_target *ti, unsigned argc, char **argv)
1003     tc->sort_bio_list = RB_ROOT;
1004    
1005     if (argc == 3) {
1006     + if (!strcmp(argv[0], argv[2])) {
1007     + ti->error = "Error setting origin device";
1008     + r = -EINVAL;
1009     + goto bad_origin_dev;
1010     + }
1011     +
1012     r = dm_get_device(ti, argv[2], FMODE_READ, &origin_dev);
1013     if (r) {
1014     ti->error = "Error opening origin device";
1015     diff --git a/drivers/media/i2c/mt9m111.c b/drivers/media/i2c/mt9m111.c
1016     index 72e71b762827..a6145877bd00 100644
1017     --- a/drivers/media/i2c/mt9m111.c
1018     +++ b/drivers/media/i2c/mt9m111.c
1019     @@ -974,6 +974,8 @@ static int mt9m111_probe(struct i2c_client *client,
1020     mt9m111->rect.top = MT9M111_MIN_DARK_ROWS;
1021     mt9m111->rect.width = MT9M111_MAX_WIDTH;
1022     mt9m111->rect.height = MT9M111_MAX_HEIGHT;
1023     + mt9m111->width = mt9m111->rect.width;
1024     + mt9m111->height = mt9m111->rect.height;
1025     mt9m111->fmt = &mt9m111_colour_fmts[0];
1026     mt9m111->lastpage = -1;
1027     mutex_init(&mt9m111->power_lock);
1028     diff --git a/drivers/media/platform/mx2_emmaprp.c b/drivers/media/platform/mx2_emmaprp.c
1029     index e68d271b10af..8354ad20865a 100644
1030     --- a/drivers/media/platform/mx2_emmaprp.c
1031     +++ b/drivers/media/platform/mx2_emmaprp.c
1032     @@ -288,7 +288,7 @@ static void emmaprp_device_run(void *priv)
1033     {
1034     struct emmaprp_ctx *ctx = priv;
1035     struct emmaprp_q_data *s_q_data, *d_q_data;
1036     - struct vb2_buffer *src_buf, *dst_buf;
1037     + struct vb2_v4l2_buffer *src_buf, *dst_buf;
1038     struct emmaprp_dev *pcdev = ctx->dev;
1039     unsigned int s_width, s_height;
1040     unsigned int d_width, d_height;
1041     @@ -308,8 +308,8 @@ static void emmaprp_device_run(void *priv)
1042     d_height = d_q_data->height;
1043     d_size = d_width * d_height;
1044    
1045     - p_in = vb2_dma_contig_plane_dma_addr(src_buf, 0);
1046     - p_out = vb2_dma_contig_plane_dma_addr(dst_buf, 0);
1047     + p_in = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, 0);
1048     + p_out = vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0);
1049     if (!p_in || !p_out) {
1050     v4l2_err(&pcdev->v4l2_dev,
1051     "Acquiring kernel pointers to buffers failed\n");
1052     diff --git a/drivers/media/platform/s5p-g2d/g2d.c b/drivers/media/platform/s5p-g2d/g2d.c
1053     index 62c0dec30b59..5f6ccf492111 100644
1054     --- a/drivers/media/platform/s5p-g2d/g2d.c
1055     +++ b/drivers/media/platform/s5p-g2d/g2d.c
1056     @@ -498,7 +498,7 @@ static void device_run(void *prv)
1057     {
1058     struct g2d_ctx *ctx = prv;
1059     struct g2d_dev *dev = ctx->dev;
1060     - struct vb2_buffer *src, *dst;
1061     + struct vb2_v4l2_buffer *src, *dst;
1062     unsigned long flags;
1063     u32 cmd = 0;
1064    
1065     @@ -513,10 +513,10 @@ static void device_run(void *prv)
1066     spin_lock_irqsave(&dev->ctrl_lock, flags);
1067    
1068     g2d_set_src_size(dev, &ctx->in);
1069     - g2d_set_src_addr(dev, vb2_dma_contig_plane_dma_addr(src, 0));
1070     + g2d_set_src_addr(dev, vb2_dma_contig_plane_dma_addr(&src->vb2_buf, 0));
1071    
1072     g2d_set_dst_size(dev, &ctx->out);
1073     - g2d_set_dst_addr(dev, vb2_dma_contig_plane_dma_addr(dst, 0));
1074     + g2d_set_dst_addr(dev, vb2_dma_contig_plane_dma_addr(&dst->vb2_buf, 0));
1075    
1076     g2d_set_rop4(dev, ctx->rop);
1077     g2d_set_flip(dev, ctx->flip);
1078     diff --git a/drivers/media/platform/s5p-jpeg/jpeg-core.c b/drivers/media/platform/s5p-jpeg/jpeg-core.c
1079     index 1da2c94e1dca..c89922fb42ce 100644
1080     --- a/drivers/media/platform/s5p-jpeg/jpeg-core.c
1081     +++ b/drivers/media/platform/s5p-jpeg/jpeg-core.c
1082     @@ -789,14 +789,14 @@ static void skip(struct s5p_jpeg_buffer *buf, long len);
1083     static void exynos4_jpeg_parse_decode_h_tbl(struct s5p_jpeg_ctx *ctx)
1084     {
1085     struct s5p_jpeg *jpeg = ctx->jpeg;
1086     - struct vb2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1087     + struct vb2_v4l2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1088     struct s5p_jpeg_buffer jpeg_buffer;
1089     unsigned int word;
1090     int c, x, components;
1091    
1092     jpeg_buffer.size = 2; /* Ls */
1093     jpeg_buffer.data =
1094     - (unsigned long)vb2_plane_vaddr(vb, 0) + ctx->out_q.sos + 2;
1095     + (unsigned long)vb2_plane_vaddr(&vb->vb2_buf, 0) + ctx->out_q.sos + 2;
1096     jpeg_buffer.curr = 0;
1097    
1098     word = 0;
1099     @@ -826,14 +826,14 @@ static void exynos4_jpeg_parse_decode_h_tbl(struct s5p_jpeg_ctx *ctx)
1100     static void exynos4_jpeg_parse_huff_tbl(struct s5p_jpeg_ctx *ctx)
1101     {
1102     struct s5p_jpeg *jpeg = ctx->jpeg;
1103     - struct vb2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1104     + struct vb2_v4l2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1105     struct s5p_jpeg_buffer jpeg_buffer;
1106     unsigned int word;
1107     int c, i, n, j;
1108    
1109     for (j = 0; j < ctx->out_q.dht.n; ++j) {
1110     jpeg_buffer.size = ctx->out_q.dht.len[j];
1111     - jpeg_buffer.data = (unsigned long)vb2_plane_vaddr(vb, 0) +
1112     + jpeg_buffer.data = (unsigned long)vb2_plane_vaddr(&vb->vb2_buf, 0) +
1113     ctx->out_q.dht.marker[j];
1114     jpeg_buffer.curr = 0;
1115    
1116     @@ -885,13 +885,13 @@ static void exynos4_jpeg_parse_huff_tbl(struct s5p_jpeg_ctx *ctx)
1117     static void exynos4_jpeg_parse_decode_q_tbl(struct s5p_jpeg_ctx *ctx)
1118     {
1119     struct s5p_jpeg *jpeg = ctx->jpeg;
1120     - struct vb2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1121     + struct vb2_v4l2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1122     struct s5p_jpeg_buffer jpeg_buffer;
1123     int c, x, components;
1124    
1125     jpeg_buffer.size = ctx->out_q.sof_len;
1126     jpeg_buffer.data =
1127     - (unsigned long)vb2_plane_vaddr(vb, 0) + ctx->out_q.sof;
1128     + (unsigned long)vb2_plane_vaddr(&vb->vb2_buf, 0) + ctx->out_q.sof;
1129     jpeg_buffer.curr = 0;
1130    
1131     skip(&jpeg_buffer, 5); /* P, Y, X */
1132     @@ -916,14 +916,14 @@ static void exynos4_jpeg_parse_decode_q_tbl(struct s5p_jpeg_ctx *ctx)
1133     static void exynos4_jpeg_parse_q_tbl(struct s5p_jpeg_ctx *ctx)
1134     {
1135     struct s5p_jpeg *jpeg = ctx->jpeg;
1136     - struct vb2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1137     + struct vb2_v4l2_buffer *vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1138     struct s5p_jpeg_buffer jpeg_buffer;
1139     unsigned int word;
1140     int c, i, j;
1141    
1142     for (j = 0; j < ctx->out_q.dqt.n; ++j) {
1143     jpeg_buffer.size = ctx->out_q.dqt.len[j];
1144     - jpeg_buffer.data = (unsigned long)vb2_plane_vaddr(vb, 0) +
1145     + jpeg_buffer.data = (unsigned long)vb2_plane_vaddr(&vb->vb2_buf, 0) +
1146     ctx->out_q.dqt.marker[j];
1147     jpeg_buffer.curr = 0;
1148    
1149     @@ -1264,13 +1264,16 @@ static int s5p_jpeg_querycap(struct file *file, void *priv,
1150     return 0;
1151     }
1152    
1153     -static int enum_fmt(struct s5p_jpeg_fmt *sjpeg_formats, int n,
1154     +static int enum_fmt(struct s5p_jpeg_ctx *ctx,
1155     + struct s5p_jpeg_fmt *sjpeg_formats, int n,
1156     struct v4l2_fmtdesc *f, u32 type)
1157     {
1158     int i, num = 0;
1159     + unsigned int fmt_ver_flag = ctx->jpeg->variant->fmt_ver_flag;
1160    
1161     for (i = 0; i < n; ++i) {
1162     - if (sjpeg_formats[i].flags & type) {
1163     + if (sjpeg_formats[i].flags & type &&
1164     + sjpeg_formats[i].flags & fmt_ver_flag) {
1165     /* index-th format of type type found ? */
1166     if (num == f->index)
1167     break;
1168     @@ -1297,11 +1300,11 @@ static int s5p_jpeg_enum_fmt_vid_cap(struct file *file, void *priv,
1169     struct s5p_jpeg_ctx *ctx = fh_to_ctx(priv);
1170    
1171     if (ctx->mode == S5P_JPEG_ENCODE)
1172     - return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
1173     + return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
1174     SJPEG_FMT_FLAG_ENC_CAPTURE);
1175    
1176     - return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
1177     - SJPEG_FMT_FLAG_DEC_CAPTURE);
1178     + return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
1179     + SJPEG_FMT_FLAG_DEC_CAPTURE);
1180     }
1181    
1182     static int s5p_jpeg_enum_fmt_vid_out(struct file *file, void *priv,
1183     @@ -1310,11 +1313,11 @@ static int s5p_jpeg_enum_fmt_vid_out(struct file *file, void *priv,
1184     struct s5p_jpeg_ctx *ctx = fh_to_ctx(priv);
1185    
1186     if (ctx->mode == S5P_JPEG_ENCODE)
1187     - return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
1188     + return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
1189     SJPEG_FMT_FLAG_ENC_OUTPUT);
1190    
1191     - return enum_fmt(sjpeg_formats, SJPEG_NUM_FORMATS, f,
1192     - SJPEG_FMT_FLAG_DEC_OUTPUT);
1193     + return enum_fmt(ctx, sjpeg_formats, SJPEG_NUM_FORMATS, f,
1194     + SJPEG_FMT_FLAG_DEC_OUTPUT);
1195     }
1196    
1197     static struct s5p_jpeg_q_data *get_q_data(struct s5p_jpeg_ctx *ctx,
1198     @@ -2027,15 +2030,15 @@ static void s5p_jpeg_device_run(void *priv)
1199     {
1200     struct s5p_jpeg_ctx *ctx = priv;
1201     struct s5p_jpeg *jpeg = ctx->jpeg;
1202     - struct vb2_buffer *src_buf, *dst_buf;
1203     + struct vb2_v4l2_buffer *src_buf, *dst_buf;
1204     unsigned long src_addr, dst_addr, flags;
1205    
1206     spin_lock_irqsave(&ctx->jpeg->slock, flags);
1207    
1208     src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1209     dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
1210     - src_addr = vb2_dma_contig_plane_dma_addr(src_buf, 0);
1211     - dst_addr = vb2_dma_contig_plane_dma_addr(dst_buf, 0);
1212     + src_addr = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, 0);
1213     + dst_addr = vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0);
1214    
1215     s5p_jpeg_reset(jpeg->regs);
1216     s5p_jpeg_poweron(jpeg->regs);
1217     @@ -2108,7 +2111,7 @@ static void exynos4_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1218     {
1219     struct s5p_jpeg *jpeg = ctx->jpeg;
1220     struct s5p_jpeg_fmt *fmt;
1221     - struct vb2_buffer *vb;
1222     + struct vb2_v4l2_buffer *vb;
1223     struct s5p_jpeg_addr jpeg_addr = {};
1224     u32 pix_size, padding_bytes = 0;
1225    
1226     @@ -2127,7 +2130,7 @@ static void exynos4_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1227     vb = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
1228     }
1229    
1230     - jpeg_addr.y = vb2_dma_contig_plane_dma_addr(vb, 0);
1231     + jpeg_addr.y = vb2_dma_contig_plane_dma_addr(&vb->vb2_buf, 0);
1232    
1233     if (fmt->colplanes == 2) {
1234     jpeg_addr.cb = jpeg_addr.y + pix_size - padding_bytes;
1235     @@ -2145,7 +2148,7 @@ static void exynos4_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1236     static void exynos4_jpeg_set_jpeg_addr(struct s5p_jpeg_ctx *ctx)
1237     {
1238     struct s5p_jpeg *jpeg = ctx->jpeg;
1239     - struct vb2_buffer *vb;
1240     + struct vb2_v4l2_buffer *vb;
1241     unsigned int jpeg_addr = 0;
1242    
1243     if (ctx->mode == S5P_JPEG_ENCODE)
1244     @@ -2153,7 +2156,7 @@ static void exynos4_jpeg_set_jpeg_addr(struct s5p_jpeg_ctx *ctx)
1245     else
1246     vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1247    
1248     - jpeg_addr = vb2_dma_contig_plane_dma_addr(vb, 0);
1249     + jpeg_addr = vb2_dma_contig_plane_dma_addr(&vb->vb2_buf, 0);
1250     if (jpeg->variant->version == SJPEG_EXYNOS5433 &&
1251     ctx->mode == S5P_JPEG_DECODE)
1252     jpeg_addr += ctx->out_q.sos;
1253     @@ -2268,7 +2271,7 @@ static void exynos3250_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1254     {
1255     struct s5p_jpeg *jpeg = ctx->jpeg;
1256     struct s5p_jpeg_fmt *fmt;
1257     - struct vb2_buffer *vb;
1258     + struct vb2_v4l2_buffer *vb;
1259     struct s5p_jpeg_addr jpeg_addr = {};
1260     u32 pix_size;
1261    
1262     @@ -2282,7 +2285,7 @@ static void exynos3250_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1263     fmt = ctx->cap_q.fmt;
1264     }
1265    
1266     - jpeg_addr.y = vb2_dma_contig_plane_dma_addr(vb, 0);
1267     + jpeg_addr.y = vb2_dma_contig_plane_dma_addr(&vb->vb2_buf, 0);
1268    
1269     if (fmt->colplanes == 2) {
1270     jpeg_addr.cb = jpeg_addr.y + pix_size;
1271     @@ -2300,7 +2303,7 @@ static void exynos3250_jpeg_set_img_addr(struct s5p_jpeg_ctx *ctx)
1272     static void exynos3250_jpeg_set_jpeg_addr(struct s5p_jpeg_ctx *ctx)
1273     {
1274     struct s5p_jpeg *jpeg = ctx->jpeg;
1275     - struct vb2_buffer *vb;
1276     + struct vb2_v4l2_buffer *vb;
1277     unsigned int jpeg_addr = 0;
1278    
1279     if (ctx->mode == S5P_JPEG_ENCODE)
1280     @@ -2308,7 +2311,7 @@ static void exynos3250_jpeg_set_jpeg_addr(struct s5p_jpeg_ctx *ctx)
1281     else
1282     vb = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
1283    
1284     - jpeg_addr = vb2_dma_contig_plane_dma_addr(vb, 0);
1285     + jpeg_addr = vb2_dma_contig_plane_dma_addr(&vb->vb2_buf, 0);
1286     exynos3250_jpeg_jpgadr(jpeg->regs, jpeg_addr);
1287     }
1288    
1289     diff --git a/drivers/media/platform/sh_veu.c b/drivers/media/platform/sh_veu.c
1290     index 15a562af13c7..a4f593220ef0 100644
1291     --- a/drivers/media/platform/sh_veu.c
1292     +++ b/drivers/media/platform/sh_veu.c
1293     @@ -276,13 +276,13 @@ static void sh_veu_process(struct sh_veu_dev *veu,
1294     static void sh_veu_device_run(void *priv)
1295     {
1296     struct sh_veu_dev *veu = priv;
1297     - struct vb2_buffer *src_buf, *dst_buf;
1298     + struct vb2_v4l2_buffer *src_buf, *dst_buf;
1299    
1300     src_buf = v4l2_m2m_next_src_buf(veu->m2m_ctx);
1301     dst_buf = v4l2_m2m_next_dst_buf(veu->m2m_ctx);
1302    
1303     if (src_buf && dst_buf)
1304     - sh_veu_process(veu, src_buf, dst_buf);
1305     + sh_veu_process(veu, &src_buf->vb2_buf, &dst_buf->vb2_buf);
1306     }
1307    
1308     /* ========== video ioctls ========== */
1309     diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
1310     index a4bf14e21b5e..21dfce21aa63 100644
1311     --- a/drivers/mmc/host/omap.c
1312     +++ b/drivers/mmc/host/omap.c
1313     @@ -920,7 +920,7 @@ static inline void set_cmd_timeout(struct mmc_omap_host *host, struct mmc_reques
1314     reg &= ~(1 << 5);
1315     OMAP_MMC_WRITE(host, SDIO, reg);
1316     /* Set maximum timeout */
1317     - OMAP_MMC_WRITE(host, CTO, 0xff);
1318     + OMAP_MMC_WRITE(host, CTO, 0xfd);
1319     }
1320    
1321     static inline void set_data_timeout(struct mmc_omap_host *host, struct mmc_request *req)
1322     diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
1323     index 89acf7bc4cf9..b73d9ba9496c 100644
1324     --- a/drivers/net/ethernet/cisco/enic/enic_main.c
1325     +++ b/drivers/net/ethernet/cisco/enic/enic_main.c
1326     @@ -120,7 +120,7 @@ static void enic_init_affinity_hint(struct enic *enic)
1327    
1328     for (i = 0; i < enic->intr_count; i++) {
1329     if (enic_is_err_intr(enic, i) || enic_is_notify_intr(enic, i) ||
1330     - (enic->msix[i].affinity_mask &&
1331     + (cpumask_available(enic->msix[i].affinity_mask) &&
1332     !cpumask_empty(enic->msix[i].affinity_mask)))
1333     continue;
1334     if (zalloc_cpumask_var(&enic->msix[i].affinity_mask,
1335     @@ -149,7 +149,7 @@ static void enic_set_affinity_hint(struct enic *enic)
1336     for (i = 0; i < enic->intr_count; i++) {
1337     if (enic_is_err_intr(enic, i) ||
1338     enic_is_notify_intr(enic, i) ||
1339     - !enic->msix[i].affinity_mask ||
1340     + !cpumask_available(enic->msix[i].affinity_mask) ||
1341     cpumask_empty(enic->msix[i].affinity_mask))
1342     continue;
1343     err = irq_set_affinity_hint(enic->msix_entry[i].vector,
1344     @@ -162,7 +162,7 @@ static void enic_set_affinity_hint(struct enic *enic)
1345     for (i = 0; i < enic->wq_count; i++) {
1346     int wq_intr = enic_msix_wq_intr(enic, i);
1347    
1348     - if (enic->msix[wq_intr].affinity_mask &&
1349     + if (cpumask_available(enic->msix[wq_intr].affinity_mask) &&
1350     !cpumask_empty(enic->msix[wq_intr].affinity_mask))
1351     netif_set_xps_queue(enic->netdev,
1352     enic->msix[wq_intr].affinity_mask,
1353     diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
1354     index 6855b3380a83..8bbedfc9c48f 100644
1355     --- a/drivers/net/ethernet/intel/e1000e/netdev.c
1356     +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
1357     @@ -2121,7 +2121,7 @@ static int e1000_request_msix(struct e1000_adapter *adapter)
1358     if (strlen(netdev->name) < (IFNAMSIZ - 5))
1359     snprintf(adapter->rx_ring->name,
1360     sizeof(adapter->rx_ring->name) - 1,
1361     - "%s-rx-0", netdev->name);
1362     + "%.14s-rx-0", netdev->name);
1363     else
1364     memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ);
1365     err = request_irq(adapter->msix_entries[vector].vector,
1366     @@ -2137,7 +2137,7 @@ static int e1000_request_msix(struct e1000_adapter *adapter)
1367     if (strlen(netdev->name) < (IFNAMSIZ - 5))
1368     snprintf(adapter->tx_ring->name,
1369     sizeof(adapter->tx_ring->name) - 1,
1370     - "%s-tx-0", netdev->name);
1371     + "%.14s-tx-0", netdev->name);
1372     else
1373     memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ);
1374     err = request_irq(adapter->msix_entries[vector].vector,
1375     @@ -5291,8 +5291,13 @@ static void e1000_watchdog_task(struct work_struct *work)
1376     /* 8000ES2LAN requires a Rx packet buffer work-around
1377     * on link down event; reset the controller to flush
1378     * the Rx packet buffer.
1379     + *
1380     + * If the link is lost the controller stops DMA, but
1381     + * if there is queued Tx work it cannot be done. So
1382     + * reset the controller to flush the Tx packet buffers.
1383     */
1384     - if (adapter->flags & FLAG_RX_NEEDS_RESTART)
1385     + if ((adapter->flags & FLAG_RX_NEEDS_RESTART) ||
1386     + e1000_desc_unused(tx_ring) + 1 < tx_ring->count)
1387     adapter->flags |= FLAG_RESTART_NOW;
1388     else
1389     pm_schedule_suspend(netdev->dev.parent,
1390     @@ -5315,14 +5320,6 @@ link_up:
1391     adapter->gotc_old = adapter->stats.gotc;
1392     spin_unlock(&adapter->stats64_lock);
1393    
1394     - /* If the link is lost the controller stops DMA, but
1395     - * if there is queued Tx work it cannot be done. So
1396     - * reset the controller to flush the Tx packet buffers.
1397     - */
1398     - if (!netif_carrier_ok(netdev) &&
1399     - (e1000_desc_unused(tx_ring) + 1 < tx_ring->count))
1400     - adapter->flags |= FLAG_RESTART_NOW;
1401     -
1402     /* If reset is necessary, do it outside of interrupt context. */
1403     if (adapter->flags & FLAG_RESTART_NOW) {
1404     schedule_work(&adapter->reset_task);
1405     diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1406     index 22a5916e477e..cc847e0cac2d 100644
1407     --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1408     +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1409     @@ -1565,7 +1565,7 @@ static void mlxsw_sp_port_get_prio_strings(u8 **p, int prio)
1410     int i;
1411    
1412     for (i = 0; i < MLXSW_SP_PORT_HW_PRIO_STATS_LEN; i++) {
1413     - snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
1414     + snprintf(*p, ETH_GSTRING_LEN, "%.29s_%.1d",
1415     mlxsw_sp_port_hw_prio_stats[i].str, prio);
1416     *p += ETH_GSTRING_LEN;
1417     }
1418     @@ -1576,7 +1576,7 @@ static void mlxsw_sp_port_get_tc_strings(u8 **p, int tc)
1419     int i;
1420    
1421     for (i = 0; i < MLXSW_SP_PORT_HW_TC_STATS_LEN; i++) {
1422     - snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
1423     + snprintf(*p, ETH_GSTRING_LEN, "%.29s_%.1d",
1424     mlxsw_sp_port_hw_tc_stats[i].str, tc);
1425     *p += ETH_GSTRING_LEN;
1426     }
1427     diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c
1428     index d117240d9a73..b8eeaef17edc 100644
1429     --- a/drivers/net/wireless/ath/wil6210/cfg80211.c
1430     +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c
1431     @@ -1005,6 +1005,12 @@ static int _wil_cfg80211_merge_extra_ies(const u8 *ies1, u16 ies1_len,
1432     u8 *buf, *dpos;
1433     const u8 *spos;
1434    
1435     + if (!ies1)
1436     + ies1_len = 0;
1437     +
1438     + if (!ies2)
1439     + ies2_len = 0;
1440     +
1441     if (ies1_len == 0 && ies2_len == 0) {
1442     *merged_ies = NULL;
1443     *merged_len = 0;
1444     @@ -1014,17 +1020,19 @@ static int _wil_cfg80211_merge_extra_ies(const u8 *ies1, u16 ies1_len,
1445     buf = kmalloc(ies1_len + ies2_len, GFP_KERNEL);
1446     if (!buf)
1447     return -ENOMEM;
1448     - memcpy(buf, ies1, ies1_len);
1449     + if (ies1)
1450     + memcpy(buf, ies1, ies1_len);
1451     dpos = buf + ies1_len;
1452     spos = ies2;
1453     - while (spos + 1 < ies2 + ies2_len) {
1454     + while (spos && (spos + 1 < ies2 + ies2_len)) {
1455     /* IE tag at offset 0, length at offset 1 */
1456     u16 ielen = 2 + spos[1];
1457    
1458     if (spos + ielen > ies2 + ies2_len)
1459     break;
1460     if (spos[0] == WLAN_EID_VENDOR_SPECIFIC &&
1461     - !_wil_cfg80211_find_ie(ies1, ies1_len, spos, ielen)) {
1462     + (!ies1 || !_wil_cfg80211_find_ie(ies1, ies1_len,
1463     + spos, ielen))) {
1464     memcpy(dpos, spos, ielen);
1465     dpos += ielen;
1466     }
1467     diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1468     index e58a50d31d96..c21f8bd32d08 100644
1469     --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1470     +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
1471     @@ -475,7 +475,7 @@ static void iwl_pcie_rx_allocator(struct iwl_trans *trans)
1472     struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
1473     struct iwl_rb_allocator *rba = &trans_pcie->rba;
1474     struct list_head local_empty;
1475     - int pending = atomic_xchg(&rba->req_pending, 0);
1476     + int pending = atomic_read(&rba->req_pending);
1477    
1478     IWL_DEBUG_RX(trans, "Pending allocation requests = %d\n", pending);
1479    
1480     @@ -530,11 +530,13 @@ static void iwl_pcie_rx_allocator(struct iwl_trans *trans)
1481     i++;
1482     }
1483    
1484     + atomic_dec(&rba->req_pending);
1485     pending--;
1486     +
1487     if (!pending) {
1488     - pending = atomic_xchg(&rba->req_pending, 0);
1489     + pending = atomic_read(&rba->req_pending);
1490     IWL_DEBUG_RX(trans,
1491     - "Pending allocation requests = %d\n",
1492     + "Got more pending allocation requests = %d\n",
1493     pending);
1494     }
1495    
1496     @@ -546,12 +548,15 @@ static void iwl_pcie_rx_allocator(struct iwl_trans *trans)
1497     spin_unlock(&rba->lock);
1498    
1499     atomic_inc(&rba->req_ready);
1500     +
1501     }
1502    
1503     spin_lock(&rba->lock);
1504     /* return unused rbds to the allocator empty list */
1505     list_splice_tail(&local_empty, &rba->rbd_empty);
1506     spin_unlock(&rba->lock);
1507     +
1508     + IWL_DEBUG_RX(trans, "%s, exit.\n", __func__);
1509     }
1510    
1511     /*
1512     diff --git a/drivers/net/wireless/mediatek/mt7601u/eeprom.h b/drivers/net/wireless/mediatek/mt7601u/eeprom.h
1513     index 662d12703b69..57b503ae63f1 100644
1514     --- a/drivers/net/wireless/mediatek/mt7601u/eeprom.h
1515     +++ b/drivers/net/wireless/mediatek/mt7601u/eeprom.h
1516     @@ -17,7 +17,7 @@
1517    
1518     struct mt7601u_dev;
1519    
1520     -#define MT7601U_EE_MAX_VER 0x0c
1521     +#define MT7601U_EE_MAX_VER 0x0d
1522     #define MT7601U_EEPROM_SIZE 256
1523    
1524     #define MT7601U_DEFAULT_TX_POWER 6
1525     diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
1526     index 5438975c7ff2..17d32ce5d16b 100644
1527     --- a/drivers/net/wireless/ti/wlcore/main.c
1528     +++ b/drivers/net/wireless/ti/wlcore/main.c
1529     @@ -1058,8 +1058,11 @@ static int wl12xx_chip_wakeup(struct wl1271 *wl, bool plt)
1530     goto out;
1531    
1532     ret = wl12xx_fetch_firmware(wl, plt);
1533     - if (ret < 0)
1534     - goto out;
1535     + if (ret < 0) {
1536     + kfree(wl->fw_status);
1537     + kfree(wl->raw_fw_status);
1538     + kfree(wl->tx_res_if);
1539     + }
1540    
1541     out:
1542     return ret;
1543     diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8865-regulator.c
1544     index 7652477e6a9d..39e8d60df060 100644
1545     --- a/drivers/regulator/act8865-regulator.c
1546     +++ b/drivers/regulator/act8865-regulator.c
1547     @@ -131,7 +131,7 @@
1548     * ACT8865 voltage number
1549     */
1550     #define ACT8865_VOLTAGE_NUM 64
1551     -#define ACT8600_SUDCDC_VOLTAGE_NUM 255
1552     +#define ACT8600_SUDCDC_VOLTAGE_NUM 256
1553    
1554     struct act8865 {
1555     struct regmap *regmap;
1556     @@ -222,7 +222,8 @@ static const struct regulator_linear_range act8600_sudcdc_voltage_ranges[] = {
1557     REGULATOR_LINEAR_RANGE(3000000, 0, 63, 0),
1558     REGULATOR_LINEAR_RANGE(3000000, 64, 159, 100000),
1559     REGULATOR_LINEAR_RANGE(12600000, 160, 191, 200000),
1560     - REGULATOR_LINEAR_RANGE(19000000, 191, 255, 400000),
1561     + REGULATOR_LINEAR_RANGE(19000000, 192, 247, 400000),
1562     + REGULATOR_LINEAR_RANGE(41400000, 248, 255, 0),
1563     };
1564    
1565     static struct regulator_ops act8865_ops = {
1566     diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
1567     index 2f872f784e10..5252dd5d3f4b 100644
1568     --- a/drivers/scsi/hisi_sas/hisi_sas_main.c
1569     +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
1570     @@ -10,6 +10,7 @@
1571     */
1572    
1573     #include "hisi_sas.h"
1574     +#include "../libsas/sas_internal.h"
1575     #define DRV_NAME "hisi_sas"
1576    
1577     #define DEV_IS_GONE(dev) \
1578     @@ -1128,9 +1129,18 @@ static void hisi_sas_port_deformed(struct asd_sas_phy *sas_phy)
1579    
1580     static void hisi_sas_phy_disconnected(struct hisi_sas_phy *phy)
1581     {
1582     + struct asd_sas_phy *sas_phy = &phy->sas_phy;
1583     + struct sas_phy *sphy = sas_phy->phy;
1584     + struct sas_phy_data *d = sphy->hostdata;
1585     +
1586     phy->phy_attached = 0;
1587     phy->phy_type = 0;
1588     phy->port = NULL;
1589     +
1590     + if (d->enable)
1591     + sphy->negotiated_linkrate = SAS_LINK_RATE_UNKNOWN;
1592     + else
1593     + sphy->negotiated_linkrate = SAS_PHY_DISABLED;
1594     }
1595    
1596     void hisi_sas_phy_down(struct hisi_hba *hisi_hba, int phy_no, int rdy)
1597     diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
1598     index 5de024a50e15..5b1c37e3913c 100644
1599     --- a/drivers/scsi/megaraid/megaraid_sas_base.c
1600     +++ b/drivers/scsi/megaraid/megaraid_sas_base.c
1601     @@ -3956,6 +3956,7 @@ int megasas_alloc_cmds(struct megasas_instance *instance)
1602     if (megasas_create_frame_pool(instance)) {
1603     dev_printk(KERN_DEBUG, &instance->pdev->dev, "Error creating frame DMA pool\n");
1604     megasas_free_cmds(instance);
1605     + return -ENOMEM;
1606     }
1607    
1608     return 0;
1609     diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
1610     index 27a6d3c6cb7c..67f6f134abc4 100644
1611     --- a/drivers/scsi/scsi_scan.c
1612     +++ b/drivers/scsi/scsi_scan.c
1613     @@ -219,7 +219,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
1614     struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
1615    
1616     sdev = kzalloc(sizeof(*sdev) + shost->transportt->device_size,
1617     - GFP_ATOMIC);
1618     + GFP_KERNEL);
1619     if (!sdev)
1620     goto out;
1621    
1622     @@ -796,7 +796,7 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
1623     */
1624     sdev->inquiry = kmemdup(inq_result,
1625     max_t(size_t, sdev->inquiry_len, 36),
1626     - GFP_ATOMIC);
1627     + GFP_KERNEL);
1628     if (sdev->inquiry == NULL)
1629     return SCSI_SCAN_NO_RESPONSE;
1630    
1631     @@ -1095,7 +1095,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
1632     if (!sdev)
1633     goto out;
1634    
1635     - result = kmalloc(result_len, GFP_ATOMIC |
1636     + result = kmalloc(result_len, GFP_KERNEL |
1637     ((shost->unchecked_isa_dma) ? __GFP_DMA : 0));
1638     if (!result)
1639     goto out_free_sdev;
1640     diff --git a/drivers/soc/qcom/qcom_gsbi.c b/drivers/soc/qcom/qcom_gsbi.c
1641     index 09c669e70d63..038abc377fdb 100644
1642     --- a/drivers/soc/qcom/qcom_gsbi.c
1643     +++ b/drivers/soc/qcom/qcom_gsbi.c
1644     @@ -138,7 +138,7 @@ static int gsbi_probe(struct platform_device *pdev)
1645     struct resource *res;
1646     void __iomem *base;
1647     struct gsbi_info *gsbi;
1648     - int i;
1649     + int i, ret;
1650     u32 mask, gsbi_num;
1651     const struct crci_config *config = NULL;
1652    
1653     @@ -221,7 +221,10 @@ static int gsbi_probe(struct platform_device *pdev)
1654    
1655     platform_set_drvdata(pdev, gsbi);
1656    
1657     - return of_platform_populate(node, NULL, NULL, &pdev->dev);
1658     + ret = of_platform_populate(node, NULL, NULL, &pdev->dev);
1659     + if (ret)
1660     + clk_disable_unprepare(gsbi->hclk);
1661     + return ret;
1662     }
1663    
1664     static int gsbi_remove(struct platform_device *pdev)
1665     diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
1666     index de2c1bfe28b5..c4f5e5bbb8dc 100644
1667     --- a/drivers/soc/tegra/fuse/fuse-tegra.c
1668     +++ b/drivers/soc/tegra/fuse/fuse-tegra.c
1669     @@ -131,13 +131,17 @@ static int tegra_fuse_probe(struct platform_device *pdev)
1670     /* take over the memory region from the early initialization */
1671     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1672     fuse->base = devm_ioremap_resource(&pdev->dev, res);
1673     - if (IS_ERR(fuse->base))
1674     - return PTR_ERR(fuse->base);
1675     + if (IS_ERR(fuse->base)) {
1676     + err = PTR_ERR(fuse->base);
1677     + fuse->base = base;
1678     + return err;
1679     + }
1680    
1681     fuse->clk = devm_clk_get(&pdev->dev, "fuse");
1682     if (IS_ERR(fuse->clk)) {
1683     dev_err(&pdev->dev, "failed to get FUSE clock: %ld",
1684     PTR_ERR(fuse->clk));
1685     + fuse->base = base;
1686     return PTR_ERR(fuse->clk);
1687     }
1688    
1689     @@ -146,8 +150,10 @@ static int tegra_fuse_probe(struct platform_device *pdev)
1690    
1691     if (fuse->soc->probe) {
1692     err = fuse->soc->probe(fuse);
1693     - if (err < 0)
1694     + if (err < 0) {
1695     + fuse->base = base;
1696     return err;
1697     + }
1698     }
1699    
1700     if (tegra_fuse_create_sysfs(&pdev->dev, fuse->soc->info->size,
1701     diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
1702     index d8e1945cb627..ef688aadb032 100644
1703     --- a/drivers/tty/serial/atmel_serial.c
1704     +++ b/drivers/tty/serial/atmel_serial.c
1705     @@ -175,6 +175,8 @@ struct atmel_uart_port {
1706     unsigned int pending_status;
1707     spinlock_t lock_suspended;
1708    
1709     + bool hd_start_rx; /* can start RX during half-duplex operation */
1710     +
1711     int (*prepare_rx)(struct uart_port *port);
1712     int (*prepare_tx)(struct uart_port *port);
1713     void (*schedule_rx)(struct uart_port *port);
1714     @@ -241,6 +243,12 @@ static inline void atmel_uart_write_char(struct uart_port *port, u8 value)
1715    
1716     #endif
1717    
1718     +static inline int atmel_uart_is_half_duplex(struct uart_port *port)
1719     +{
1720     + return (port->rs485.flags & SER_RS485_ENABLED) &&
1721     + !(port->rs485.flags & SER_RS485_RX_DURING_TX);
1722     +}
1723     +
1724     #ifdef CONFIG_SERIAL_ATMEL_PDC
1725     static bool atmel_use_pdc_rx(struct uart_port *port)
1726     {
1727     @@ -492,9 +500,9 @@ static void atmel_stop_tx(struct uart_port *port)
1728     /* Disable interrupts */
1729     atmel_uart_writel(port, ATMEL_US_IDR, atmel_port->tx_done_mask);
1730    
1731     - if ((port->rs485.flags & SER_RS485_ENABLED) &&
1732     - !(port->rs485.flags & SER_RS485_RX_DURING_TX))
1733     + if (atmel_uart_is_half_duplex(port))
1734     atmel_start_rx(port);
1735     +
1736     }
1737    
1738     /*
1739     @@ -511,8 +519,7 @@ static void atmel_start_tx(struct uart_port *port)
1740     return;
1741    
1742     if (atmel_use_pdc_tx(port) || atmel_use_dma_tx(port))
1743     - if ((port->rs485.flags & SER_RS485_ENABLED) &&
1744     - !(port->rs485.flags & SER_RS485_RX_DURING_TX))
1745     + if (atmel_uart_is_half_duplex(port))
1746     atmel_stop_rx(port);
1747    
1748     if (atmel_use_pdc_tx(port))
1749     @@ -809,10 +816,14 @@ static void atmel_complete_tx_dma(void *arg)
1750     */
1751     if (!uart_circ_empty(xmit))
1752     atmel_tasklet_schedule(atmel_port, &atmel_port->tasklet_tx);
1753     - else if ((port->rs485.flags & SER_RS485_ENABLED) &&
1754     - !(port->rs485.flags & SER_RS485_RX_DURING_TX)) {
1755     - /* DMA done, stop TX, start RX for RS485 */
1756     - atmel_start_rx(port);
1757     + else if (atmel_uart_is_half_duplex(port)) {
1758     + /*
1759     + * DMA done, re-enable TXEMPTY and signal that we can stop
1760     + * TX and start RX for RS485
1761     + */
1762     + atmel_port->hd_start_rx = true;
1763     + atmel_uart_writel(port, ATMEL_US_IER,
1764     + atmel_port->tx_done_mask);
1765     }
1766    
1767     spin_unlock_irqrestore(&port->lock, flags);
1768     @@ -1257,9 +1268,20 @@ atmel_handle_transmit(struct uart_port *port, unsigned int pending)
1769     struct atmel_uart_port *atmel_port = to_atmel_uart_port(port);
1770    
1771     if (pending & atmel_port->tx_done_mask) {
1772     - /* Either PDC or interrupt transmission */
1773     atmel_uart_writel(port, ATMEL_US_IDR,
1774     atmel_port->tx_done_mask);
1775     +
1776     + /* Start RX if flag was set and FIFO is empty */
1777     + if (atmel_port->hd_start_rx) {
1778     + if (!(atmel_uart_readl(port, ATMEL_US_CSR)
1779     + & ATMEL_US_TXEMPTY))
1780     + dev_warn(port->dev, "Should start RX, but TX fifo is not empty\n");
1781     +
1782     + atmel_port->hd_start_rx = false;
1783     + atmel_start_rx(port);
1784     + return;
1785     + }
1786     +
1787     atmel_tasklet_schedule(atmel_port, &atmel_port->tasklet_tx);
1788     }
1789     }
1790     @@ -1386,8 +1408,7 @@ static void atmel_tx_pdc(struct uart_port *port)
1791     atmel_uart_writel(port, ATMEL_US_IER,
1792     atmel_port->tx_done_mask);
1793     } else {
1794     - if ((port->rs485.flags & SER_RS485_ENABLED) &&
1795     - !(port->rs485.flags & SER_RS485_RX_DURING_TX)) {
1796     + if (atmel_uart_is_half_duplex(port)) {
1797     /* DMA done, stop TX, start RX for RS485 */
1798     atmel_start_rx(port);
1799     }
1800     diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
1801     index 41b9a7ccce08..ca9c82ee6c35 100644
1802     --- a/drivers/tty/tty_buffer.c
1803     +++ b/drivers/tty/tty_buffer.c
1804     @@ -25,7 +25,7 @@
1805     * Byte threshold to limit memory consumption for flip buffers.
1806     * The actual memory limit is > 2x this amount.
1807     */
1808     -#define TTYB_DEFAULT_MEM_LIMIT 65536
1809     +#define TTYB_DEFAULT_MEM_LIMIT (640 * 1024UL)
1810    
1811     /*
1812     * We default to dicing tty buffer allocations to this many characters
1813     diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
1814     index 64c6af2c8559..e96e3a5808b3 100644
1815     --- a/drivers/usb/chipidea/core.c
1816     +++ b/drivers/usb/chipidea/core.c
1817     @@ -901,8 +901,15 @@ static int ci_hdrc_probe(struct platform_device *pdev)
1818     } else if (ci->platdata->usb_phy) {
1819     ci->usb_phy = ci->platdata->usb_phy;
1820     } else {
1821     + ci->usb_phy = devm_usb_get_phy_by_phandle(dev->parent, "phys",
1822     + 0);
1823     ci->phy = devm_phy_get(dev->parent, "usb-phy");
1824     - ci->usb_phy = devm_usb_get_phy(dev->parent, USB_PHY_TYPE_USB2);
1825     +
1826     + /* Fallback to grabbing any registered USB2 PHY */
1827     + if (IS_ERR(ci->usb_phy) &&
1828     + PTR_ERR(ci->usb_phy) != -EPROBE_DEFER)
1829     + ci->usb_phy = devm_usb_get_phy(dev->parent,
1830     + USB_PHY_TYPE_USB2);
1831    
1832     /* if both generic PHY and USB PHY layers aren't enabled */
1833     if (PTR_ERR(ci->phy) == -ENOSYS &&
1834     diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
1835     index 04eb64381d92..927ac0ee09b7 100644
1836     --- a/drivers/usb/gadget/function/f_fs.c
1837     +++ b/drivers/usb/gadget/function/f_fs.c
1838     @@ -1008,6 +1008,7 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
1839     * condition with req->complete callback.
1840     */
1841     usb_ep_dequeue(ep->ep, req);
1842     + wait_for_completion(&done);
1843     interrupted = ep->status < 0;
1844     }
1845    
1846     diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
1847     index a1d93151c059..c928190666ac 100644
1848     --- a/drivers/video/fbdev/core/fbmem.c
1849     +++ b/drivers/video/fbdev/core/fbmem.c
1850     @@ -425,6 +425,9 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
1851     {
1852     unsigned int x;
1853    
1854     + if (image->width > info->var.xres || image->height > info->var.yres)
1855     + return;
1856     +
1857     if (rotate == FB_ROTATE_UR) {
1858     for (x = 0;
1859     x < num && image->dx + image->width <= info->var.xres;
1860     diff --git a/fs/buffer.c b/fs/buffer.c
1861     index e0d46d47e358..a89be9741d12 100644
1862     --- a/fs/buffer.c
1863     +++ b/fs/buffer.c
1864     @@ -3041,6 +3041,13 @@ void guard_bio_eod(int op, struct bio *bio)
1865     /* Uhhuh. We've got a bio that straddles the device size! */
1866     truncated_bytes = bio->bi_iter.bi_size - (maxsector << 9);
1867    
1868     + /*
1869     + * The bio contains more than one segment which spans EOD, just return
1870     + * and let IO layer turn it into an EIO
1871     + */
1872     + if (truncated_bytes > bvec->bv_len)
1873     + return;
1874     +
1875     /* Truncate the bio.. */
1876     bio->bi_iter.bi_size -= truncated_bytes;
1877     bvec->bv_len -= truncated_bytes;
1878     diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c
1879     index 9156be545b0f..4660208132a2 100644
1880     --- a/fs/cifs/cifs_dfs_ref.c
1881     +++ b/fs/cifs/cifs_dfs_ref.c
1882     @@ -271,9 +271,9 @@ static void dump_referral(const struct dfs_info3_param *ref)
1883     {
1884     cifs_dbg(FYI, "DFS: ref path: %s\n", ref->path_name);
1885     cifs_dbg(FYI, "DFS: node path: %s\n", ref->node_name);
1886     - cifs_dbg(FYI, "DFS: fl: %hd, srv_type: %hd\n",
1887     + cifs_dbg(FYI, "DFS: fl: %d, srv_type: %d\n",
1888     ref->flags, ref->server_type);
1889     - cifs_dbg(FYI, "DFS: ref_flags: %hd, path_consumed: %hd\n",
1890     + cifs_dbg(FYI, "DFS: ref_flags: %d, path_consumed: %d\n",
1891     ref->ref_flag, ref->path_consumed);
1892     }
1893    
1894     diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
1895     index 33e65b71c49a..f291ed0c155d 100644
1896     --- a/fs/cifs/connect.c
1897     +++ b/fs/cifs/connect.c
1898     @@ -1201,6 +1201,11 @@ cifs_parse_devname(const char *devname, struct smb_vol *vol)
1899     const char *delims = "/\\";
1900     size_t len;
1901    
1902     + if (unlikely(!devname || !*devname)) {
1903     + cifs_dbg(VFS, "Device name not specified.\n");
1904     + return -EINVAL;
1905     + }
1906     +
1907     /* make sure we have a valid UNC double delimiter prefix */
1908     len = strspn(devname, delims);
1909     if (len != 2)
1910     diff --git a/fs/cifs/file.c b/fs/cifs/file.c
1911     index 1c5099fffaec..7d295bf283ca 100644
1912     --- a/fs/cifs/file.c
1913     +++ b/fs/cifs/file.c
1914     @@ -1627,8 +1627,20 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type,
1915     rc = server->ops->mand_unlock_range(cfile, flock, xid);
1916    
1917     out:
1918     - if (flock->fl_flags & FL_POSIX && !rc)
1919     + if (flock->fl_flags & FL_POSIX) {
1920     + /*
1921     + * If this is a request to remove all locks because we
1922     + * are closing the file, it doesn't matter if the
1923     + * unlocking failed as both cifs.ko and the SMB server
1924     + * remove the lock on file close
1925     + */
1926     + if (rc) {
1927     + cifs_dbg(VFS, "%s failed rc=%d\n", __func__, rc);
1928     + if (!(flock->fl_flags & FL_CLOSE))
1929     + return rc;
1930     + }
1931     rc = locks_lock_file_wait(file, flock);
1932     + }
1933     return rc;
1934     }
1935    
1936     diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
1937     index efd72e1fae74..f7a9adab0b84 100644
1938     --- a/fs/cifs/smb1ops.c
1939     +++ b/fs/cifs/smb1ops.c
1940     @@ -305,7 +305,7 @@ coalesce_t2(char *second_buf, struct smb_hdr *target_hdr)
1941     remaining = tgt_total_cnt - total_in_tgt;
1942    
1943     if (remaining < 0) {
1944     - cifs_dbg(FYI, "Server sent too much data. tgt_total_cnt=%hu total_in_tgt=%hu\n",
1945     + cifs_dbg(FYI, "Server sent too much data. tgt_total_cnt=%hu total_in_tgt=%u\n",
1946     tgt_total_cnt, total_in_tgt);
1947     return -EPROTO;
1948     }
1949     diff --git a/fs/ext4/indirect.c b/fs/ext4/indirect.c
1950     index 14007e621d2a..d2844fe9040d 100644
1951     --- a/fs/ext4/indirect.c
1952     +++ b/fs/ext4/indirect.c
1953     @@ -1217,6 +1217,7 @@ int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
1954     ext4_lblk_t offsets[4], offsets2[4];
1955     Indirect chain[4], chain2[4];
1956     Indirect *partial, *partial2;
1957     + Indirect *p = NULL, *p2 = NULL;
1958     ext4_lblk_t max_block;
1959     __le32 nr = 0, nr2 = 0;
1960     int n = 0, n2 = 0;
1961     @@ -1258,7 +1259,7 @@ int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
1962     }
1963    
1964    
1965     - partial = ext4_find_shared(inode, n, offsets, chain, &nr);
1966     + partial = p = ext4_find_shared(inode, n, offsets, chain, &nr);
1967     if (nr) {
1968     if (partial == chain) {
1969     /* Shared branch grows from the inode */
1970     @@ -1283,13 +1284,11 @@ int ext4_ind_remove_space(handle_t *handle, struct inode *inode,
1971     partial->p + 1,
1972     (__le32 *)partial->bh->b_data+addr_per_block,
1973     (chain+n-1) - partial);
1974     - BUFFER_TRACE(partial->bh, "call brelse");
1975     - brelse(partial->bh);
1976     partial--;
1977     }
1978    
1979     end_range:
1980     - partial2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
1981     + partial2 = p2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
1982     if (nr2) {
1983     if (partial2 == chain2) {
1984     /*
1985     @@ -1319,16 +1318,14 @@ end_range:
1986     (__le32 *)partial2->bh->b_data,
1987     partial2->p,
1988     (chain2+n2-1) - partial2);
1989     - BUFFER_TRACE(partial2->bh, "call brelse");
1990     - brelse(partial2->bh);
1991     partial2--;
1992     }
1993     goto do_indirects;
1994     }
1995    
1996     /* Punch happened within the same level (n == n2) */
1997     - partial = ext4_find_shared(inode, n, offsets, chain, &nr);
1998     - partial2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
1999     + partial = p = ext4_find_shared(inode, n, offsets, chain, &nr);
2000     + partial2 = p2 = ext4_find_shared(inode, n2, offsets2, chain2, &nr2);
2001    
2002     /* Free top, but only if partial2 isn't its subtree. */
2003     if (nr) {
2004     @@ -1385,15 +1382,7 @@ end_range:
2005     partial->p + 1,
2006     partial2->p,
2007     (chain+n-1) - partial);
2008     - while (partial > chain) {
2009     - BUFFER_TRACE(partial->bh, "call brelse");
2010     - brelse(partial->bh);
2011     - }
2012     - while (partial2 > chain2) {
2013     - BUFFER_TRACE(partial2->bh, "call brelse");
2014     - brelse(partial2->bh);
2015     - }
2016     - return 0;
2017     + goto cleanup;
2018     }
2019    
2020     /*
2021     @@ -1408,8 +1397,6 @@ end_range:
2022     partial->p + 1,
2023     (__le32 *)partial->bh->b_data+addr_per_block,
2024     (chain+n-1) - partial);
2025     - BUFFER_TRACE(partial->bh, "call brelse");
2026     - brelse(partial->bh);
2027     partial--;
2028     }
2029     if (partial2 > chain2 && depth2 <= depth) {
2030     @@ -1417,11 +1404,21 @@ end_range:
2031     (__le32 *)partial2->bh->b_data,
2032     partial2->p,
2033     (chain2+n2-1) - partial2);
2034     - BUFFER_TRACE(partial2->bh, "call brelse");
2035     - brelse(partial2->bh);
2036     partial2--;
2037     }
2038     }
2039     +
2040     +cleanup:
2041     + while (p && p > chain) {
2042     + BUFFER_TRACE(p->bh, "call brelse");
2043     + brelse(p->bh);
2044     + p--;
2045     + }
2046     + while (p2 && p2 > chain2) {
2047     + BUFFER_TRACE(p2->bh, "call brelse");
2048     + brelse(p2->bh);
2049     + p2--;
2050     + }
2051     return 0;
2052    
2053     do_indirects:
2054     @@ -1429,7 +1426,7 @@ do_indirects:
2055     switch (offsets[0]) {
2056     default:
2057     if (++n >= n2)
2058     - return 0;
2059     + break;
2060     nr = i_data[EXT4_IND_BLOCK];
2061     if (nr) {
2062     ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 1);
2063     @@ -1437,7 +1434,7 @@ do_indirects:
2064     }
2065     case EXT4_IND_BLOCK:
2066     if (++n >= n2)
2067     - return 0;
2068     + break;
2069     nr = i_data[EXT4_DIND_BLOCK];
2070     if (nr) {
2071     ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 2);
2072     @@ -1445,7 +1442,7 @@ do_indirects:
2073     }
2074     case EXT4_DIND_BLOCK:
2075     if (++n >= n2)
2076     - return 0;
2077     + break;
2078     nr = i_data[EXT4_TIND_BLOCK];
2079     if (nr) {
2080     ext4_free_branches(handle, inode, NULL, &nr, &nr+1, 3);
2081     @@ -1454,5 +1451,5 @@ do_indirects:
2082     case EXT4_TIND_BLOCK:
2083     ;
2084     }
2085     - return 0;
2086     + goto cleanup;
2087     }
2088     diff --git a/fs/f2fs/trace.c b/fs/f2fs/trace.c
2089     index 73b4e1d1912a..501c283761d2 100644
2090     --- a/fs/f2fs/trace.c
2091     +++ b/fs/f2fs/trace.c
2092     @@ -61,6 +61,7 @@ void f2fs_trace_pid(struct page *page)
2093    
2094     page->private = pid;
2095    
2096     +retry:
2097     if (radix_tree_preload(GFP_NOFS))
2098     return;
2099    
2100     @@ -71,7 +72,12 @@ void f2fs_trace_pid(struct page *page)
2101     if (p)
2102     radix_tree_delete(&pids, pid);
2103    
2104     - f2fs_radix_tree_insert(&pids, pid, current);
2105     + if (radix_tree_insert(&pids, pid, current)) {
2106     + spin_unlock(&pids_lock);
2107     + radix_tree_preload_end();
2108     + cond_resched();
2109     + goto retry;
2110     + }
2111    
2112     trace_printk("%3x:%3x %4x %-16s\n",
2113     MAJOR(inode->i_sb->s_dev), MINOR(inode->i_sb->s_dev),
2114     diff --git a/fs/file.c b/fs/file.c
2115     index 69d6990e3021..09aac4d4729b 100644
2116     --- a/fs/file.c
2117     +++ b/fs/file.c
2118     @@ -475,6 +475,7 @@ struct files_struct init_files = {
2119     .full_fds_bits = init_files.full_fds_bits_init,
2120     },
2121     .file_lock = __SPIN_LOCK_UNLOCKED(init_files.file_lock),
2122     + .resize_wait = __WAIT_QUEUE_HEAD_INITIALIZER(init_files.resize_wait),
2123     };
2124    
2125     static unsigned int find_next_fd(struct fdtable *fdt, unsigned int start)
2126     diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c
2127     index 31f8ca046639..10ec27676191 100644
2128     --- a/fs/jbd2/commit.c
2129     +++ b/fs/jbd2/commit.c
2130     @@ -700,9 +700,11 @@ void jbd2_journal_commit_transaction(journal_t *journal)
2131     the last tag we set up. */
2132    
2133     tag->t_flags |= cpu_to_be16(JBD2_FLAG_LAST_TAG);
2134     -
2135     - jbd2_descriptor_block_csum_set(journal, descriptor);
2136     start_journal_io:
2137     + if (descriptor)
2138     + jbd2_descriptor_block_csum_set(journal,
2139     + descriptor);
2140     +
2141     for (i = 0; i < bufs; i++) {
2142     struct buffer_head *bh = wbuf[i];
2143     /*
2144     diff --git a/fs/ocfs2/cluster/nodemanager.c b/fs/ocfs2/cluster/nodemanager.c
2145     index c204ac9b49e5..81a0d5d82757 100644
2146     --- a/fs/ocfs2/cluster/nodemanager.c
2147     +++ b/fs/ocfs2/cluster/nodemanager.c
2148     @@ -621,13 +621,15 @@ static void o2nm_node_group_drop_item(struct config_group *group,
2149     struct o2nm_node *node = to_o2nm_node(item);
2150     struct o2nm_cluster *cluster = to_o2nm_cluster(group->cg_item.ci_parent);
2151    
2152     - o2net_disconnect_node(node);
2153     + if (cluster->cl_nodes[node->nd_num] == node) {
2154     + o2net_disconnect_node(node);
2155    
2156     - if (cluster->cl_has_local &&
2157     - (cluster->cl_local_node == node->nd_num)) {
2158     - cluster->cl_has_local = 0;
2159     - cluster->cl_local_node = O2NM_INVALID_NODE_NUM;
2160     - o2net_stop_listening(node);
2161     + if (cluster->cl_has_local &&
2162     + (cluster->cl_local_node == node->nd_num)) {
2163     + cluster->cl_has_local = 0;
2164     + cluster->cl_local_node = O2NM_INVALID_NODE_NUM;
2165     + o2net_stop_listening(node);
2166     + }
2167     }
2168    
2169     /* XXX call into net to stop this node from trading messages */
2170     diff --git a/fs/read_write.c b/fs/read_write.c
2171     index 9819f7c6c8c5..6ab67b860159 100644
2172     --- a/fs/read_write.c
2173     +++ b/fs/read_write.c
2174     @@ -1204,6 +1204,9 @@ COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
2175     const struct compat_iovec __user *,vec,
2176     unsigned long, vlen, loff_t, pos, int, flags)
2177     {
2178     + if (pos == -1)
2179     + return do_compat_readv(fd, vec, vlen, flags);
2180     +
2181     return do_compat_preadv64(fd, vec, vlen, pos, flags);
2182     }
2183     #endif
2184     @@ -1310,6 +1313,9 @@ COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
2185     const struct compat_iovec __user *,vec,
2186     unsigned long, vlen, loff_t, pos, int, flags)
2187     {
2188     + if (pos == -1)
2189     + return do_compat_writev(fd, vec, vlen, flags);
2190     +
2191     return do_compat_pwritev64(fd, vec, vlen, pos, flags);
2192     }
2193     #endif
2194     diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
2195     index c9be57931b58..bb5547a83daf 100644
2196     --- a/include/linux/irqdesc.h
2197     +++ b/include/linux/irqdesc.h
2198     @@ -61,6 +61,7 @@ struct irq_desc {
2199     unsigned int core_internal_state__do_not_mess_with_it;
2200     unsigned int depth; /* nested irq disables */
2201     unsigned int wake_depth; /* nested wake enables */
2202     + unsigned int tot_count;
2203     unsigned int irq_count; /* For detecting broken IRQs */
2204     unsigned long last_unhandled; /* Aging timer for unhandled count */
2205     unsigned int irqs_unhandled;
2206     diff --git a/include/linux/relay.h b/include/linux/relay.h
2207     index 68c1448e56bb..2560f8706408 100644
2208     --- a/include/linux/relay.h
2209     +++ b/include/linux/relay.h
2210     @@ -65,7 +65,7 @@ struct rchan
2211     struct kref kref; /* channel refcount */
2212     void *private_data; /* for user-defined data */
2213     size_t last_toobig; /* tried to log event > subbuf size */
2214     - struct rchan_buf ** __percpu buf; /* per-cpu channel buffers */
2215     + struct rchan_buf * __percpu *buf; /* per-cpu channel buffers */
2216     int is_global; /* One global buffer ? */
2217     struct list_head list; /* for channel list */
2218     struct dentry *parent; /* parent dentry passed to open */
2219     diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
2220     index 19d0778ec382..121c8f99ecdd 100644
2221     --- a/include/linux/ring_buffer.h
2222     +++ b/include/linux/ring_buffer.h
2223     @@ -125,7 +125,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts,
2224     unsigned long *lost_events);
2225    
2226     struct ring_buffer_iter *
2227     -ring_buffer_read_prepare(struct ring_buffer *buffer, int cpu);
2228     +ring_buffer_read_prepare(struct ring_buffer *buffer, int cpu, gfp_t flags);
2229     void ring_buffer_read_prepare_sync(void);
2230     void ring_buffer_read_start(struct ring_buffer_iter *iter);
2231     void ring_buffer_read_finish(struct ring_buffer_iter *iter);
2232     diff --git a/include/net/netfilter/br_netfilter.h b/include/net/netfilter/br_netfilter.h
2233     index 0b0c35c37125..238d1b83a45a 100644
2234     --- a/include/net/netfilter/br_netfilter.h
2235     +++ b/include/net/netfilter/br_netfilter.h
2236     @@ -48,7 +48,6 @@ static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
2237     }
2238    
2239     struct net_device *setup_pre_routing(struct sk_buff *skb);
2240     -void br_netfilter_enable(void);
2241    
2242     #if IS_ENABLED(CONFIG_IPV6)
2243     int br_validate_ipv6(struct net *net, struct sk_buff *skb);
2244     diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
2245     index f30110e1b8c9..9e745cc0726d 100644
2246     --- a/kernel/irq/chip.c
2247     +++ b/kernel/irq/chip.c
2248     @@ -729,7 +729,11 @@ void handle_percpu_irq(struct irq_desc *desc)
2249     {
2250     struct irq_chip *chip = irq_desc_get_chip(desc);
2251    
2252     - kstat_incr_irqs_this_cpu(desc);
2253     + /*
2254     + * PER CPU interrupts are not serialized. Do not touch
2255     + * desc->tot_count.
2256     + */
2257     + __kstat_incr_irqs_this_cpu(desc);
2258    
2259     if (chip->irq_ack)
2260     chip->irq_ack(&desc->irq_data);
2261     @@ -758,7 +762,11 @@ void handle_percpu_devid_irq(struct irq_desc *desc)
2262     unsigned int irq = irq_desc_get_irq(desc);
2263     irqreturn_t res;
2264    
2265     - kstat_incr_irqs_this_cpu(desc);
2266     + /*
2267     + * PER CPU interrupts are not serialized. Do not touch
2268     + * desc->tot_count.
2269     + */
2270     + __kstat_incr_irqs_this_cpu(desc);
2271    
2272     if (chip->irq_ack)
2273     chip->irq_ack(&desc->irq_data);
2274     diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
2275     index bc226e783bd2..22e3f29a30d8 100644
2276     --- a/kernel/irq/internals.h
2277     +++ b/kernel/irq/internals.h
2278     @@ -199,12 +199,18 @@ static inline bool irqd_has_set(struct irq_data *d, unsigned int mask)
2279    
2280     #undef __irqd_to_state
2281    
2282     -static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc)
2283     +static inline void __kstat_incr_irqs_this_cpu(struct irq_desc *desc)
2284     {
2285     __this_cpu_inc(*desc->kstat_irqs);
2286     __this_cpu_inc(kstat.irqs_sum);
2287     }
2288    
2289     +static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc)
2290     +{
2291     + __kstat_incr_irqs_this_cpu(desc);
2292     + desc->tot_count++;
2293     +}
2294     +
2295     static inline int irq_desc_get_node(struct irq_desc *desc)
2296     {
2297     return irq_common_data_get_node(&desc->irq_common_data);
2298     diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
2299     index 77977f55dff7..5e0ea17d01a6 100644
2300     --- a/kernel/irq/irqdesc.c
2301     +++ b/kernel/irq/irqdesc.c
2302     @@ -109,6 +109,7 @@ static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node,
2303     desc->depth = 1;
2304     desc->irq_count = 0;
2305     desc->irqs_unhandled = 0;
2306     + desc->tot_count = 0;
2307     desc->name = NULL;
2308     desc->owner = owner;
2309     for_each_possible_cpu(cpu)
2310     @@ -880,11 +881,15 @@ unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
2311     unsigned int kstat_irqs(unsigned int irq)
2312     {
2313     struct irq_desc *desc = irq_to_desc(irq);
2314     - int cpu;
2315     unsigned int sum = 0;
2316     + int cpu;
2317    
2318     if (!desc || !desc->kstat_irqs)
2319     return 0;
2320     + if (!irq_settings_is_per_cpu_devid(desc) &&
2321     + !irq_settings_is_per_cpu(desc))
2322     + return desc->tot_count;
2323     +
2324     for_each_possible_cpu(cpu)
2325     sum += *per_cpu_ptr(desc->kstat_irqs, cpu);
2326     return sum;
2327     diff --git a/kernel/sysctl.c b/kernel/sysctl.c
2328     index efd340a510a9..5515d578095b 100644
2329     --- a/kernel/sysctl.c
2330     +++ b/kernel/sysctl.c
2331     @@ -125,6 +125,7 @@ static int __maybe_unused one = 1;
2332     static int __maybe_unused two = 2;
2333     static int __maybe_unused four = 4;
2334     static unsigned long one_ul = 1;
2335     +static unsigned long long_max = LONG_MAX;
2336     static int one_hundred = 100;
2337     static int one_thousand = 1000;
2338     #ifdef CONFIG_PRINTK
2339     @@ -1682,6 +1683,8 @@ static struct ctl_table fs_table[] = {
2340     .maxlen = sizeof(files_stat.max_files),
2341     .mode = 0644,
2342     .proc_handler = proc_doulongvec_minmax,
2343     + .extra1 = &zero,
2344     + .extra2 = &long_max,
2345     },
2346     {
2347     .procname = "nr_open",
2348     diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
2349     index f316e90ad538..5473dcaaca8d 100644
2350     --- a/kernel/trace/ring_buffer.c
2351     +++ b/kernel/trace/ring_buffer.c
2352     @@ -4037,6 +4037,7 @@ EXPORT_SYMBOL_GPL(ring_buffer_consume);
2353     * ring_buffer_read_prepare - Prepare for a non consuming read of the buffer
2354     * @buffer: The ring buffer to read from
2355     * @cpu: The cpu buffer to iterate over
2356     + * @flags: gfp flags to use for memory allocation
2357     *
2358     * This performs the initial preparations necessary to iterate
2359     * through the buffer. Memory is allocated, buffer recording
2360     @@ -4054,7 +4055,7 @@ EXPORT_SYMBOL_GPL(ring_buffer_consume);
2361     * This overall must be paired with ring_buffer_read_finish.
2362     */
2363     struct ring_buffer_iter *
2364     -ring_buffer_read_prepare(struct ring_buffer *buffer, int cpu)
2365     +ring_buffer_read_prepare(struct ring_buffer *buffer, int cpu, gfp_t flags)
2366     {
2367     struct ring_buffer_per_cpu *cpu_buffer;
2368     struct ring_buffer_iter *iter;
2369     @@ -4062,7 +4063,7 @@ ring_buffer_read_prepare(struct ring_buffer *buffer, int cpu)
2370     if (!cpumask_test_cpu(cpu, buffer->cpumask))
2371     return NULL;
2372    
2373     - iter = kmalloc(sizeof(*iter), GFP_KERNEL);
2374     + iter = kmalloc(sizeof(*iter), flags);
2375     if (!iter)
2376     return NULL;
2377    
2378     diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
2379     index f18dedf9195e..d4773939c054 100644
2380     --- a/kernel/trace/trace.c
2381     +++ b/kernel/trace/trace.c
2382     @@ -3449,7 +3449,8 @@ __tracing_open(struct inode *inode, struct file *file, bool snapshot)
2383     if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
2384     for_each_tracing_cpu(cpu) {
2385     iter->buffer_iter[cpu] =
2386     - ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
2387     + ring_buffer_read_prepare(iter->trace_buffer->buffer,
2388     + cpu, GFP_KERNEL);
2389     }
2390     ring_buffer_read_prepare_sync();
2391     for_each_tracing_cpu(cpu) {
2392     @@ -3459,7 +3460,8 @@ __tracing_open(struct inode *inode, struct file *file, bool snapshot)
2393     } else {
2394     cpu = iter->cpu_file;
2395     iter->buffer_iter[cpu] =
2396     - ring_buffer_read_prepare(iter->trace_buffer->buffer, cpu);
2397     + ring_buffer_read_prepare(iter->trace_buffer->buffer,
2398     + cpu, GFP_KERNEL);
2399     ring_buffer_read_prepare_sync();
2400     ring_buffer_read_start(iter->buffer_iter[cpu]);
2401     tracing_iter_reset(iter, cpu);
2402     diff --git a/kernel/trace/trace_kdb.c b/kernel/trace/trace_kdb.c
2403     index 57149bce6aad..896458285fdd 100644
2404     --- a/kernel/trace/trace_kdb.c
2405     +++ b/kernel/trace/trace_kdb.c
2406     @@ -50,14 +50,16 @@ static void ftrace_dump_buf(int skip_lines, long cpu_file)
2407     if (cpu_file == RING_BUFFER_ALL_CPUS) {
2408     for_each_tracing_cpu(cpu) {
2409     iter.buffer_iter[cpu] =
2410     - ring_buffer_read_prepare(iter.trace_buffer->buffer, cpu);
2411     + ring_buffer_read_prepare(iter.trace_buffer->buffer,
2412     + cpu, GFP_ATOMIC);
2413     ring_buffer_read_start(iter.buffer_iter[cpu]);
2414     tracing_iter_reset(&iter, cpu);
2415     }
2416     } else {
2417     iter.cpu_file = cpu_file;
2418     iter.buffer_iter[cpu_file] =
2419     - ring_buffer_read_prepare(iter.trace_buffer->buffer, cpu_file);
2420     + ring_buffer_read_prepare(iter.trace_buffer->buffer,
2421     + cpu_file, GFP_ATOMIC);
2422     ring_buffer_read_start(iter.buffer_iter[cpu_file]);
2423     tracing_iter_reset(&iter, cpu_file);
2424     }
2425     diff --git a/lib/bsearch.c b/lib/bsearch.c
2426     index e33c179089db..d50048446b77 100644
2427     --- a/lib/bsearch.c
2428     +++ b/lib/bsearch.c
2429     @@ -11,6 +11,7 @@
2430    
2431     #include <linux/export.h>
2432     #include <linux/bsearch.h>
2433     +#include <linux/kprobes.h>
2434    
2435     /*
2436     * bsearch - binary search an array of elements
2437     @@ -51,3 +52,4 @@ void *bsearch(const void *key, const void *base, size_t num, size_t size,
2438     return NULL;
2439     }
2440     EXPORT_SYMBOL(bsearch);
2441     +NOKPROBE_SYMBOL(bsearch);
2442     diff --git a/lib/int_sqrt.c b/lib/int_sqrt.c
2443     index 1afb545a37c5..6d35274170bc 100644
2444     --- a/lib/int_sqrt.c
2445     +++ b/lib/int_sqrt.c
2446     @@ -7,6 +7,7 @@
2447    
2448     #include <linux/kernel.h>
2449     #include <linux/export.h>
2450     +#include <linux/bitops.h>
2451    
2452     /**
2453     * int_sqrt - rough approximation to sqrt
2454     @@ -21,10 +22,7 @@ unsigned long int_sqrt(unsigned long x)
2455     if (x <= 1)
2456     return x;
2457    
2458     - m = 1UL << (BITS_PER_LONG - 2);
2459     - while (m > x)
2460     - m >>= 2;
2461     -
2462     + m = 1UL << (__fls(x) & ~1UL);
2463     while (m != 0) {
2464     b = y + m;
2465     y >>= 1;
2466     diff --git a/lib/raid6/Makefile b/lib/raid6/Makefile
2467     index 3057011f5599..10ca69475611 100644
2468     --- a/lib/raid6/Makefile
2469     +++ b/lib/raid6/Makefile
2470     @@ -24,7 +24,7 @@ endif
2471     ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
2472     NEON_FLAGS := -ffreestanding
2473     ifeq ($(ARCH),arm)
2474     -NEON_FLAGS += -mfloat-abi=softfp -mfpu=neon
2475     +NEON_FLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
2476     endif
2477     ifeq ($(ARCH),arm64)
2478     CFLAGS_REMOVE_neon1.o += -mgeneral-regs-only
2479     diff --git a/mm/cma.c b/mm/cma.c
2480     index 397687fc51f9..b5d8847497a3 100644
2481     --- a/mm/cma.c
2482     +++ b/mm/cma.c
2483     @@ -339,12 +339,14 @@ int __init cma_declare_contiguous(phys_addr_t base,
2484    
2485     ret = cma_init_reserved_mem(base, size, order_per_bit, res_cma);
2486     if (ret)
2487     - goto err;
2488     + goto free_mem;
2489    
2490     pr_info("Reserved %ld MiB at %pa\n", (unsigned long)size / SZ_1M,
2491     &base);
2492     return 0;
2493    
2494     +free_mem:
2495     + memblock_free(base, size);
2496     err:
2497     pr_err("Failed to reserve %ld MiB\n", (unsigned long)size / SZ_1M);
2498     return ret;
2499     diff --git a/mm/mempolicy.c b/mm/mempolicy.c
2500     index 593b74bed59b..5cb5147235df 100644
2501     --- a/mm/mempolicy.c
2502     +++ b/mm/mempolicy.c
2503     @@ -547,11 +547,16 @@ retry:
2504     goto retry;
2505     }
2506    
2507     - migrate_page_add(page, qp->pagelist, flags);
2508     + if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) {
2509     + if (!vma_migratable(vma))
2510     + break;
2511     + migrate_page_add(page, qp->pagelist, flags);
2512     + } else
2513     + break;
2514     }
2515     pte_unmap_unlock(pte - 1, ptl);
2516     cond_resched();
2517     - return 0;
2518     + return addr != end ? -EIO : 0;
2519     }
2520    
2521     static int queue_pages_hugetlb(pte_t *pte, unsigned long hmask,
2522     @@ -623,7 +628,12 @@ static int queue_pages_test_walk(unsigned long start, unsigned long end,
2523     unsigned long endvma = vma->vm_end;
2524     unsigned long flags = qp->flags;
2525    
2526     - if (!vma_migratable(vma))
2527     + /*
2528     + * Need check MPOL_MF_STRICT to return -EIO if possible
2529     + * regardless of vma_migratable
2530     + */
2531     + if (!vma_migratable(vma) &&
2532     + !(flags & MPOL_MF_STRICT))
2533     return 1;
2534    
2535     if (endvma > end)
2536     @@ -650,7 +660,7 @@ static int queue_pages_test_walk(unsigned long start, unsigned long end,
2537     }
2538    
2539     /* queue pages from current vma */
2540     - if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
2541     + if (flags & MPOL_MF_VALID)
2542     return 0;
2543     return 1;
2544     }
2545     diff --git a/mm/page_ext.c b/mm/page_ext.c
2546     index 121dcffc4ec1..a7be1c7a79f6 100644
2547     --- a/mm/page_ext.c
2548     +++ b/mm/page_ext.c
2549     @@ -286,6 +286,7 @@ static void free_page_ext(void *addr)
2550     table_size = get_entry_size() * PAGES_PER_SECTION;
2551    
2552     BUG_ON(PageReserved(page));
2553     + kmemleak_free(addr);
2554     free_pages_exact(addr, table_size);
2555     }
2556     }
2557     diff --git a/mm/slab.c b/mm/slab.c
2558     index 354a09deecff..d2c0499c6b15 100644
2559     --- a/mm/slab.c
2560     +++ b/mm/slab.c
2561     @@ -566,14 +566,6 @@ static void start_cpu_timer(int cpu)
2562    
2563     static void init_arraycache(struct array_cache *ac, int limit, int batch)
2564     {
2565     - /*
2566     - * The array_cache structures contain pointers to free object.
2567     - * However, when such objects are allocated or transferred to another
2568     - * cache the pointers are not cleared and they could be counted as
2569     - * valid references during a kmemleak scan. Therefore, kmemleak must
2570     - * not scan such objects.
2571     - */
2572     - kmemleak_no_scan(ac);
2573     if (ac) {
2574     ac->avail = 0;
2575     ac->limit = limit;
2576     @@ -589,6 +581,14 @@ static struct array_cache *alloc_arraycache(int node, int entries,
2577     struct array_cache *ac = NULL;
2578    
2579     ac = kmalloc_node(memsize, gfp, node);
2580     + /*
2581     + * The array_cache structures contain pointers to free object.
2582     + * However, when such objects are allocated or transferred to another
2583     + * cache the pointers are not cleared and they could be counted as
2584     + * valid references during a kmemleak scan. Therefore, kmemleak must
2585     + * not scan such objects.
2586     + */
2587     + kmemleak_no_scan(ac);
2588     init_arraycache(ac, entries, batchcount);
2589     return ac;
2590     }
2591     @@ -683,6 +683,7 @@ static struct alien_cache *__alloc_alien_cache(int node, int entries,
2592    
2593     alc = kmalloc_node(memsize, gfp, node);
2594     if (alc) {
2595     + kmemleak_no_scan(alc);
2596     init_arraycache(&alc->ac, entries, batch);
2597     spin_lock_init(&alc->lock);
2598     }
2599     diff --git a/mm/vmalloc.c b/mm/vmalloc.c
2600     index e6aa073f01df..73afe460caf0 100644
2601     --- a/mm/vmalloc.c
2602     +++ b/mm/vmalloc.c
2603     @@ -459,7 +459,11 @@ nocache:
2604     }
2605    
2606     found:
2607     - if (addr + size > vend)
2608     + /*
2609     + * Check also calculated address against the vstart,
2610     + * because it can be 0 because of big align request.
2611     + */
2612     + if (addr + size > vend || addr < vstart)
2613     goto overflow;
2614    
2615     va->va_start = addr;
2616     diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c
2617     index 7e42c0d1f55b..38865deab3ac 100644
2618     --- a/net/bridge/br_netfilter_hooks.c
2619     +++ b/net/bridge/br_netfilter_hooks.c
2620     @@ -878,11 +878,6 @@ static const struct nf_br_ops br_ops = {
2621     .br_dev_xmit_hook = br_nf_dev_xmit,
2622     };
2623    
2624     -void br_netfilter_enable(void)
2625     -{
2626     -}
2627     -EXPORT_SYMBOL_GPL(br_netfilter_enable);
2628     -
2629     /* For br_nf_post_routing, we need (prio = NF_BR_PRI_LAST), because
2630     * br_dev_queue_push_xmit is called afterwards */
2631     static struct nf_hook_ops br_nf_ops[] __read_mostly = {
2632     diff --git a/net/netfilter/xt_physdev.c b/net/netfilter/xt_physdev.c
2633     index bb33598e4530..ec247d8370e8 100644
2634     --- a/net/netfilter/xt_physdev.c
2635     +++ b/net/netfilter/xt_physdev.c
2636     @@ -96,8 +96,7 @@ match_outdev:
2637     static int physdev_mt_check(const struct xt_mtchk_param *par)
2638     {
2639     const struct xt_physdev_info *info = par->matchinfo;
2640     -
2641     - br_netfilter_enable();
2642     + static bool brnf_probed __read_mostly;
2643    
2644     if (!(info->bitmask & XT_PHYSDEV_OP_MASK) ||
2645     info->bitmask & ~XT_PHYSDEV_OP_MASK)
2646     @@ -113,6 +112,12 @@ static int physdev_mt_check(const struct xt_mtchk_param *par)
2647     if (par->hook_mask & (1 << NF_INET_LOCAL_OUT))
2648     return -EINVAL;
2649     }
2650     +
2651     + if (!brnf_probed) {
2652     + brnf_probed = true;
2653     + request_module("br_netfilter");
2654     + }
2655     +
2656     return 0;
2657     }
2658    
2659     diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
2660     index d293b546a2aa..9bd6f97ccd21 100644
2661     --- a/security/selinux/hooks.c
2662     +++ b/security/selinux/hooks.c
2663     @@ -3265,12 +3265,16 @@ static int selinux_inode_setsecurity(struct inode *inode, const char *name,
2664     const void *value, size_t size, int flags)
2665     {
2666     struct inode_security_struct *isec = inode_security_novalidate(inode);
2667     + struct superblock_security_struct *sbsec = inode->i_sb->s_security;
2668     u32 newsid;
2669     int rc;
2670    
2671     if (strcmp(name, XATTR_SELINUX_SUFFIX))
2672     return -EOPNOTSUPP;
2673    
2674     + if (!(sbsec->flags & SBLABEL_MNT))
2675     + return -EOPNOTSUPP;
2676     +
2677     if (!value || !size)
2678     return -EACCES;
2679    
2680     @@ -5984,7 +5988,10 @@ static void selinux_inode_invalidate_secctx(struct inode *inode)
2681     */
2682     static int selinux_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen)
2683     {
2684     - return selinux_inode_setsecurity(inode, XATTR_SELINUX_SUFFIX, ctx, ctxlen, 0);
2685     + int rc = selinux_inode_setsecurity(inode, XATTR_SELINUX_SUFFIX,
2686     + ctx, ctxlen, 0);
2687     + /* Do not return error when suppressing label (SBLABEL_MNT not set). */
2688     + return rc == -EOPNOTSUPP ? 0 : rc;
2689     }
2690    
2691     /*
2692     diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
2693     index e1138e70dbb3..f5eb10f8021c 100644
2694     --- a/sound/core/pcm_native.c
2695     +++ b/sound/core/pcm_native.c
2696     @@ -1346,6 +1346,14 @@ int snd_pcm_suspend_all(struct snd_pcm *pcm)
2697     /* FIXME: the open/close code should lock this as well */
2698     if (substream->runtime == NULL)
2699     continue;
2700     +
2701     + /*
2702     + * Skip BE dai link PCM's that are internal and may
2703     + * not have their substream ops set.
2704     + */
2705     + if (!substream->ops)
2706     + continue;
2707     +
2708     err = snd_pcm_suspend(substream);
2709     if (err < 0 && err != -EBUSY)
2710     return err;
2711     diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c
2712     index dffd549a0e2a..705d2524ec31 100644
2713     --- a/sound/soc/fsl/fsl-asoc-card.c
2714     +++ b/sound/soc/fsl/fsl-asoc-card.c
2715     @@ -689,6 +689,7 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
2716     asrc_fail:
2717     of_node_put(asrc_np);
2718     of_node_put(codec_np);
2719     + put_device(&cpu_pdev->dev);
2720     fail:
2721     of_node_put(cpu_np);
2722    
2723     diff --git a/sound/soc/fsl/imx-sgtl5000.c b/sound/soc/fsl/imx-sgtl5000.c
2724     index b99e0b5e00e9..8e525f7ac08d 100644
2725     --- a/sound/soc/fsl/imx-sgtl5000.c
2726     +++ b/sound/soc/fsl/imx-sgtl5000.c
2727     @@ -115,6 +115,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
2728     ret = -EPROBE_DEFER;
2729     goto fail;
2730     }
2731     + put_device(&ssi_pdev->dev);
2732     codec_dev = of_find_i2c_device_by_node(codec_np);
2733     if (!codec_dev) {
2734     dev_err(&pdev->dev, "failed to find codec platform device\n");
2735     diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
2736     index 669475300ba8..700c74b0aed0 100644
2737     --- a/tools/lib/traceevent/event-parse.c
2738     +++ b/tools/lib/traceevent/event-parse.c
2739     @@ -2428,7 +2428,7 @@ static int arg_num_eval(struct print_arg *arg, long long *val)
2740     static char *arg_eval (struct print_arg *arg)
2741     {
2742     long long val;
2743     - static char buf[20];
2744     + static char buf[24];
2745    
2746     switch (arg->type) {
2747     case PRINT_ATOM:
2748     diff --git a/tools/perf/tests/evsel-tp-sched.c b/tools/perf/tests/evsel-tp-sched.c
2749     index 66b53f10eb18..ea772d41e472 100644
2750     --- a/tools/perf/tests/evsel-tp-sched.c
2751     +++ b/tools/perf/tests/evsel-tp-sched.c
2752     @@ -42,7 +42,7 @@ int test__perf_evsel__tp_sched_test(int subtest __maybe_unused)
2753     return -1;
2754     }
2755    
2756     - if (perf_evsel__test_field(evsel, "prev_comm", 16, true))
2757     + if (perf_evsel__test_field(evsel, "prev_comm", 16, false))
2758     ret = -1;
2759    
2760     if (perf_evsel__test_field(evsel, "prev_pid", 4, true))
2761     @@ -54,7 +54,7 @@ int test__perf_evsel__tp_sched_test(int subtest __maybe_unused)
2762     if (perf_evsel__test_field(evsel, "prev_state", sizeof(long), true))
2763     ret = -1;
2764    
2765     - if (perf_evsel__test_field(evsel, "next_comm", 16, true))
2766     + if (perf_evsel__test_field(evsel, "next_comm", 16, false))
2767     ret = -1;
2768    
2769     if (perf_evsel__test_field(evsel, "next_pid", 4, true))
2770     @@ -72,7 +72,7 @@ int test__perf_evsel__tp_sched_test(int subtest __maybe_unused)
2771     return -1;
2772     }
2773    
2774     - if (perf_evsel__test_field(evsel, "comm", 16, true))
2775     + if (perf_evsel__test_field(evsel, "comm", 16, false))
2776     ret = -1;
2777    
2778     if (perf_evsel__test_field(evsel, "pid", 4, true))