Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.9/0282-4.9.183-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3362 - (hide annotations) (download)
Tue Jun 25 14:03:10 2019 UTC (4 years, 10 months ago) by niro
File size: 105111 byte(s)
-linux-4.9.183
1 niro 3362 diff --git a/Makefile b/Makefile
2     index f34cb9225255..e63ace93b67b 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 182
9     +SUBLEVEL = 183
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm/boot/dts/exynos5420-arndale-octa.dts b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
14     index 9cc83c51c925..e664c33c3c64 100644
15     --- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts
16     +++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
17     @@ -110,6 +110,7 @@
18     regulator-name = "PVDD_APIO_1V8";
19     regulator-min-microvolt = <1800000>;
20     regulator-max-microvolt = <1800000>;
21     + regulator-always-on;
22     };
23    
24     ldo3_reg: LDO3 {
25     @@ -148,6 +149,7 @@
26     regulator-name = "PVDD_ABB_1V8";
27     regulator-min-microvolt = <1800000>;
28     regulator-max-microvolt = <1800000>;
29     + regulator-always-on;
30     };
31    
32     ldo9_reg: LDO9 {
33     diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
34     index b13b0b2db881..8ccafdfbe87c 100644
35     --- a/arch/arm/boot/dts/imx6qdl.dtsi
36     +++ b/arch/arm/boot/dts/imx6qdl.dtsi
37     @@ -875,7 +875,7 @@
38     compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma";
39     reg = <0x020ec000 0x4000>;
40     interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
41     - clocks = <&clks IMX6QDL_CLK_SDMA>,
42     + clocks = <&clks IMX6QDL_CLK_IPG>,
43     <&clks IMX6QDL_CLK_SDMA>;
44     clock-names = "ipg", "ahb";
45     #dma-cells = <3>;
46     diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
47     index 02378db3f5fc..a2c76797e871 100644
48     --- a/arch/arm/boot/dts/imx6sl.dtsi
49     +++ b/arch/arm/boot/dts/imx6sl.dtsi
50     @@ -704,7 +704,7 @@
51     reg = <0x020ec000 0x4000>;
52     interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
53     clocks = <&clks IMX6SL_CLK_SDMA>,
54     - <&clks IMX6SL_CLK_SDMA>;
55     + <&clks IMX6SL_CLK_AHB>;
56     clock-names = "ipg", "ahb";
57     #dma-cells = <3>;
58     /* imx6sl reuses imx6q sdma firmware */
59     diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
60     index a885052157f0..5834194b62e1 100644
61     --- a/arch/arm/boot/dts/imx6sx.dtsi
62     +++ b/arch/arm/boot/dts/imx6sx.dtsi
63     @@ -751,7 +751,7 @@
64     compatible = "fsl,imx6sx-sdma", "fsl,imx6q-sdma";
65     reg = <0x020ec000 0x4000>;
66     interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
67     - clocks = <&clks IMX6SX_CLK_SDMA>,
68     + clocks = <&clks IMX6SX_CLK_IPG>,
69     <&clks IMX6SX_CLK_SDMA>;
70     clock-names = "ipg", "ahb";
71     #dma-cells = <3>;
72     diff --git a/arch/arm/boot/dts/imx6ul.dtsi b/arch/arm/boot/dts/imx6ul.dtsi
73     index c5c05fdccc78..7839300fe46b 100644
74     --- a/arch/arm/boot/dts/imx6ul.dtsi
75     +++ b/arch/arm/boot/dts/imx6ul.dtsi
76     @@ -669,7 +669,7 @@
77     "fsl,imx35-sdma";
78     reg = <0x020ec000 0x4000>;
79     interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
80     - clocks = <&clks IMX6UL_CLK_SDMA>,
81     + clocks = <&clks IMX6UL_CLK_IPG>,
82     <&clks IMX6UL_CLK_SDMA>;
83     clock-names = "ipg", "ahb";
84     #dma-cells = <3>;
85     diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi
86     index 2b6cb05bc01a..edc5ddeb851a 100644
87     --- a/arch/arm/boot/dts/imx7s.dtsi
88     +++ b/arch/arm/boot/dts/imx7s.dtsi
89     @@ -962,8 +962,8 @@
90     compatible = "fsl,imx7d-sdma", "fsl,imx35-sdma";
91     reg = <0x30bd0000 0x10000>;
92     interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
93     - clocks = <&clks IMX7D_SDMA_CORE_CLK>,
94     - <&clks IMX7D_AHB_CHANNEL_ROOT_CLK>;
95     + clocks = <&clks IMX7D_IPG_ROOT_CLK>,
96     + <&clks IMX7D_SDMA_CORE_CLK>;
97     clock-names = "ipg", "ahb";
98     #dma-cells = <3>;
99     fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
100     diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h
101     index 3d7351c844aa..2fd0a2619b0b 100644
102     --- a/arch/arm/include/asm/hardirq.h
103     +++ b/arch/arm/include/asm/hardirq.h
104     @@ -5,6 +5,7 @@
105     #include <linux/threads.h>
106     #include <asm/irq.h>
107    
108     +/* number of IPIS _not_ including IPI_CPU_BACKTRACE */
109     #define NR_IPI 7
110    
111     typedef struct {
112     diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
113     index 7a5dc011c523..deea60f01d24 100644
114     --- a/arch/arm/kernel/smp.c
115     +++ b/arch/arm/kernel/smp.c
116     @@ -75,6 +75,10 @@ enum ipi_msg_type {
117     IPI_CPU_STOP,
118     IPI_IRQ_WORK,
119     IPI_COMPLETION,
120     + /*
121     + * CPU_BACKTRACE is special and not included in NR_IPI
122     + * or tracable with trace_ipi_*
123     + */
124     IPI_CPU_BACKTRACE,
125     /*
126     * SGI8-15 can be reserved by secure firmware, and thus may
127     @@ -801,7 +805,7 @@ core_initcall(register_cpufreq_notifier);
128    
129     static void raise_nmi(cpumask_t *mask)
130     {
131     - smp_cross_call(mask, IPI_CPU_BACKTRACE);
132     + __smp_cross_call(mask, IPI_CPU_BACKTRACE);
133     }
134    
135     void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
136     diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c
137     index 81c935ce089b..b406c12077b9 100644
138     --- a/arch/arm/mach-exynos/suspend.c
139     +++ b/arch/arm/mach-exynos/suspend.c
140     @@ -500,8 +500,27 @@ early_wakeup:
141    
142     static void exynos5420_prepare_pm_resume(void)
143     {
144     + unsigned int mpidr, cluster;
145     +
146     + mpidr = read_cpuid_mpidr();
147     + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
148     +
149     if (IS_ENABLED(CONFIG_EXYNOS5420_MCPM))
150     WARN_ON(mcpm_cpu_powered_up());
151     +
152     + if (IS_ENABLED(CONFIG_HW_PERF_EVENTS) && cluster != 0) {
153     + /*
154     + * When system is resumed on the LITTLE/KFC core (cluster 1),
155     + * the DSCR is not properly updated until the power is turned
156     + * on also for the cluster 0. Enable it for a while to
157     + * propagate the SPNIDEN and SPIDEN signals from Secure JTAG
158     + * block and avoid undefined instruction issue on CP14 reset.
159     + */
160     + pmu_raw_writel(S5P_CORE_LOCAL_PWR_EN,
161     + EXYNOS_COMMON_CONFIGURATION(0));
162     + pmu_raw_writel(0,
163     + EXYNOS_COMMON_CONFIGURATION(0));
164     + }
165     }
166    
167     static void exynos5420_pm_resume(void)
168     diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
169     index 0a56898f8410..efd65fc85238 100644
170     --- a/arch/arm64/mm/mmu.c
171     +++ b/arch/arm64/mm/mmu.c
172     @@ -765,13 +765,18 @@ void *__init fixmap_remap_fdt(phys_addr_t dt_phys)
173    
174     int __init arch_ioremap_pud_supported(void)
175     {
176     - /* only 4k granule supports level 1 block mappings */
177     - return IS_ENABLED(CONFIG_ARM64_4K_PAGES);
178     + /*
179     + * Only 4k granule supports level 1 block mappings.
180     + * SW table walks can't handle removal of intermediate entries.
181     + */
182     + return IS_ENABLED(CONFIG_ARM64_4K_PAGES) &&
183     + !IS_ENABLED(CONFIG_ARM64_PTDUMP_DEBUGFS);
184     }
185    
186     int __init arch_ioremap_pmd_supported(void)
187     {
188     - return 1;
189     + /* See arch_ioremap_pud_supported() */
190     + return !IS_ENABLED(CONFIG_ARM64_PTDUMP_DEBUGFS);
191     }
192    
193     int pud_set_huge(pud_t *pud, phys_addr_t phys, pgprot_t prot)
194     diff --git a/arch/ia64/mm/numa.c b/arch/ia64/mm/numa.c
195     index aa19b7ac8222..476c7b4be378 100644
196     --- a/arch/ia64/mm/numa.c
197     +++ b/arch/ia64/mm/numa.c
198     @@ -49,6 +49,7 @@ paddr_to_nid(unsigned long paddr)
199    
200     return (i < num_node_memblks) ? node_memblk[i].nid : (num_node_memblks ? -1 : 0);
201     }
202     +EXPORT_SYMBOL(paddr_to_nid);
203    
204     #if defined(CONFIG_SPARSEMEM) && defined(CONFIG_NUMA)
205     /*
206     diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
207     index 5e12e19940e2..defa553fe823 100644
208     --- a/arch/powerpc/include/asm/kvm_host.h
209     +++ b/arch/powerpc/include/asm/kvm_host.h
210     @@ -271,6 +271,7 @@ struct kvm_arch {
211     #ifdef CONFIG_PPC_BOOK3S_64
212     struct list_head spapr_tce_tables;
213     struct list_head rtas_tokens;
214     + struct mutex rtas_token_lock;
215     DECLARE_BITMAP(enabled_hcalls, MAX_HCALL_OPCODE/4 + 1);
216     #endif
217     #ifdef CONFIG_KVM_MPIC
218     diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
219     index b6952dd23152..73c3c127d858 100644
220     --- a/arch/powerpc/kvm/book3s.c
221     +++ b/arch/powerpc/kvm/book3s.c
222     @@ -811,6 +811,7 @@ int kvmppc_core_init_vm(struct kvm *kvm)
223     #ifdef CONFIG_PPC64
224     INIT_LIST_HEAD_RCU(&kvm->arch.spapr_tce_tables);
225     INIT_LIST_HEAD(&kvm->arch.rtas_tokens);
226     + mutex_init(&kvm->arch.rtas_token_lock);
227     #endif
228    
229     return kvm->arch.kvm_ops->init_vm(kvm);
230     diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
231     index 0a2b247dbc6b..e840f943cd2c 100644
232     --- a/arch/powerpc/kvm/book3s_hv.c
233     +++ b/arch/powerpc/kvm/book3s_hv.c
234     @@ -374,12 +374,7 @@ static void kvmppc_dump_regs(struct kvm_vcpu *vcpu)
235    
236     static struct kvm_vcpu *kvmppc_find_vcpu(struct kvm *kvm, int id)
237     {
238     - struct kvm_vcpu *ret;
239     -
240     - mutex_lock(&kvm->lock);
241     - ret = kvm_get_vcpu_by_id(kvm, id);
242     - mutex_unlock(&kvm->lock);
243     - return ret;
244     + return kvm_get_vcpu_by_id(kvm, id);
245     }
246    
247     static void init_vpa(struct kvm_vcpu *vcpu, struct lppaca *vpa)
248     @@ -1098,7 +1093,6 @@ static void kvmppc_set_lpcr(struct kvm_vcpu *vcpu, u64 new_lpcr,
249     struct kvmppc_vcore *vc = vcpu->arch.vcore;
250     u64 mask;
251    
252     - mutex_lock(&kvm->lock);
253     spin_lock(&vc->lock);
254     /*
255     * If ILE (interrupt little-endian) has changed, update the
256     @@ -1132,7 +1126,6 @@ static void kvmppc_set_lpcr(struct kvm_vcpu *vcpu, u64 new_lpcr,
257     mask &= 0xFFFFFFFF;
258     vc->lpcr = (vc->lpcr & ~mask) | (new_lpcr & mask);
259     spin_unlock(&vc->lock);
260     - mutex_unlock(&kvm->lock);
261     }
262    
263     static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id,
264     diff --git a/arch/powerpc/kvm/book3s_rtas.c b/arch/powerpc/kvm/book3s_rtas.c
265     index ef27fbd5d9c5..b1b2273d1f6d 100644
266     --- a/arch/powerpc/kvm/book3s_rtas.c
267     +++ b/arch/powerpc/kvm/book3s_rtas.c
268     @@ -133,7 +133,7 @@ static int rtas_token_undefine(struct kvm *kvm, char *name)
269     {
270     struct rtas_token_definition *d, *tmp;
271    
272     - lockdep_assert_held(&kvm->lock);
273     + lockdep_assert_held(&kvm->arch.rtas_token_lock);
274    
275     list_for_each_entry_safe(d, tmp, &kvm->arch.rtas_tokens, list) {
276     if (rtas_name_matches(d->handler->name, name)) {
277     @@ -154,7 +154,7 @@ static int rtas_token_define(struct kvm *kvm, char *name, u64 token)
278     bool found;
279     int i;
280    
281     - lockdep_assert_held(&kvm->lock);
282     + lockdep_assert_held(&kvm->arch.rtas_token_lock);
283    
284     list_for_each_entry(d, &kvm->arch.rtas_tokens, list) {
285     if (d->token == token)
286     @@ -193,14 +193,14 @@ int kvm_vm_ioctl_rtas_define_token(struct kvm *kvm, void __user *argp)
287     if (copy_from_user(&args, argp, sizeof(args)))
288     return -EFAULT;
289    
290     - mutex_lock(&kvm->lock);
291     + mutex_lock(&kvm->arch.rtas_token_lock);
292    
293     if (args.token)
294     rc = rtas_token_define(kvm, args.name, args.token);
295     else
296     rc = rtas_token_undefine(kvm, args.name);
297    
298     - mutex_unlock(&kvm->lock);
299     + mutex_unlock(&kvm->arch.rtas_token_lock);
300    
301     return rc;
302     }
303     @@ -232,7 +232,7 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
304     orig_rets = args.rets;
305     args.rets = &args.args[be32_to_cpu(args.nargs)];
306    
307     - mutex_lock(&vcpu->kvm->lock);
308     + mutex_lock(&vcpu->kvm->arch.rtas_token_lock);
309    
310     rc = -ENOENT;
311     list_for_each_entry(d, &vcpu->kvm->arch.rtas_tokens, list) {
312     @@ -243,7 +243,7 @@ int kvmppc_rtas_hcall(struct kvm_vcpu *vcpu)
313     }
314     }
315    
316     - mutex_unlock(&vcpu->kvm->lock);
317     + mutex_unlock(&vcpu->kvm->arch.rtas_token_lock);
318    
319     if (rc == 0) {
320     args.rets = orig_rets;
321     @@ -269,8 +269,6 @@ void kvmppc_rtas_tokens_free(struct kvm *kvm)
322     {
323     struct rtas_token_definition *d, *tmp;
324    
325     - lockdep_assert_held(&kvm->lock);
326     -
327     list_for_each_entry_safe(d, tmp, &kvm->arch.rtas_tokens, list) {
328     list_del(&d->list);
329     kfree(d);
330     diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
331     index 2032ab81b2d7..07f571900676 100644
332     --- a/arch/s390/kvm/kvm-s390.c
333     +++ b/arch/s390/kvm/kvm-s390.c
334     @@ -3288,21 +3288,28 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
335     const struct kvm_memory_slot *new,
336     enum kvm_mr_change change)
337     {
338     - int rc;
339     -
340     - /* If the basics of the memslot do not change, we do not want
341     - * to update the gmap. Every update causes several unnecessary
342     - * segment translation exceptions. This is usually handled just
343     - * fine by the normal fault handler + gmap, but it will also
344     - * cause faults on the prefix page of running guest CPUs.
345     - */
346     - if (old->userspace_addr == mem->userspace_addr &&
347     - old->base_gfn * PAGE_SIZE == mem->guest_phys_addr &&
348     - old->npages * PAGE_SIZE == mem->memory_size)
349     - return;
350     + int rc = 0;
351    
352     - rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr,
353     - mem->guest_phys_addr, mem->memory_size);
354     + switch (change) {
355     + case KVM_MR_DELETE:
356     + rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE,
357     + old->npages * PAGE_SIZE);
358     + break;
359     + case KVM_MR_MOVE:
360     + rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE,
361     + old->npages * PAGE_SIZE);
362     + if (rc)
363     + break;
364     + /* FALLTHROUGH */
365     + case KVM_MR_CREATE:
366     + rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr,
367     + mem->guest_phys_addr, mem->memory_size);
368     + break;
369     + case KVM_MR_FLAGS_ONLY:
370     + break;
371     + default:
372     + WARN(1, "Unknown KVM MR CHANGE: %d\n", change);
373     + }
374     if (rc)
375     pr_warn("failed to commit memory region\n");
376     return;
377     diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
378     index 25c23666d592..040e3efdc9a6 100644
379     --- a/arch/um/kernel/time.c
380     +++ b/arch/um/kernel/time.c
381     @@ -56,7 +56,7 @@ static int itimer_one_shot(struct clock_event_device *evt)
382     static struct clock_event_device timer_clockevent = {
383     .name = "posix-timer",
384     .rating = 250,
385     - .cpumask = cpu_all_mask,
386     + .cpumask = cpu_possible_mask,
387     .features = CLOCK_EVT_FEAT_PERIODIC |
388     CLOCK_EVT_FEAT_ONESHOT,
389     .set_state_shutdown = itimer_shutdown,
390     diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
391     index cb8178a2783a..e98e238d3775 100644
392     --- a/arch/x86/events/intel/core.c
393     +++ b/arch/x86/events/intel/core.c
394     @@ -2867,7 +2867,7 @@ static int intel_pmu_hw_config(struct perf_event *event)
395     return ret;
396    
397     if (event->attr.precise_ip) {
398     - if (!(event->attr.freq || event->attr.wakeup_events)) {
399     + if (!(event->attr.freq || (event->attr.wakeup_events && !event->attr.watermark))) {
400     event->hw.flags |= PERF_X86_EVENT_AUTO_RELOAD;
401     if (!(event->attr.sample_type &
402     ~intel_pmu_free_running_flags(event)))
403     diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
404     index f26e26e4d84f..ad31c01f810f 100644
405     --- a/arch/x86/events/intel/ds.c
406     +++ b/arch/x86/events/intel/ds.c
407     @@ -655,7 +655,7 @@ struct event_constraint intel_core2_pebs_event_constraints[] = {
408     INTEL_FLAGS_UEVENT_CONSTRAINT(0x1fc7, 0x1), /* SIMD_INST_RETURED.ANY */
409     INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED.* */
410     /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
411     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
412     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x01),
413     EVENT_CONSTRAINT_END
414     };
415    
416     @@ -664,7 +664,7 @@ struct event_constraint intel_atom_pebs_event_constraints[] = {
417     INTEL_FLAGS_UEVENT_CONSTRAINT(0x00c5, 0x1), /* MISPREDICTED_BRANCH_RETIRED */
418     INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0x1), /* MEM_LOAD_RETIRED.* */
419     /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
420     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x01),
421     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x01),
422     /* Allow all events as PEBS with no flags */
423     INTEL_ALL_EVENT_CONSTRAINT(0, 0x1),
424     EVENT_CONSTRAINT_END
425     @@ -672,7 +672,7 @@ struct event_constraint intel_atom_pebs_event_constraints[] = {
426    
427     struct event_constraint intel_slm_pebs_event_constraints[] = {
428     /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
429     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x1),
430     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x1),
431     /* Allow all events as PEBS with no flags */
432     INTEL_ALL_EVENT_CONSTRAINT(0, 0x1),
433     EVENT_CONSTRAINT_END
434     @@ -697,7 +697,7 @@ struct event_constraint intel_nehalem_pebs_event_constraints[] = {
435     INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf), /* MEM_LOAD_RETIRED.* */
436     INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf), /* FP_ASSIST.* */
437     /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
438     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
439     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
440     EVENT_CONSTRAINT_END
441     };
442    
443     @@ -714,7 +714,7 @@ struct event_constraint intel_westmere_pebs_event_constraints[] = {
444     INTEL_FLAGS_EVENT_CONSTRAINT(0xcb, 0xf), /* MEM_LOAD_RETIRED.* */
445     INTEL_FLAGS_EVENT_CONSTRAINT(0xf7, 0xf), /* FP_ASSIST.* */
446     /* INST_RETIRED.ANY_P, inv=1, cmask=16 (cycles:p). */
447     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
448     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
449     EVENT_CONSTRAINT_END
450     };
451    
452     @@ -723,7 +723,7 @@ struct event_constraint intel_snb_pebs_event_constraints[] = {
453     INTEL_PLD_CONSTRAINT(0x01cd, 0x8), /* MEM_TRANS_RETIRED.LAT_ABOVE_THR */
454     INTEL_PST_CONSTRAINT(0x02cd, 0x8), /* MEM_TRANS_RETIRED.PRECISE_STORES */
455     /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
456     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
457     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
458     INTEL_EXCLEVT_CONSTRAINT(0xd0, 0xf), /* MEM_UOP_RETIRED.* */
459     INTEL_EXCLEVT_CONSTRAINT(0xd1, 0xf), /* MEM_LOAD_UOPS_RETIRED.* */
460     INTEL_EXCLEVT_CONSTRAINT(0xd2, 0xf), /* MEM_LOAD_UOPS_LLC_HIT_RETIRED.* */
461     @@ -738,9 +738,9 @@ struct event_constraint intel_ivb_pebs_event_constraints[] = {
462     INTEL_PLD_CONSTRAINT(0x01cd, 0x8), /* MEM_TRANS_RETIRED.LAT_ABOVE_THR */
463     INTEL_PST_CONSTRAINT(0x02cd, 0x8), /* MEM_TRANS_RETIRED.PRECISE_STORES */
464     /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
465     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
466     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
467     /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
468     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
469     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
470     INTEL_EXCLEVT_CONSTRAINT(0xd0, 0xf), /* MEM_UOP_RETIRED.* */
471     INTEL_EXCLEVT_CONSTRAINT(0xd1, 0xf), /* MEM_LOAD_UOPS_RETIRED.* */
472     INTEL_EXCLEVT_CONSTRAINT(0xd2, 0xf), /* MEM_LOAD_UOPS_LLC_HIT_RETIRED.* */
473     @@ -754,9 +754,9 @@ struct event_constraint intel_hsw_pebs_event_constraints[] = {
474     INTEL_FLAGS_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PRECDIST */
475     INTEL_PLD_CONSTRAINT(0x01cd, 0xf), /* MEM_TRANS_RETIRED.* */
476     /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
477     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
478     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
479     /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
480     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
481     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
482     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_NA(0x01c2, 0xf), /* UOPS_RETIRED.ALL */
483     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_XLD(0x11d0, 0xf), /* MEM_UOPS_RETIRED.STLB_MISS_LOADS */
484     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_XLD(0x21d0, 0xf), /* MEM_UOPS_RETIRED.LOCK_LOADS */
485     @@ -777,9 +777,9 @@ struct event_constraint intel_bdw_pebs_event_constraints[] = {
486     INTEL_FLAGS_UEVENT_CONSTRAINT(0x01c0, 0x2), /* INST_RETIRED.PRECDIST */
487     INTEL_PLD_CONSTRAINT(0x01cd, 0xf), /* MEM_TRANS_RETIRED.* */
488     /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */
489     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf),
490     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c2, 0xf),
491     /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
492     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
493     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
494     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_NA(0x01c2, 0xf), /* UOPS_RETIRED.ALL */
495     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x11d0, 0xf), /* MEM_UOPS_RETIRED.STLB_MISS_LOADS */
496     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x21d0, 0xf), /* MEM_UOPS_RETIRED.LOCK_LOADS */
497     @@ -800,9 +800,9 @@ struct event_constraint intel_bdw_pebs_event_constraints[] = {
498     struct event_constraint intel_skl_pebs_event_constraints[] = {
499     INTEL_FLAGS_UEVENT_CONSTRAINT(0x1c0, 0x2), /* INST_RETIRED.PREC_DIST */
500     /* INST_RETIRED.PREC_DIST, inv=1, cmask=16 (cycles:ppp). */
501     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c0, 0x2),
502     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108001c0, 0x2),
503     /* INST_RETIRED.TOTAL_CYCLES_PS (inv=1, cmask=16) (cycles:p). */
504     - INTEL_FLAGS_EVENT_CONSTRAINT(0x108000c0, 0x0f),
505     + INTEL_FLAGS_UEVENT_CONSTRAINT(0x108000c0, 0x0f),
506     INTEL_PLD_CONSTRAINT(0x1cd, 0xf), /* MEM_TRANS_RETIRED.* */
507     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x11d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_LOADS */
508     INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x12d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_STORES */
509     diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
510     index be6d0543e626..52a65f14db06 100644
511     --- a/arch/x86/kernel/cpu/amd.c
512     +++ b/arch/x86/kernel/cpu/amd.c
513     @@ -766,8 +766,11 @@ static void init_amd_zn(struct cpuinfo_x86 *c)
514     {
515     set_cpu_cap(c, X86_FEATURE_ZEN);
516    
517     - /* Fix erratum 1076: CPB feature bit not being set in CPUID. */
518     - if (!cpu_has(c, X86_FEATURE_CPB))
519     + /*
520     + * Fix erratum 1076: CPB feature bit not being set in CPUID.
521     + * Always set it, except when running under a hypervisor.
522     + */
523     + if (!cpu_has(c, X86_FEATURE_HYPERVISOR) && !cpu_has(c, X86_FEATURE_CPB))
524     set_cpu_cap(c, X86_FEATURE_CPB);
525     }
526    
527     diff --git a/arch/x86/kvm/pmu_intel.c b/arch/x86/kvm/pmu_intel.c
528     index 5ab4a364348e..2729131fe9bf 100644
529     --- a/arch/x86/kvm/pmu_intel.c
530     +++ b/arch/x86/kvm/pmu_intel.c
531     @@ -235,11 +235,14 @@ static int intel_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
532     }
533     break;
534     default:
535     - if ((pmc = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0)) ||
536     - (pmc = get_fixed_pmc(pmu, msr))) {
537     - if (!msr_info->host_initiated)
538     - data = (s64)(s32)data;
539     - pmc->counter += data - pmc_read_counter(pmc);
540     + if ((pmc = get_gp_pmc(pmu, msr, MSR_IA32_PERFCTR0))) {
541     + if (msr_info->host_initiated)
542     + pmc->counter = data;
543     + else
544     + pmc->counter = (s32)data;
545     + return 0;
546     + } else if ((pmc = get_fixed_pmc(pmu, msr))) {
547     + pmc->counter = data;
548     return 0;
549     } else if ((pmc = get_gp_pmc(pmu, msr, MSR_P6_EVNTSEL0))) {
550     if (data == pmc->eventsel)
551     diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
552     index 9bd115484745..5f0e596b0519 100644
553     --- a/arch/x86/pci/irq.c
554     +++ b/arch/x86/pci/irq.c
555     @@ -1117,6 +1117,8 @@ static struct dmi_system_id __initdata pciirq_dmi_table[] = {
556    
557     void __init pcibios_irq_init(void)
558     {
559     + struct irq_routing_table *rtable = NULL;
560     +
561     DBG(KERN_DEBUG "PCI: IRQ init\n");
562    
563     if (raw_pci_ops == NULL)
564     @@ -1127,8 +1129,10 @@ void __init pcibios_irq_init(void)
565     pirq_table = pirq_find_routing_table();
566    
567     #ifdef CONFIG_PCI_BIOS
568     - if (!pirq_table && (pci_probe & PCI_BIOS_IRQ_SCAN))
569     + if (!pirq_table && (pci_probe & PCI_BIOS_IRQ_SCAN)) {
570     pirq_table = pcibios_get_irq_routing_table();
571     + rtable = pirq_table;
572     + }
573     #endif
574     if (pirq_table) {
575     pirq_peer_trick();
576     @@ -1143,8 +1147,10 @@ void __init pcibios_irq_init(void)
577     * If we're using the I/O APIC, avoid using the PCI IRQ
578     * routing table
579     */
580     - if (io_apic_assign_pci_irqs)
581     + if (io_apic_assign_pci_irqs) {
582     + kfree(rtable);
583     pirq_table = NULL;
584     + }
585     }
586    
587     x86_init.pci.fixup_irqs();
588     diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
589     index 35be49f5791d..da1a987c622a 100644
590     --- a/drivers/ata/libata-core.c
591     +++ b/drivers/ata/libata-core.c
592     @@ -4355,9 +4355,12 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
593     { "ST3320[68]13AS", "SD1[5-9]", ATA_HORKAGE_NONCQ |
594     ATA_HORKAGE_FIRMWARE_WARN },
595    
596     - /* drives which fail FPDMA_AA activation (some may freeze afterwards) */
597     - { "ST1000LM024 HN-M101MBB", "2AR10001", ATA_HORKAGE_BROKEN_FPDMA_AA },
598     - { "ST1000LM024 HN-M101MBB", "2BA30001", ATA_HORKAGE_BROKEN_FPDMA_AA },
599     + /* drives which fail FPDMA_AA activation (some may freeze afterwards)
600     + the ST disks also have LPM issues */
601     + { "ST1000LM024 HN-M101MBB", "2AR10001", ATA_HORKAGE_BROKEN_FPDMA_AA |
602     + ATA_HORKAGE_NOLPM, },
603     + { "ST1000LM024 HN-M101MBB", "2BA30001", ATA_HORKAGE_BROKEN_FPDMA_AA |
604     + ATA_HORKAGE_NOLPM, },
605     { "VB0250EAVER", "HPG7", ATA_HORKAGE_BROKEN_FPDMA_AA },
606    
607     /* Blacklist entries taken from Silicon Image 3124/3132
608     diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
609     index 39af05a589b3..32b130c53ff9 100644
610     --- a/drivers/clk/rockchip/clk-rk3288.c
611     +++ b/drivers/clk/rockchip/clk-rk3288.c
612     @@ -826,6 +826,9 @@ static const int rk3288_saved_cru_reg_ids[] = {
613     RK3288_CLKSEL_CON(10),
614     RK3288_CLKSEL_CON(33),
615     RK3288_CLKSEL_CON(37),
616     +
617     + /* We turn aclk_dmac1 on for suspend; this will restore it */
618     + RK3288_CLKGATE_CON(10),
619     };
620    
621     static u32 rk3288_saved_cru_regs[ARRAY_SIZE(rk3288_saved_cru_reg_ids)];
622     @@ -841,6 +844,14 @@ static int rk3288_clk_suspend(void)
623     readl_relaxed(rk3288_cru_base + reg_id);
624     }
625    
626     + /*
627     + * Going into deep sleep (specifically setting PMU_CLR_DMA in
628     + * RK3288_PMU_PWRMODE_CON1) appears to fail unless
629     + * "aclk_dmac1" is on.
630     + */
631     + writel_relaxed(1 << (12 + 16),
632     + rk3288_cru_base + RK3288_CLKGATE_CON(10));
633     +
634     /*
635     * Switch PLLs other than DPLL (for SDRAM) to slow mode to
636     * avoid crashes on resume. The Mask ROM on the system will
637     diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c
638     index 1953e57505f4..f17a4c7a1781 100644
639     --- a/drivers/dma/idma64.c
640     +++ b/drivers/dma/idma64.c
641     @@ -589,7 +589,7 @@ static int idma64_probe(struct idma64_chip *chip)
642     idma64->dma.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
643     idma64->dma.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
644    
645     - idma64->dma.dev = chip->dev;
646     + idma64->dma.dev = chip->sysdev;
647    
648     dma_set_max_seg_size(idma64->dma.dev, IDMA64C_CTLH_BLOCK_TS_MASK);
649    
650     @@ -629,6 +629,7 @@ static int idma64_platform_probe(struct platform_device *pdev)
651     {
652     struct idma64_chip *chip;
653     struct device *dev = &pdev->dev;
654     + struct device *sysdev = dev->parent;
655     struct resource *mem;
656     int ret;
657    
658     @@ -645,11 +646,12 @@ static int idma64_platform_probe(struct platform_device *pdev)
659     if (IS_ERR(chip->regs))
660     return PTR_ERR(chip->regs);
661    
662     - ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
663     + ret = dma_coerce_mask_and_coherent(sysdev, DMA_BIT_MASK(64));
664     if (ret)
665     return ret;
666    
667     chip->dev = dev;
668     + chip->sysdev = sysdev;
669    
670     ret = idma64_probe(chip);
671     if (ret)
672     diff --git a/drivers/dma/idma64.h b/drivers/dma/idma64.h
673     index 6b816878e5e7..baa32e1425de 100644
674     --- a/drivers/dma/idma64.h
675     +++ b/drivers/dma/idma64.h
676     @@ -216,12 +216,14 @@ static inline void idma64_writel(struct idma64 *idma64, int offset, u32 value)
677     /**
678     * struct idma64_chip - representation of iDMA 64-bit controller hardware
679     * @dev: struct device of the DMA controller
680     + * @sysdev: struct device of the physical device that does DMA
681     * @irq: irq line
682     * @regs: memory mapped I/O space
683     * @idma64: struct idma64 that is filed by idma64_probe()
684     */
685     struct idma64_chip {
686     struct device *dev;
687     + struct device *sysdev;
688     int irq;
689     void __iomem *regs;
690     struct idma64 *idma64;
691     diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
692     index 12d417a4d4a8..b992badb99dd 100644
693     --- a/drivers/gpio/Kconfig
694     +++ b/drivers/gpio/Kconfig
695     @@ -670,6 +670,7 @@ config GPIO_ADP5588
696     config GPIO_ADP5588_IRQ
697     bool "Interrupt controller support for ADP5588"
698     depends on GPIO_ADP5588=y
699     + select GPIOLIB_IRQCHIP
700     help
701     Say yes here to enable the adp5588 to be used as an interrupt
702     controller. It requires the driver to be built in the kernel.
703     diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
704     index 75f30a0c418a..038882183bdf 100644
705     --- a/drivers/gpio/gpio-omap.c
706     +++ b/drivers/gpio/gpio-omap.c
707     @@ -296,6 +296,22 @@ static void omap_clear_gpio_debounce(struct gpio_bank *bank, unsigned offset)
708     }
709     }
710    
711     +/*
712     + * Off mode wake-up capable GPIOs in bank(s) that are in the wakeup domain.
713     + * See TRM section for GPIO for "Wake-Up Generation" for the list of GPIOs
714     + * in wakeup domain. If bank->non_wakeup_gpios is not configured, assume none
715     + * are capable waking up the system from off mode.
716     + */
717     +static bool omap_gpio_is_off_wakeup_capable(struct gpio_bank *bank, u32 gpio_mask)
718     +{
719     + u32 no_wake = bank->non_wakeup_gpios;
720     +
721     + if (no_wake)
722     + return !!(~no_wake & gpio_mask);
723     +
724     + return false;
725     +}
726     +
727     static inline void omap_set_gpio_trigger(struct gpio_bank *bank, int gpio,
728     unsigned trigger)
729     {
730     @@ -327,13 +343,7 @@ static inline void omap_set_gpio_trigger(struct gpio_bank *bank, int gpio,
731     }
732    
733     /* This part needs to be executed always for OMAP{34xx, 44xx} */
734     - if (!bank->regs->irqctrl) {
735     - /* On omap24xx proceed only when valid GPIO bit is set */
736     - if (bank->non_wakeup_gpios) {
737     - if (!(bank->non_wakeup_gpios & gpio_bit))
738     - goto exit;
739     - }
740     -
741     + if (!bank->regs->irqctrl && !omap_gpio_is_off_wakeup_capable(bank, gpio)) {
742     /*
743     * Log the edge gpio and manually trigger the IRQ
744     * after resume if the input level changes
745     @@ -346,7 +356,6 @@ static inline void omap_set_gpio_trigger(struct gpio_bank *bank, int gpio,
746     bank->enabled_non_wakeup_gpios &= ~gpio_bit;
747     }
748    
749     -exit:
750     bank->level_mask =
751     readl_relaxed(bank->base + bank->regs->leveldetect0) |
752     readl_relaxed(bank->base + bank->regs->leveldetect1);
753     diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
754     index 32ab5c32834b..1b2fae915ecc 100644
755     --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
756     +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
757     @@ -735,11 +735,11 @@ static void adv7511_mode_set(struct adv7511 *adv7511,
758     vsync_polarity = 1;
759     }
760    
761     - if (mode->vrefresh <= 24000)
762     + if (drm_mode_vrefresh(mode) <= 24)
763     low_refresh_rate = ADV7511_LOW_REFRESH_RATE_24HZ;
764     - else if (mode->vrefresh <= 25000)
765     + else if (drm_mode_vrefresh(mode) <= 25)
766     low_refresh_rate = ADV7511_LOW_REFRESH_RATE_25HZ;
767     - else if (mode->vrefresh <= 30000)
768     + else if (drm_mode_vrefresh(mode) <= 30)
769     low_refresh_rate = ADV7511_LOW_REFRESH_RATE_30HZ;
770     else
771     low_refresh_rate = ADV7511_LOW_REFRESH_RATE_NONE;
772     diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
773     index 9fe8eda7c859..40c1e89ed361 100644
774     --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
775     +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
776     @@ -2493,7 +2493,8 @@ static int vmw_cmd_dx_set_shader(struct vmw_private *dev_priv,
777    
778     cmd = container_of(header, typeof(*cmd), header);
779    
780     - if (cmd->body.type >= SVGA3D_SHADERTYPE_DX10_MAX) {
781     + if (cmd->body.type >= SVGA3D_SHADERTYPE_DX10_MAX ||
782     + cmd->body.type < SVGA3D_SHADERTYPE_MIN) {
783     DRM_ERROR("Illegal shader type %u.\n",
784     (unsigned) cmd->body.type);
785     return -EINVAL;
786     @@ -2732,6 +2733,10 @@ static int vmw_cmd_dx_view_define(struct vmw_private *dev_priv,
787     if (view_type == vmw_view_max)
788     return -EINVAL;
789     cmd = container_of(header, typeof(*cmd), header);
790     + if (unlikely(cmd->sid == SVGA3D_INVALID_ID)) {
791     + DRM_ERROR("Invalid surface id.\n");
792     + return -EINVAL;
793     + }
794     ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface,
795     user_surface_converter,
796     &cmd->sid, &srf_node);
797     diff --git a/drivers/i2c/busses/i2c-acorn.c b/drivers/i2c/busses/i2c-acorn.c
798     index 9d7be5af2bf2..6618db75fa25 100644
799     --- a/drivers/i2c/busses/i2c-acorn.c
800     +++ b/drivers/i2c/busses/i2c-acorn.c
801     @@ -83,6 +83,7 @@ static struct i2c_algo_bit_data ioc_data = {
802    
803     static struct i2c_adapter ioc_ops = {
804     .nr = 0,
805     + .name = "ioc",
806     .algo_data = &ioc_data,
807     };
808    
809     diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
810     index 00e8e675cbeb..eaa312bc3a3c 100644
811     --- a/drivers/i2c/i2c-dev.c
812     +++ b/drivers/i2c/i2c-dev.c
813     @@ -297,6 +297,7 @@ static noinline int i2cdev_ioctl_rdwr(struct i2c_client *client,
814     rdwr_pa[i].buf[0] < 1 ||
815     rdwr_pa[i].len < rdwr_pa[i].buf[0] +
816     I2C_SMBUS_BLOCK_MAX) {
817     + i++;
818     res = -EINVAL;
819     break;
820     }
821     diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
822     index 28feb1744710..25cc6ae87039 100644
823     --- a/drivers/iommu/intel-iommu.c
824     +++ b/drivers/iommu/intel-iommu.c
825     @@ -4119,9 +4119,7 @@ static void __init init_no_remapping_devices(void)
826    
827     /* This IOMMU has *only* gfx devices. Either bypass it or
828     set the gfx_mapped flag, as appropriate */
829     - if (dmar_map_gfx) {
830     - intel_iommu_gfx_mapped = 1;
831     - } else {
832     + if (!dmar_map_gfx) {
833     drhd->ignored = 1;
834     for_each_active_dev_scope(drhd->devices,
835     drhd->devices_cnt, i, dev)
836     @@ -4870,6 +4868,9 @@ int __init intel_iommu_init(void)
837     goto out_free_reserved_range;
838     }
839    
840     + if (dmar_map_gfx)
841     + intel_iommu_gfx_mapped = 1;
842     +
843     init_no_remapping_devices();
844    
845     ret = init_dmars();
846     diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c
847     index f96b8f2bdf74..d7c986fb0b3b 100644
848     --- a/drivers/isdn/mISDN/socket.c
849     +++ b/drivers/isdn/mISDN/socket.c
850     @@ -394,7 +394,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
851     memcpy(di.channelmap, dev->channelmap,
852     sizeof(di.channelmap));
853     di.nrbchan = dev->nrbchan;
854     - strcpy(di.name, dev_name(&dev->dev));
855     + strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
856     if (copy_to_user((void __user *)arg, &di, sizeof(di)))
857     err = -EFAULT;
858     } else
859     @@ -678,7 +678,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
860     memcpy(di.channelmap, dev->channelmap,
861     sizeof(di.channelmap));
862     di.nrbchan = dev->nrbchan;
863     - strcpy(di.name, dev_name(&dev->dev));
864     + strscpy(di.name, dev_name(&dev->dev), sizeof(di.name));
865     if (copy_to_user((void __user *)arg, &di, sizeof(di)))
866     err = -EFAULT;
867     } else
868     @@ -692,6 +692,7 @@ base_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
869     err = -EFAULT;
870     break;
871     }
872     + dn.name[sizeof(dn.name) - 1] = '\0';
873     dev = get_mdevice(dn.id);
874     if (dev)
875     err = device_rename(&dev->dev, dn.name);
876     diff --git a/drivers/md/bcache/bset.c b/drivers/md/bcache/bset.c
877     index 646fe85261c1..158eae17031c 100644
878     --- a/drivers/md/bcache/bset.c
879     +++ b/drivers/md/bcache/bset.c
880     @@ -823,12 +823,22 @@ unsigned bch_btree_insert_key(struct btree_keys *b, struct bkey *k,
881     struct bset *i = bset_tree_last(b)->data;
882     struct bkey *m, *prev = NULL;
883     struct btree_iter iter;
884     + struct bkey preceding_key_on_stack = ZERO_KEY;
885     + struct bkey *preceding_key_p = &preceding_key_on_stack;
886    
887     BUG_ON(b->ops->is_extents && !KEY_SIZE(k));
888    
889     - m = bch_btree_iter_init(b, &iter, b->ops->is_extents
890     - ? PRECEDING_KEY(&START_KEY(k))
891     - : PRECEDING_KEY(k));
892     + /*
893     + * If k has preceding key, preceding_key_p will be set to address
894     + * of k's preceding key; otherwise preceding_key_p will be set
895     + * to NULL inside preceding_key().
896     + */
897     + if (b->ops->is_extents)
898     + preceding_key(&START_KEY(k), &preceding_key_p);
899     + else
900     + preceding_key(k, &preceding_key_p);
901     +
902     + m = bch_btree_iter_init(b, &iter, preceding_key_p);
903    
904     if (b->ops->insert_fixup(b, k, &iter, replace_key))
905     return status;
906     diff --git a/drivers/md/bcache/bset.h b/drivers/md/bcache/bset.h
907     index ae964624efb2..b935839ab79c 100644
908     --- a/drivers/md/bcache/bset.h
909     +++ b/drivers/md/bcache/bset.h
910     @@ -417,20 +417,26 @@ static inline bool bch_cut_back(const struct bkey *where, struct bkey *k)
911     return __bch_cut_back(where, k);
912     }
913    
914     -#define PRECEDING_KEY(_k) \
915     -({ \
916     - struct bkey *_ret = NULL; \
917     - \
918     - if (KEY_INODE(_k) || KEY_OFFSET(_k)) { \
919     - _ret = &KEY(KEY_INODE(_k), KEY_OFFSET(_k), 0); \
920     - \
921     - if (!_ret->low) \
922     - _ret->high--; \
923     - _ret->low--; \
924     - } \
925     - \
926     - _ret; \
927     -})
928     +/*
929     + * Pointer '*preceding_key_p' points to a memory object to store preceding
930     + * key of k. If the preceding key does not exist, set '*preceding_key_p' to
931     + * NULL. So the caller of preceding_key() needs to take care of memory
932     + * which '*preceding_key_p' pointed to before calling preceding_key().
933     + * Currently the only caller of preceding_key() is bch_btree_insert_key(),
934     + * and it points to an on-stack variable, so the memory release is handled
935     + * by stackframe itself.
936     + */
937     +static inline void preceding_key(struct bkey *k, struct bkey **preceding_key_p)
938     +{
939     + if (KEY_INODE(k) || KEY_OFFSET(k)) {
940     + (**preceding_key_p) = KEY(KEY_INODE(k), KEY_OFFSET(k), 0);
941     + if (!(*preceding_key_p)->low)
942     + (*preceding_key_p)->high--;
943     + (*preceding_key_p)->low--;
944     + } else {
945     + (*preceding_key_p) = NULL;
946     + }
947     +}
948    
949     static inline bool bch_ptr_invalid(struct btree_keys *b, const struct bkey *k)
950     {
951     diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
952     index 4510e8a37244..699e5f8e0a71 100644
953     --- a/drivers/media/v4l2-core/v4l2-ioctl.c
954     +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
955     @@ -1959,7 +1959,22 @@ static int v4l_s_parm(const struct v4l2_ioctl_ops *ops,
956     struct v4l2_streamparm *p = arg;
957     int ret = check_fmt(file, p->type);
958    
959     - return ret ? ret : ops->vidioc_s_parm(file, fh, p);
960     + if (ret)
961     + return ret;
962     +
963     + /* Note: extendedmode is never used in drivers */
964     + if (V4L2_TYPE_IS_OUTPUT(p->type)) {
965     + memset(p->parm.output.reserved, 0,
966     + sizeof(p->parm.output.reserved));
967     + p->parm.output.extendedmode = 0;
968     + p->parm.output.outputmode &= V4L2_MODE_HIGHQUALITY;
969     + } else {
970     + memset(p->parm.capture.reserved, 0,
971     + sizeof(p->parm.capture.reserved));
972     + p->parm.capture.extendedmode = 0;
973     + p->parm.capture.capturemode &= V4L2_MODE_HIGHQUALITY;
974     + }
975     + return ops->vidioc_s_parm(file, fh, p);
976     }
977    
978     static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops,
979     diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
980     index 19ac8bc8e7ea..22dd8c055048 100644
981     --- a/drivers/mfd/intel-lpss.c
982     +++ b/drivers/mfd/intel-lpss.c
983     @@ -273,6 +273,9 @@ static void intel_lpss_init_dev(const struct intel_lpss *lpss)
984     {
985     u32 value = LPSS_PRIV_SSP_REG_DIS_DMA_FIN;
986    
987     + /* Set the device in reset state */
988     + writel(0, lpss->priv + LPSS_PRIV_RESETS);
989     +
990     intel_lpss_deassert_reset(lpss);
991    
992     intel_lpss_set_remap_addr(lpss);
993     diff --git a/drivers/mfd/tps65912-spi.c b/drivers/mfd/tps65912-spi.c
994     index 4aeba9b6942a..ec37cfe32ca3 100644
995     --- a/drivers/mfd/tps65912-spi.c
996     +++ b/drivers/mfd/tps65912-spi.c
997     @@ -27,6 +27,7 @@ static const struct of_device_id tps65912_spi_of_match_table[] = {
998     { .compatible = "ti,tps65912", },
999     { /* sentinel */ }
1000     };
1001     +MODULE_DEVICE_TABLE(of, tps65912_spi_of_match_table);
1002    
1003     static int tps65912_spi_probe(struct spi_device *spi)
1004     {
1005     diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c
1006     index dd19f17a1b63..2b8c479dbfa6 100644
1007     --- a/drivers/mfd/twl6040.c
1008     +++ b/drivers/mfd/twl6040.c
1009     @@ -322,8 +322,19 @@ int twl6040_power(struct twl6040 *twl6040, int on)
1010     }
1011     }
1012    
1013     + /*
1014     + * Register access can produce errors after power-up unless we
1015     + * wait at least 8ms based on measurements on duovero.
1016     + */
1017     + usleep_range(10000, 12000);
1018     +
1019     /* Sync with the HW */
1020     - regcache_sync(twl6040->regmap);
1021     + ret = regcache_sync(twl6040->regmap);
1022     + if (ret) {
1023     + dev_err(twl6040->dev, "Failed to sync with the HW: %i\n",
1024     + ret);
1025     + goto out;
1026     + }
1027    
1028     /* Default PLL configuration after power up */
1029     twl6040->pll = TWL6040_SYSCLK_SEL_LPPLL;
1030     diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
1031     index 99635dd9dbac..bb3a76ad80da 100644
1032     --- a/drivers/misc/kgdbts.c
1033     +++ b/drivers/misc/kgdbts.c
1034     @@ -1132,7 +1132,7 @@ static void kgdbts_put_char(u8 chr)
1035    
1036     static int param_set_kgdbts_var(const char *kmessage, struct kernel_param *kp)
1037     {
1038     - int len = strlen(kmessage);
1039     + size_t len = strlen(kmessage);
1040    
1041     if (len >= MAX_CONFIG_LEN) {
1042     printk(KERN_ERR "kgdbts: config string too long\n");
1043     @@ -1152,7 +1152,7 @@ static int param_set_kgdbts_var(const char *kmessage, struct kernel_param *kp)
1044    
1045     strcpy(config, kmessage);
1046     /* Chop out \n char as a result of echo */
1047     - if (config[len - 1] == '\n')
1048     + if (len && config[len - 1] == '\n')
1049     config[len - 1] = '\0';
1050    
1051     /* Go and configure with the new params. */
1052     diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
1053     index 6620fc861c47..005c79b5b3f0 100644
1054     --- a/drivers/net/ethernet/dec/tulip/de4x5.c
1055     +++ b/drivers/net/ethernet/dec/tulip/de4x5.c
1056     @@ -2109,7 +2109,6 @@ static struct eisa_driver de4x5_eisa_driver = {
1057     .remove = de4x5_eisa_remove,
1058     }
1059     };
1060     -MODULE_DEVICE_TABLE(eisa, de4x5_eisa_ids);
1061     #endif
1062    
1063     #ifdef CONFIG_PCI
1064     diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
1065     index 0a48a31225e6..345818193de9 100644
1066     --- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
1067     +++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
1068     @@ -1108,7 +1108,7 @@ static int be_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd,
1069     cmd->data = be_get_rss_hash_opts(adapter, cmd->flow_type);
1070     break;
1071     case ETHTOOL_GRXRINGS:
1072     - cmd->data = adapter->num_rx_qs - 1;
1073     + cmd->data = adapter->num_rx_qs;
1074     break;
1075     default:
1076     return -EINVAL;
1077     diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1078     index e3ed70a24029..585a40cc6470 100644
1079     --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1080     +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
1081     @@ -2044,6 +2044,10 @@ mlxsw_sp_port_set_link_ksettings(struct net_device *dev,
1082     mlxsw_reg_ptys_unpack(ptys_pl, &eth_proto_cap, NULL, NULL);
1083    
1084     autoneg = cmd->base.autoneg == AUTONEG_ENABLE;
1085     + if (!autoneg && cmd->base.speed == SPEED_56000) {
1086     + netdev_err(dev, "56G not supported with autoneg off\n");
1087     + return -EINVAL;
1088     + }
1089     eth_proto_new = autoneg ?
1090     mlxsw_sp_to_ptys_advert_link(cmd) :
1091     mlxsw_sp_to_ptys_speed(cmd->base.speed);
1092     diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
1093     index c59e8fe37069..49300194d3f9 100644
1094     --- a/drivers/net/ethernet/renesas/sh_eth.c
1095     +++ b/drivers/net/ethernet/renesas/sh_eth.c
1096     @@ -1388,6 +1388,10 @@ static void sh_eth_dev_exit(struct net_device *ndev)
1097     sh_eth_get_stats(ndev);
1098     sh_eth_reset(ndev);
1099    
1100     + /* Set the RMII mode again if required */
1101     + if (mdp->cd->rmiimode)
1102     + sh_eth_write(ndev, 0x1, RMIIMODE);
1103     +
1104     /* Set MAC address again */
1105     update_mac_address(ndev);
1106     }
1107     diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
1108     index 01f95d192d25..2b16a5fed9de 100644
1109     --- a/drivers/net/usb/ipheth.c
1110     +++ b/drivers/net/usb/ipheth.c
1111     @@ -437,17 +437,18 @@ static int ipheth_tx(struct sk_buff *skb, struct net_device *net)
1112     dev);
1113     dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
1114    
1115     + netif_stop_queue(net);
1116     retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC);
1117     if (retval) {
1118     dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
1119     __func__, retval);
1120     dev->net->stats.tx_errors++;
1121     dev_kfree_skb_any(skb);
1122     + netif_wake_queue(net);
1123     } else {
1124     dev->net->stats.tx_packets++;
1125     dev->net->stats.tx_bytes += skb->len;
1126     dev_consume_skb_any(skb);
1127     - netif_stop_queue(net);
1128     }
1129    
1130     return NETDEV_TX_OK;
1131     diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
1132     index 824e282cd80e..bb2f79933b17 100644
1133     --- a/drivers/nvmem/core.c
1134     +++ b/drivers/nvmem/core.c
1135     @@ -934,7 +934,7 @@ static inline void nvmem_shift_read_buffer_in_place(struct nvmem_cell *cell,
1136     void *buf)
1137     {
1138     u8 *p, *b;
1139     - int i, bit_offset = cell->bit_offset;
1140     + int i, extra, bit_offset = cell->bit_offset;
1141    
1142     p = b = buf;
1143     if (bit_offset) {
1144     @@ -949,11 +949,16 @@ static inline void nvmem_shift_read_buffer_in_place(struct nvmem_cell *cell,
1145     p = b;
1146     *b++ >>= bit_offset;
1147     }
1148     -
1149     - /* result fits in less bytes */
1150     - if (cell->bytes != DIV_ROUND_UP(cell->nbits, BITS_PER_BYTE))
1151     - *p-- = 0;
1152     + } else {
1153     + /* point to the msb */
1154     + p += cell->bytes - 1;
1155     }
1156     +
1157     + /* result fits in less bytes */
1158     + extra = cell->bytes - DIV_ROUND_UP(cell->nbits, BITS_PER_BYTE);
1159     + while (--extra >= 0)
1160     + *p-- = 0;
1161     +
1162     /* clear msb bits if any leftover in the last byte */
1163     *p &= GENMASK((cell->nbits%BITS_PER_BYTE) - 1, 0);
1164     }
1165     diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
1166     index d6196f7b1d58..7f6b454bca65 100644
1167     --- a/drivers/pci/host/pcie-rcar.c
1168     +++ b/drivers/pci/host/pcie-rcar.c
1169     @@ -847,7 +847,7 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie)
1170     {
1171     struct device *dev = pcie->dev;
1172     struct rcar_msi *msi = &pcie->msi;
1173     - unsigned long base;
1174     + phys_addr_t base;
1175     int err, i;
1176    
1177     mutex_init(&msi->lock);
1178     @@ -886,10 +886,14 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie)
1179    
1180     /* setup MSI data target */
1181     msi->pages = __get_free_pages(GFP_KERNEL, 0);
1182     + if (!msi->pages) {
1183     + err = -ENOMEM;
1184     + goto err;
1185     + }
1186     base = virt_to_phys((void *)msi->pages);
1187    
1188     - rcar_pci_write_reg(pcie, base | MSIFE, PCIEMSIALR);
1189     - rcar_pci_write_reg(pcie, 0, PCIEMSIAUR);
1190     + rcar_pci_write_reg(pcie, lower_32_bits(base) | MSIFE, PCIEMSIALR);
1191     + rcar_pci_write_reg(pcie, upper_32_bits(base), PCIEMSIAUR);
1192    
1193     /* enable all MSI interrupts */
1194     rcar_pci_write_reg(pcie, 0xffffffff, PCIEMSIIER);
1195     diff --git a/drivers/pci/host/pcie-xilinx.c b/drivers/pci/host/pcie-xilinx.c
1196     index 61332f4d51c3..c3964fca57b0 100644
1197     --- a/drivers/pci/host/pcie-xilinx.c
1198     +++ b/drivers/pci/host/pcie-xilinx.c
1199     @@ -337,14 +337,19 @@ static const struct irq_domain_ops msi_domain_ops = {
1200     * xilinx_pcie_enable_msi - Enable MSI support
1201     * @port: PCIe port information
1202     */
1203     -static void xilinx_pcie_enable_msi(struct xilinx_pcie_port *port)
1204     +static int xilinx_pcie_enable_msi(struct xilinx_pcie_port *port)
1205     {
1206     phys_addr_t msg_addr;
1207    
1208     port->msi_pages = __get_free_pages(GFP_KERNEL, 0);
1209     + if (!port->msi_pages)
1210     + return -ENOMEM;
1211     +
1212     msg_addr = virt_to_phys((void *)port->msi_pages);
1213     pcie_write(port, 0x0, XILINX_PCIE_REG_MSIBASE1);
1214     pcie_write(port, msg_addr, XILINX_PCIE_REG_MSIBASE2);
1215     +
1216     + return 0;
1217     }
1218    
1219     /* INTx Functions */
1220     @@ -516,6 +521,7 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port)
1221     struct device *dev = port->dev;
1222     struct device_node *node = dev->of_node;
1223     struct device_node *pcie_intc_node;
1224     + int ret;
1225    
1226     /* Setup INTx */
1227     pcie_intc_node = of_get_next_child(node, NULL);
1228     @@ -544,7 +550,9 @@ static int xilinx_pcie_init_irq_domain(struct xilinx_pcie_port *port)
1229     return -ENODEV;
1230     }
1231    
1232     - xilinx_pcie_enable_msi(port);
1233     + ret = xilinx_pcie_enable_msi(port);
1234     + if (ret)
1235     + return ret;
1236     }
1237    
1238     return 0;
1239     diff --git a/drivers/pci/hotplug/rpadlpar_core.c b/drivers/pci/hotplug/rpadlpar_core.c
1240     index c614ff7c3bc3..d3562df64456 100644
1241     --- a/drivers/pci/hotplug/rpadlpar_core.c
1242     +++ b/drivers/pci/hotplug/rpadlpar_core.c
1243     @@ -55,6 +55,7 @@ static struct device_node *find_vio_slot_node(char *drc_name)
1244     if ((rc == 0) && (!strcmp(drc_name, name)))
1245     break;
1246     }
1247     + of_node_put(parent);
1248    
1249     return dn;
1250     }
1251     @@ -78,6 +79,7 @@ static struct device_node *find_php_slot_pci_node(char *drc_name,
1252     return np;
1253     }
1254    
1255     +/* Returns a device_node with its reference count incremented */
1256     static struct device_node *find_dlpar_node(char *drc_name, int *node_type)
1257     {
1258     struct device_node *dn;
1259     @@ -313,6 +315,7 @@ int dlpar_add_slot(char *drc_name)
1260     rc = dlpar_add_phb(drc_name, dn);
1261     break;
1262     }
1263     + of_node_put(dn);
1264    
1265     printk(KERN_INFO "%s: slot %s added\n", DLPAR_MODULE_NAME, drc_name);
1266     exit:
1267     @@ -446,6 +449,7 @@ int dlpar_remove_slot(char *drc_name)
1268     rc = dlpar_remove_pci_slot(drc_name, dn);
1269     break;
1270     }
1271     + of_node_put(dn);
1272     vm_unmap_aliases();
1273    
1274     printk(KERN_INFO "%s: slot %s removed\n", DLPAR_MODULE_NAME, drc_name);
1275     diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
1276     index cfa3e850c49f..d225a835a64c 100644
1277     --- a/drivers/platform/chrome/cros_ec_proto.c
1278     +++ b/drivers/platform/chrome/cros_ec_proto.c
1279     @@ -67,6 +67,17 @@ static int send_command(struct cros_ec_device *ec_dev,
1280     else
1281     xfer_fxn = ec_dev->cmd_xfer;
1282    
1283     + if (!xfer_fxn) {
1284     + /*
1285     + * This error can happen if a communication error happened and
1286     + * the EC is trying to use protocol v2, on an underlying
1287     + * communication mechanism that does not support v2.
1288     + */
1289     + dev_err_once(ec_dev->dev,
1290     + "missing EC transfer API, cannot send command\n");
1291     + return -EIO;
1292     + }
1293     +
1294     ret = (*xfer_fxn)(ec_dev, msg);
1295     if (msg->result == EC_RES_IN_PROGRESS) {
1296     int i;
1297     diff --git a/drivers/platform/x86/intel_pmc_ipc.c b/drivers/platform/x86/intel_pmc_ipc.c
1298     index 0bf51d574fa9..f2b9dd82128f 100644
1299     --- a/drivers/platform/x86/intel_pmc_ipc.c
1300     +++ b/drivers/platform/x86/intel_pmc_ipc.c
1301     @@ -620,13 +620,17 @@ static int ipc_create_pmc_devices(void)
1302     if (ret) {
1303     dev_err(ipcdev.dev, "Failed to add punit platform device\n");
1304     platform_device_unregister(ipcdev.tco_dev);
1305     + return ret;
1306     }
1307    
1308     if (!ipcdev.telem_res_inval) {
1309     ret = ipc_create_telemetry_device();
1310     - if (ret)
1311     + if (ret) {
1312     dev_warn(ipcdev.dev,
1313     "Failed to add telemetry platform device\n");
1314     + platform_device_unregister(ipcdev.punit_dev);
1315     + platform_device_unregister(ipcdev.tco_dev);
1316     + }
1317     }
1318    
1319     return ret;
1320     diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c
1321     index 172ef8245811..a19246455c13 100644
1322     --- a/drivers/pwm/core.c
1323     +++ b/drivers/pwm/core.c
1324     @@ -302,10 +302,12 @@ int pwmchip_add_with_polarity(struct pwm_chip *chip,
1325     if (IS_ENABLED(CONFIG_OF))
1326     of_pwmchip_add(chip);
1327    
1328     - pwmchip_sysfs_export(chip);
1329     -
1330     out:
1331     mutex_unlock(&pwm_lock);
1332     +
1333     + if (!ret)
1334     + pwmchip_sysfs_export(chip);
1335     +
1336     return ret;
1337     }
1338     EXPORT_SYMBOL_GPL(pwmchip_add_with_polarity);
1339     @@ -339,7 +341,7 @@ int pwmchip_remove(struct pwm_chip *chip)
1340     unsigned int i;
1341     int ret = 0;
1342    
1343     - pwmchip_sysfs_unexport_children(chip);
1344     + pwmchip_sysfs_unexport(chip);
1345    
1346     mutex_lock(&pwm_lock);
1347    
1348     @@ -359,8 +361,6 @@ int pwmchip_remove(struct pwm_chip *chip)
1349    
1350     free_pwms(chip);
1351    
1352     - pwmchip_sysfs_unexport(chip);
1353     -
1354     out:
1355     mutex_unlock(&pwm_lock);
1356     return ret;
1357     diff --git a/drivers/pwm/pwm-meson.c b/drivers/pwm/pwm-meson.c
1358     index 9d5bd7d5c610..f58a4867b519 100644
1359     --- a/drivers/pwm/pwm-meson.c
1360     +++ b/drivers/pwm/pwm-meson.c
1361     @@ -110,6 +110,10 @@ struct meson_pwm {
1362     const struct meson_pwm_data *data;
1363     void __iomem *base;
1364     u8 inverter_mask;
1365     + /*
1366     + * Protects register (write) access to the REG_MISC_AB register
1367     + * that is shared between the two PWMs.
1368     + */
1369     spinlock_t lock;
1370     };
1371    
1372     @@ -230,6 +234,7 @@ static void meson_pwm_enable(struct meson_pwm *meson,
1373     {
1374     u32 value, clk_shift, clk_enable, enable;
1375     unsigned int offset;
1376     + unsigned long flags;
1377    
1378     switch (id) {
1379     case 0:
1380     @@ -250,6 +255,8 @@ static void meson_pwm_enable(struct meson_pwm *meson,
1381     return;
1382     }
1383    
1384     + spin_lock_irqsave(&meson->lock, flags);
1385     +
1386     value = readl(meson->base + REG_MISC_AB);
1387     value &= ~(MISC_CLK_DIV_MASK << clk_shift);
1388     value |= channel->pre_div << clk_shift;
1389     @@ -262,11 +269,14 @@ static void meson_pwm_enable(struct meson_pwm *meson,
1390     value = readl(meson->base + REG_MISC_AB);
1391     value |= enable;
1392     writel(value, meson->base + REG_MISC_AB);
1393     +
1394     + spin_unlock_irqrestore(&meson->lock, flags);
1395     }
1396    
1397     static void meson_pwm_disable(struct meson_pwm *meson, unsigned int id)
1398     {
1399     u32 value, enable;
1400     + unsigned long flags;
1401    
1402     switch (id) {
1403     case 0:
1404     @@ -281,9 +291,13 @@ static void meson_pwm_disable(struct meson_pwm *meson, unsigned int id)
1405     return;
1406     }
1407    
1408     + spin_lock_irqsave(&meson->lock, flags);
1409     +
1410     value = readl(meson->base + REG_MISC_AB);
1411     value &= ~enable;
1412     writel(value, meson->base + REG_MISC_AB);
1413     +
1414     + spin_unlock_irqrestore(&meson->lock, flags);
1415     }
1416    
1417     static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
1418     @@ -291,19 +305,16 @@ static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
1419     {
1420     struct meson_pwm_channel *channel = pwm_get_chip_data(pwm);
1421     struct meson_pwm *meson = to_meson_pwm(chip);
1422     - unsigned long flags;
1423     int err = 0;
1424    
1425     if (!state)
1426     return -EINVAL;
1427    
1428     - spin_lock_irqsave(&meson->lock, flags);
1429     -
1430     if (!state->enabled) {
1431     meson_pwm_disable(meson, pwm->hwpwm);
1432     channel->state.enabled = false;
1433    
1434     - goto unlock;
1435     + return 0;
1436     }
1437    
1438     if (state->period != channel->state.period ||
1439     @@ -324,7 +335,7 @@ static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
1440     err = meson_pwm_calc(meson, channel, pwm->hwpwm,
1441     state->duty_cycle, state->period);
1442     if (err < 0)
1443     - goto unlock;
1444     + return err;
1445    
1446     channel->state.polarity = state->polarity;
1447     channel->state.period = state->period;
1448     @@ -336,9 +347,7 @@ static int meson_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
1449     channel->state.enabled = true;
1450     }
1451    
1452     -unlock:
1453     - spin_unlock_irqrestore(&meson->lock, flags);
1454     - return err;
1455     + return 0;
1456     }
1457    
1458     static void meson_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
1459     diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c
1460     index c0e06f0c19d1..9a232ebbbf96 100644
1461     --- a/drivers/pwm/pwm-tiehrpwm.c
1462     +++ b/drivers/pwm/pwm-tiehrpwm.c
1463     @@ -383,6 +383,8 @@ static void ehrpwm_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
1464     }
1465    
1466     /* Update shadow register first before modifying active register */
1467     + ehrpwm_modify(pc->mmio_base, AQSFRC, AQSFRC_RLDCSF_MASK,
1468     + AQSFRC_RLDCSF_ZRO);
1469     ehrpwm_modify(pc->mmio_base, AQCSFRC, aqcsfrc_mask, aqcsfrc_val);
1470     /*
1471     * Changes to immediate action on Action Qualifier. This puts
1472     diff --git a/drivers/pwm/sysfs.c b/drivers/pwm/sysfs.c
1473     index a813239300c3..0850b11dfd83 100644
1474     --- a/drivers/pwm/sysfs.c
1475     +++ b/drivers/pwm/sysfs.c
1476     @@ -397,19 +397,6 @@ void pwmchip_sysfs_export(struct pwm_chip *chip)
1477     }
1478    
1479     void pwmchip_sysfs_unexport(struct pwm_chip *chip)
1480     -{
1481     - struct device *parent;
1482     -
1483     - parent = class_find_device(&pwm_class, NULL, chip,
1484     - pwmchip_sysfs_match);
1485     - if (parent) {
1486     - /* for class_find_device() */
1487     - put_device(parent);
1488     - device_unregister(parent);
1489     - }
1490     -}
1491     -
1492     -void pwmchip_sysfs_unexport_children(struct pwm_chip *chip)
1493     {
1494     struct device *parent;
1495     unsigned int i;
1496     @@ -427,6 +414,7 @@ void pwmchip_sysfs_unexport_children(struct pwm_chip *chip)
1497     }
1498    
1499     put_device(parent);
1500     + device_unregister(parent);
1501     }
1502    
1503     static int __init pwm_sysfs_init(void)
1504     diff --git a/drivers/rapidio/rio_cm.c b/drivers/rapidio/rio_cm.c
1505     index bad0e0ea4f30..ef989a15aefc 100644
1506     --- a/drivers/rapidio/rio_cm.c
1507     +++ b/drivers/rapidio/rio_cm.c
1508     @@ -2145,6 +2145,14 @@ static int riocm_add_mport(struct device *dev,
1509     mutex_init(&cm->rx_lock);
1510     riocm_rx_fill(cm, RIOCM_RX_RING_SIZE);
1511     cm->rx_wq = create_workqueue(DRV_NAME "/rxq");
1512     + if (!cm->rx_wq) {
1513     + riocm_error("failed to allocate IBMBOX_%d on %s",
1514     + cmbox, mport->name);
1515     + rio_release_outb_mbox(mport, cmbox);
1516     + kfree(cm);
1517     + return -ENOMEM;
1518     + }
1519     +
1520     INIT_WORK(&cm->rx_work, rio_ibmsg_handler);
1521    
1522     cm->tx_slot = 0;
1523     diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c
1524     index 28c48b3c1946..3c8c6f942e67 100644
1525     --- a/drivers/rtc/rtc-pcf8523.c
1526     +++ b/drivers/rtc/rtc-pcf8523.c
1527     @@ -82,6 +82,18 @@ static int pcf8523_write(struct i2c_client *client, u8 reg, u8 value)
1528     return 0;
1529     }
1530    
1531     +static int pcf8523_voltage_low(struct i2c_client *client)
1532     +{
1533     + u8 value;
1534     + int err;
1535     +
1536     + err = pcf8523_read(client, REG_CONTROL3, &value);
1537     + if (err < 0)
1538     + return err;
1539     +
1540     + return !!(value & REG_CONTROL3_BLF);
1541     +}
1542     +
1543     static int pcf8523_select_capacitance(struct i2c_client *client, bool high)
1544     {
1545     u8 value;
1546     @@ -164,6 +176,14 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
1547     struct i2c_msg msgs[2];
1548     int err;
1549    
1550     + err = pcf8523_voltage_low(client);
1551     + if (err < 0) {
1552     + return err;
1553     + } else if (err > 0) {
1554     + dev_err(dev, "low voltage detected, time is unreliable\n");
1555     + return -EINVAL;
1556     + }
1557     +
1558     msgs[0].addr = client->addr;
1559     msgs[0].flags = 0;
1560     msgs[0].len = 1;
1561     @@ -248,17 +268,13 @@ static int pcf8523_rtc_ioctl(struct device *dev, unsigned int cmd,
1562     unsigned long arg)
1563     {
1564     struct i2c_client *client = to_i2c_client(dev);
1565     - u8 value;
1566     - int ret = 0, err;
1567     + int ret;
1568    
1569     switch (cmd) {
1570     case RTC_VL_READ:
1571     - err = pcf8523_read(client, REG_CONTROL3, &value);
1572     - if (err < 0)
1573     - return err;
1574     -
1575     - if (value & REG_CONTROL3_BLF)
1576     - ret = 1;
1577     + ret = pcf8523_voltage_low(client);
1578     + if (ret < 0)
1579     + return ret;
1580    
1581     if (copy_to_user((void __user *)arg, &ret, sizeof(int)))
1582     return -EFAULT;
1583     diff --git a/drivers/scsi/bnx2fc/bnx2fc_hwi.c b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
1584     index 5ff9f89c17c7..39b2f60149d9 100644
1585     --- a/drivers/scsi/bnx2fc/bnx2fc_hwi.c
1586     +++ b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
1587     @@ -829,7 +829,7 @@ ret_err_rqe:
1588     ((u64)err_entry->data.err_warn_bitmap_hi << 32) |
1589     (u64)err_entry->data.err_warn_bitmap_lo;
1590     for (i = 0; i < BNX2FC_NUM_ERR_BITS; i++) {
1591     - if (err_warn_bit_map & (u64) (1 << i)) {
1592     + if (err_warn_bit_map & ((u64)1 << i)) {
1593     err_warn = i;
1594     break;
1595     }
1596     diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
1597     index 2ffe029ff2b6..e974106f2bb5 100644
1598     --- a/drivers/scsi/cxgbi/libcxgbi.c
1599     +++ b/drivers/scsi/cxgbi/libcxgbi.c
1600     @@ -637,6 +637,10 @@ static struct cxgbi_sock *cxgbi_check_route(struct sockaddr *dst_addr)
1601    
1602     if (ndev->flags & IFF_LOOPBACK) {
1603     ndev = ip_dev_find(&init_net, daddr->sin_addr.s_addr);
1604     + if (!ndev) {
1605     + err = -ENETUNREACH;
1606     + goto rel_neigh;
1607     + }
1608     mtu = ndev->mtu;
1609     pr_info("rt dev %s, loopback -> %s, mtu %u.\n",
1610     n->dev->name, ndev->name, mtu);
1611     diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
1612     index ee1f9ee995e5..400eee9d7783 100644
1613     --- a/drivers/scsi/libsas/sas_expander.c
1614     +++ b/drivers/scsi/libsas/sas_expander.c
1615     @@ -978,6 +978,8 @@ static struct domain_device *sas_ex_discover_expander(
1616     list_del(&child->dev_list_node);
1617     spin_unlock_irq(&parent->port->dev_list_lock);
1618     sas_put_device(child);
1619     + sas_port_delete(phy->port);
1620     + phy->port = NULL;
1621     return NULL;
1622     }
1623     list_add_tail(&child->siblings, &parent->ex_dev.children);
1624     diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
1625     index 4905455bbfc7..b5be4df05733 100644
1626     --- a/drivers/scsi/lpfc/lpfc_els.c
1627     +++ b/drivers/scsi/lpfc/lpfc_els.c
1628     @@ -6789,7 +6789,10 @@ int
1629     lpfc_send_rrq(struct lpfc_hba *phba, struct lpfc_node_rrq *rrq)
1630     {
1631     struct lpfc_nodelist *ndlp = lpfc_findnode_did(rrq->vport,
1632     - rrq->nlp_DID);
1633     + rrq->nlp_DID);
1634     + if (!ndlp)
1635     + return 1;
1636     +
1637     if (lpfc_test_rrq_active(phba, ndlp, rrq->xritag))
1638     return lpfc_issue_els_rrq(rrq->vport, ndlp,
1639     rrq->nlp_DID, rrq);
1640     diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
1641     index 06a062455404..b12f7f952b70 100644
1642     --- a/drivers/scsi/smartpqi/smartpqi_init.c
1643     +++ b/drivers/scsi/smartpqi/smartpqi_init.c
1644     @@ -5478,7 +5478,7 @@ static int pqi_pci_init(struct pqi_ctrl_info *ctrl_info)
1645     else
1646     mask = DMA_BIT_MASK(32);
1647    
1648     - rc = dma_set_mask(&ctrl_info->pci_dev->dev, mask);
1649     + rc = dma_set_mask_and_coherent(&ctrl_info->pci_dev->dev, mask);
1650     if (rc) {
1651     dev_err(&ctrl_info->pci_dev->dev, "failed to set DMA mask\n");
1652     goto disable_device;
1653     diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c
1654     index e929f5142862..36226976773f 100644
1655     --- a/drivers/soc/mediatek/mtk-pmic-wrap.c
1656     +++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
1657     @@ -778,7 +778,7 @@ static bool pwrap_is_pmic_cipher_ready(struct pmic_wrapper *wrp)
1658     static int pwrap_init_cipher(struct pmic_wrapper *wrp)
1659     {
1660     int ret;
1661     - u32 rdata;
1662     + u32 rdata = 0;
1663    
1664     pwrap_writel(wrp, 0x1, PWRAP_CIPHER_SWRST);
1665     pwrap_writel(wrp, 0x0, PWRAP_CIPHER_SWRST);
1666     diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
1667     index 8b618f0fa459..6dd195b94c57 100644
1668     --- a/drivers/spi/spi-pxa2xx.c
1669     +++ b/drivers/spi/spi-pxa2xx.c
1670     @@ -1475,12 +1475,7 @@ static const struct pci_device_id pxa2xx_spi_pci_compound_match[] = {
1671    
1672     static bool pxa2xx_spi_idma_filter(struct dma_chan *chan, void *param)
1673     {
1674     - struct device *dev = param;
1675     -
1676     - if (dev != chan->device->dev->parent)
1677     - return false;
1678     -
1679     - return true;
1680     + return param == chan->device->dev;
1681     }
1682    
1683     static struct pxa2xx_spi_master *
1684     diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
1685     index 94590ac5b3cf..f72eebc71dd8 100644
1686     --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
1687     +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
1688     @@ -381,18 +381,9 @@ create_pagelist(char __user *buf, size_t count, unsigned short type,
1689     int run, addridx, actual_pages;
1690     unsigned long *need_release;
1691    
1692     - if (count >= INT_MAX - PAGE_SIZE)
1693     - return NULL;
1694     -
1695     offset = (unsigned int)buf & (PAGE_SIZE - 1);
1696     num_pages = (count + offset + PAGE_SIZE - 1) / PAGE_SIZE;
1697    
1698     - if (num_pages > (SIZE_MAX - sizeof(PAGELIST_T) -
1699     - sizeof(struct vchiq_pagelist_info)) /
1700     - (sizeof(u32) + sizeof(pages[0]) +
1701     - sizeof(struct scatterlist)))
1702     - return NULL;
1703     -
1704     *ppagelist = NULL;
1705    
1706     /* Allocate enough storage to hold the page pointers and the page
1707     diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
1708     index 3f9fe6aa51cc..ebbe1ec7b9e8 100644
1709     --- a/drivers/thermal/qcom/tsens.c
1710     +++ b/drivers/thermal/qcom/tsens.c
1711     @@ -162,7 +162,8 @@ static int tsens_probe(struct platform_device *pdev)
1712     if (tmdev->ops->calibrate) {
1713     ret = tmdev->ops->calibrate(tmdev);
1714     if (ret < 0) {
1715     - dev_err(dev, "tsens calibration failed\n");
1716     + if (ret != -EPROBE_DEFER)
1717     + dev_err(dev, "tsens calibration failed\n");
1718     return ret;
1719     }
1720     }
1721     diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
1722     index 3177264a1166..22d65a33059e 100644
1723     --- a/drivers/tty/serial/8250/8250_dw.c
1724     +++ b/drivers/tty/serial/8250/8250_dw.c
1725     @@ -269,7 +269,7 @@ static bool dw8250_fallback_dma_filter(struct dma_chan *chan, void *param)
1726    
1727     static bool dw8250_idma_filter(struct dma_chan *chan, void *param)
1728     {
1729     - return param == chan->device->dev->parent;
1730     + return param == chan->device->dev;
1731     }
1732    
1733     static void dw8250_quirks(struct uart_port *p, struct dw8250_data *data)
1734     @@ -311,7 +311,7 @@ static void dw8250_quirks(struct uart_port *p, struct dw8250_data *data)
1735     p->set_termios = dw8250_set_termios;
1736     }
1737    
1738     - /* Platforms with iDMA */
1739     + /* Platforms with iDMA 64-bit */
1740     if (platform_get_resource_byname(to_platform_device(p->dev),
1741     IORESOURCE_MEM, "lpss_priv")) {
1742     p->set_termios = dw8250_set_termios;
1743     diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c
1744     index 59828d819145..5ad978acd90c 100644
1745     --- a/drivers/tty/serial/sunhv.c
1746     +++ b/drivers/tty/serial/sunhv.c
1747     @@ -392,7 +392,7 @@ static struct uart_ops sunhv_pops = {
1748     static struct uart_driver sunhv_reg = {
1749     .owner = THIS_MODULE,
1750     .driver_name = "sunhv",
1751     - .dev_name = "ttyS",
1752     + .dev_name = "ttyHV",
1753     .major = TTY_MAJOR,
1754     };
1755    
1756     diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
1757     index 38c7676e7a82..19e819aa2419 100644
1758     --- a/drivers/usb/core/quirks.c
1759     +++ b/drivers/usb/core/quirks.c
1760     @@ -70,6 +70,9 @@ static const struct usb_device_id usb_quirk_list[] = {
1761     /* Cherry Stream G230 2.0 (G85-231) and 3.0 (G85-232) */
1762     { USB_DEVICE(0x046a, 0x0023), .driver_info = USB_QUIRK_RESET_RESUME },
1763    
1764     + /* Logitech HD Webcam C270 */
1765     + { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
1766     +
1767     /* Logitech HD Pro Webcams C920, C920-C, C925e and C930e */
1768     { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT },
1769     { USB_DEVICE(0x046d, 0x0841), .driver_info = USB_QUIRK_DELAY_INIT },
1770     diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
1771     index 0e5435330c07..120c8f716acf 100644
1772     --- a/drivers/usb/dwc2/hcd.c
1773     +++ b/drivers/usb/dwc2/hcd.c
1774     @@ -2552,8 +2552,10 @@ static void dwc2_free_dma_aligned_buffer(struct urb *urb)
1775     return;
1776    
1777     /* Restore urb->transfer_buffer from the end of the allocated area */
1778     - memcpy(&stored_xfer_buffer, urb->transfer_buffer +
1779     - urb->transfer_buffer_length, sizeof(urb->transfer_buffer));
1780     + memcpy(&stored_xfer_buffer,
1781     + PTR_ALIGN(urb->transfer_buffer + urb->transfer_buffer_length,
1782     + dma_get_cache_alignment()),
1783     + sizeof(urb->transfer_buffer));
1784    
1785     if (usb_urb_dir_in(urb))
1786     memcpy(stored_xfer_buffer, urb->transfer_buffer,
1787     @@ -2580,6 +2582,7 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
1788     * DMA
1789     */
1790     kmalloc_size = urb->transfer_buffer_length +
1791     + (dma_get_cache_alignment() - 1) +
1792     sizeof(urb->transfer_buffer);
1793    
1794     kmalloc_ptr = kmalloc(kmalloc_size, mem_flags);
1795     @@ -2590,7 +2593,8 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
1796     * Position value of original urb->transfer_buffer pointer to the end
1797     * of allocation for later referencing
1798     */
1799     - memcpy(kmalloc_ptr + urb->transfer_buffer_length,
1800     + memcpy(PTR_ALIGN(kmalloc_ptr + urb->transfer_buffer_length,
1801     + dma_get_cache_alignment()),
1802     &urb->transfer_buffer, sizeof(urb->transfer_buffer));
1803    
1804     if (usb_urb_dir_out(urb))
1805     diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
1806     index 9f96dd274370..1effe74ec638 100644
1807     --- a/drivers/usb/serial/option.c
1808     +++ b/drivers/usb/serial/option.c
1809     @@ -1166,6 +1166,10 @@ static const struct usb_device_id option_ids[] = {
1810     { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) },
1811     { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214),
1812     .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) },
1813     + { USB_DEVICE(TELIT_VENDOR_ID, 0x1260),
1814     + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1815     + { USB_DEVICE(TELIT_VENDOR_ID, 0x1261),
1816     + .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) },
1817     { USB_DEVICE(TELIT_VENDOR_ID, 0x1900), /* Telit LN940 (QMI) */
1818     .driver_info = NCTRL(0) | RSVD(1) },
1819     { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */
1820     @@ -1767,6 +1771,8 @@ static const struct usb_device_id option_ids[] = {
1821     { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E),
1822     .driver_info = RSVD(5) | RSVD(6) },
1823     { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */
1824     + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */
1825     + .driver_info = RSVD(7) },
1826     { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200),
1827     .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) },
1828     { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D),
1829     diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
1830     index 9706d214c409..8fd5e19846ef 100644
1831     --- a/drivers/usb/serial/pl2303.c
1832     +++ b/drivers/usb/serial/pl2303.c
1833     @@ -101,6 +101,7 @@ static const struct usb_device_id id_table[] = {
1834     { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) },
1835     { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) },
1836     { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) },
1837     + { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) },
1838     { } /* Terminating entry */
1839     };
1840    
1841     diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
1842     index d84c3b3d477b..496cbccbf26c 100644
1843     --- a/drivers/usb/serial/pl2303.h
1844     +++ b/drivers/usb/serial/pl2303.h
1845     @@ -159,3 +159,6 @@
1846     #define SMART_VENDOR_ID 0x0b8c
1847     #define SMART_PRODUCT_ID 0x2303
1848    
1849     +/* Allied Telesis VT-Kit3 */
1850     +#define AT_VENDOR_ID 0x0caa
1851     +#define AT_VTKIT3_PRODUCT_ID 0x3001
1852     diff --git a/drivers/usb/storage/unusual_realtek.h b/drivers/usb/storage/unusual_realtek.h
1853     index 7ca779493671..dee100dd02e1 100644
1854     --- a/drivers/usb/storage/unusual_realtek.h
1855     +++ b/drivers/usb/storage/unusual_realtek.h
1856     @@ -29,6 +29,11 @@ UNUSUAL_DEV(0x0bda, 0x0138, 0x0000, 0x9999,
1857     "USB Card Reader",
1858     USB_SC_DEVICE, USB_PR_DEVICE, init_realtek_cr, 0),
1859    
1860     +UNUSUAL_DEV(0x0bda, 0x0153, 0x0000, 0x9999,
1861     + "Realtek",
1862     + "USB Card Reader",
1863     + USB_SC_DEVICE, USB_PR_DEVICE, init_realtek_cr, 0),
1864     +
1865     UNUSUAL_DEV(0x0bda, 0x0158, 0x0000, 0x9999,
1866     "Realtek",
1867     "USB Card Reader",
1868     diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c
1869     index 463028543173..59e1cae57948 100644
1870     --- a/drivers/video/fbdev/hgafb.c
1871     +++ b/drivers/video/fbdev/hgafb.c
1872     @@ -285,6 +285,8 @@ static int hga_card_detect(void)
1873     hga_vram_len = 0x08000;
1874    
1875     hga_vram = ioremap(0xb0000, hga_vram_len);
1876     + if (!hga_vram)
1877     + goto error;
1878    
1879     if (request_region(0x3b0, 12, "hgafb"))
1880     release_io_ports = 1;
1881     diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c
1882     index 4363c64d74e8..4ef9dc94e813 100644
1883     --- a/drivers/video/fbdev/imsttfb.c
1884     +++ b/drivers/video/fbdev/imsttfb.c
1885     @@ -1516,6 +1516,11 @@ static int imsttfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1886     info->fix.smem_start = addr;
1887     info->screen_base = (__u8 *)ioremap(addr, par->ramdac == IBM ?
1888     0x400000 : 0x800000);
1889     + if (!info->screen_base) {
1890     + release_mem_region(addr, size);
1891     + framebuffer_release(info);
1892     + return -ENOMEM;
1893     + }
1894     info->fix.mmio_start = addr + 0x800000;
1895     par->dc_regs = ioremap(addr + 0x800000, 0x1000);
1896     par->cmap_regs_phys = addr + 0x840000;
1897     diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
1898     index 8f8909a668d7..78fffca4c119 100644
1899     --- a/drivers/watchdog/Kconfig
1900     +++ b/drivers/watchdog/Kconfig
1901     @@ -1850,6 +1850,7 @@ comment "Watchdog Pretimeout Governors"
1902    
1903     config WATCHDOG_PRETIMEOUT_GOV
1904     bool "Enable watchdog pretimeout governors"
1905     + depends on WATCHDOG_CORE
1906     help
1907     The option allows to select watchdog pretimeout governors.
1908    
1909     diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
1910     index 518dfa1047cb..5098982e1a58 100644
1911     --- a/drivers/watchdog/imx2_wdt.c
1912     +++ b/drivers/watchdog/imx2_wdt.c
1913     @@ -181,8 +181,10 @@ static void __imx2_wdt_set_timeout(struct watchdog_device *wdog,
1914     static int imx2_wdt_set_timeout(struct watchdog_device *wdog,
1915     unsigned int new_timeout)
1916     {
1917     - __imx2_wdt_set_timeout(wdog, new_timeout);
1918     + unsigned int actual;
1919    
1920     + actual = min(new_timeout, wdog->max_hw_heartbeat_ms * 1000);
1921     + __imx2_wdt_set_timeout(wdog, actual);
1922     wdog->timeout = new_timeout;
1923     return 0;
1924     }
1925     diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
1926     index d2a1a79fa324..a1985a9ad2d6 100644
1927     --- a/fs/configfs/dir.c
1928     +++ b/fs/configfs/dir.c
1929     @@ -58,15 +58,13 @@ static void configfs_d_iput(struct dentry * dentry,
1930     if (sd) {
1931     /* Coordinate with configfs_readdir */
1932     spin_lock(&configfs_dirent_lock);
1933     - /* Coordinate with configfs_attach_attr where will increase
1934     - * sd->s_count and update sd->s_dentry to new allocated one.
1935     - * Only set sd->dentry to null when this dentry is the only
1936     - * sd owner.
1937     - * If not do so, configfs_d_iput may run just after
1938     - * configfs_attach_attr and set sd->s_dentry to null
1939     - * even it's still in use.
1940     + /*
1941     + * Set sd->s_dentry to null only when this dentry is the one
1942     + * that is going to be killed. Otherwise configfs_d_iput may
1943     + * run just after configfs_attach_attr and set sd->s_dentry to
1944     + * NULL even it's still in use.
1945     */
1946     - if (atomic_read(&sd->s_count) <= 2)
1947     + if (sd->s_dentry == dentry)
1948     sd->s_dentry = NULL;
1949    
1950     spin_unlock(&configfs_dirent_lock);
1951     @@ -1755,12 +1753,19 @@ int configfs_register_group(struct config_group *parent_group,
1952    
1953     inode_lock_nested(d_inode(parent), I_MUTEX_PARENT);
1954     ret = create_default_group(parent_group, group);
1955     - if (!ret) {
1956     - spin_lock(&configfs_dirent_lock);
1957     - configfs_dir_set_ready(group->cg_item.ci_dentry->d_fsdata);
1958     - spin_unlock(&configfs_dirent_lock);
1959     - }
1960     + if (ret)
1961     + goto err_out;
1962     +
1963     + spin_lock(&configfs_dirent_lock);
1964     + configfs_dir_set_ready(group->cg_item.ci_dentry->d_fsdata);
1965     + spin_unlock(&configfs_dirent_lock);
1966     + inode_unlock(d_inode(parent));
1967     + return 0;
1968     +err_out:
1969     inode_unlock(d_inode(parent));
1970     + mutex_lock(&subsys->su_mutex);
1971     + unlink_group(group);
1972     + mutex_unlock(&subsys->su_mutex);
1973     return ret;
1974     }
1975     EXPORT_SYMBOL(configfs_register_group);
1976     diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
1977     index 1de02c31756b..c56d04ec45dc 100644
1978     --- a/fs/f2fs/inode.c
1979     +++ b/fs/f2fs/inode.c
1980     @@ -288,6 +288,7 @@ make_now:
1981     return inode;
1982    
1983     bad_inode:
1984     + f2fs_inode_synced(inode);
1985     iget_failed(inode);
1986     trace_f2fs_iget_exit(inode, ret);
1987     return ERR_PTR(ret);
1988     diff --git a/fs/f2fs/recovery.c b/fs/f2fs/recovery.c
1989     index e59eeaf02eaa..9de1480a86bd 100644
1990     --- a/fs/f2fs/recovery.c
1991     +++ b/fs/f2fs/recovery.c
1992     @@ -407,7 +407,15 @@ retry_dn:
1993    
1994     get_node_info(sbi, dn.nid, &ni);
1995     f2fs_bug_on(sbi, ni.ino != ino_of_node(page));
1996     - f2fs_bug_on(sbi, ofs_of_node(dn.node_page) != ofs_of_node(page));
1997     +
1998     + if (ofs_of_node(dn.node_page) != ofs_of_node(page)) {
1999     + f2fs_msg(sbi->sb, KERN_WARNING,
2000     + "Inconsistent ofs_of_node, ino:%lu, ofs:%u, %u",
2001     + inode->i_ino, ofs_of_node(dn.node_page),
2002     + ofs_of_node(page));
2003     + err = -EFAULT;
2004     + goto err;
2005     + }
2006    
2007     for (; start < end; start++, dn.ofs_in_node++) {
2008     block_t src, dest;
2009     diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
2010     index 893723978f5e..faca7fdb54b0 100644
2011     --- a/fs/f2fs/segment.h
2012     +++ b/fs/f2fs/segment.h
2013     @@ -613,7 +613,6 @@ static inline void verify_block_addr(struct f2fs_io_info *fio, block_t blk_addr)
2014     static inline int check_block_count(struct f2fs_sb_info *sbi,
2015     int segno, struct f2fs_sit_entry *raw_sit)
2016     {
2017     -#ifdef CONFIG_F2FS_CHECK_FS
2018     bool is_valid = test_bit_le(0, raw_sit->valid_map) ? true : false;
2019     int valid_blocks = 0;
2020     int cur_pos = 0, next_pos;
2021     @@ -640,7 +639,7 @@ static inline int check_block_count(struct f2fs_sb_info *sbi,
2022     set_sbi_flag(sbi, SBI_NEED_FSCK);
2023     return -EINVAL;
2024     }
2025     -#endif
2026     +
2027     /* check segment usage, and check boundary of a given segment number */
2028     if (unlikely(GET_SIT_VBLOCKS(raw_sit) > sbi->blocks_per_seg
2029     || segno > TOTAL_SEGS(sbi) - 1)) {
2030     diff --git a/fs/fat/file.c b/fs/fat/file.c
2031     index 3d04b124bce0..392ec5641f38 100644
2032     --- a/fs/fat/file.c
2033     +++ b/fs/fat/file.c
2034     @@ -160,12 +160,17 @@ static int fat_file_release(struct inode *inode, struct file *filp)
2035     int fat_file_fsync(struct file *filp, loff_t start, loff_t end, int datasync)
2036     {
2037     struct inode *inode = filp->f_mapping->host;
2038     - int res, err;
2039     + int err;
2040     +
2041     + err = __generic_file_fsync(filp, start, end, datasync);
2042     + if (err)
2043     + return err;
2044    
2045     - res = generic_file_fsync(filp, start, end, datasync);
2046     err = sync_mapping_buffers(MSDOS_SB(inode->i_sb)->fat_inode->i_mapping);
2047     + if (err)
2048     + return err;
2049    
2050     - return res ? res : err;
2051     + return blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
2052     }
2053    
2054    
2055     diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
2056     index eaedbc1a3e95..8016cd059db1 100644
2057     --- a/fs/fuse/dev.c
2058     +++ b/fs/fuse/dev.c
2059     @@ -1668,7 +1668,7 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode,
2060     offset = outarg->offset & ~PAGE_MASK;
2061     file_size = i_size_read(inode);
2062    
2063     - num = outarg->size;
2064     + num = min(outarg->size, fc->max_write);
2065     if (outarg->offset > file_size)
2066     num = 0;
2067     else if (outarg->offset + num > file_size)
2068     diff --git a/fs/inode.c b/fs/inode.c
2069     index 2071ff5343c5..30a97292e965 100644
2070     --- a/fs/inode.c
2071     +++ b/fs/inode.c
2072     @@ -1804,8 +1804,13 @@ int file_remove_privs(struct file *file)
2073     int kill;
2074     int error = 0;
2075    
2076     - /* Fast path for nothing security related */
2077     - if (IS_NOSEC(inode))
2078     + /*
2079     + * Fast path for nothing security related.
2080     + * As well for non-regular files, e.g. blkdev inodes.
2081     + * For example, blkdev_write_iter() might get here
2082     + * trying to remove privs which it is not allowed to.
2083     + */
2084     + if (IS_NOSEC(inode) || !S_ISREG(inode->i_mode))
2085     return 0;
2086    
2087     kill = dentry_needs_remove_privs(dentry);
2088     diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h
2089     index 0bf9e7bf5800..9140b9cf3870 100644
2090     --- a/fs/nfsd/vfs.h
2091     +++ b/fs/nfsd/vfs.h
2092     @@ -116,8 +116,11 @@ void nfsd_put_raparams(struct file *file, struct raparms *ra);
2093    
2094     static inline int fh_want_write(struct svc_fh *fh)
2095     {
2096     - int ret = mnt_want_write(fh->fh_export->ex_path.mnt);
2097     + int ret;
2098    
2099     + if (fh->fh_want_write)
2100     + return 0;
2101     + ret = mnt_want_write(fh->fh_export->ex_path.mnt);
2102     if (!ret)
2103     fh->fh_want_write = true;
2104     return ret;
2105     diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c
2106     index 290373024d9d..e8ace3b54e9c 100644
2107     --- a/fs/ocfs2/dcache.c
2108     +++ b/fs/ocfs2/dcache.c
2109     @@ -310,6 +310,18 @@ int ocfs2_dentry_attach_lock(struct dentry *dentry,
2110    
2111     out_attach:
2112     spin_lock(&dentry_attach_lock);
2113     + if (unlikely(dentry->d_fsdata && !alias)) {
2114     + /* d_fsdata is set by a racing thread which is doing
2115     + * the same thing as this thread is doing. Leave the racing
2116     + * thread going ahead and we return here.
2117     + */
2118     + spin_unlock(&dentry_attach_lock);
2119     + iput(dl->dl_inode);
2120     + ocfs2_lock_res_free(&dl->dl_lockres);
2121     + kfree(dl);
2122     + return 0;
2123     + }
2124     +
2125     dentry->d_fsdata = dl;
2126     dl->dl_count++;
2127     spin_unlock(&dentry_attach_lock);
2128     diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
2129     index 7620a8bc0493..8be03520995c 100644
2130     --- a/include/linux/cgroup.h
2131     +++ b/include/linux/cgroup.h
2132     @@ -462,7 +462,7 @@ static inline struct cgroup_subsys_state *task_css(struct task_struct *task,
2133     *
2134     * Find the css for the (@task, @subsys_id) combination, increment a
2135     * reference on and return it. This function is guaranteed to return a
2136     - * valid css.
2137     + * valid css. The returned css may already have been offlined.
2138     */
2139     static inline struct cgroup_subsys_state *
2140     task_get_css(struct task_struct *task, int subsys_id)
2141     @@ -472,7 +472,13 @@ task_get_css(struct task_struct *task, int subsys_id)
2142     rcu_read_lock();
2143     while (true) {
2144     css = task_css(task, subsys_id);
2145     - if (likely(css_tryget_online(css)))
2146     + /*
2147     + * Can't use css_tryget_online() here. A task which has
2148     + * PF_EXITING set may stay associated with an offline css.
2149     + * If such task calls this function, css_tryget_online()
2150     + * will keep failing.
2151     + */
2152     + if (likely(css_tryget(css)))
2153     break;
2154     cpu_relax();
2155     }
2156     diff --git a/include/linux/pwm.h b/include/linux/pwm.h
2157     index 2c6c5114c089..f1bbae014889 100644
2158     --- a/include/linux/pwm.h
2159     +++ b/include/linux/pwm.h
2160     @@ -641,7 +641,6 @@ static inline void pwm_remove_table(struct pwm_lookup *table, size_t num)
2161     #ifdef CONFIG_PWM_SYSFS
2162     void pwmchip_sysfs_export(struct pwm_chip *chip);
2163     void pwmchip_sysfs_unexport(struct pwm_chip *chip);
2164     -void pwmchip_sysfs_unexport_children(struct pwm_chip *chip);
2165     #else
2166     static inline void pwmchip_sysfs_export(struct pwm_chip *chip)
2167     {
2168     @@ -650,10 +649,6 @@ static inline void pwmchip_sysfs_export(struct pwm_chip *chip)
2169     static inline void pwmchip_sysfs_unexport(struct pwm_chip *chip)
2170     {
2171     }
2172     -
2173     -static inline void pwmchip_sysfs_unexport_children(struct pwm_chip *chip)
2174     -{
2175     -}
2176     #endif /* CONFIG_PWM_SYSFS */
2177    
2178     #endif /* __LINUX_PWM_H */
2179     diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
2180     index 57a7dba49d29..4931787193c3 100644
2181     --- a/include/net/bluetooth/hci_core.h
2182     +++ b/include/net/bluetooth/hci_core.h
2183     @@ -176,9 +176,6 @@ struct adv_info {
2184    
2185     #define HCI_MAX_SHORT_NAME_LENGTH 10
2186    
2187     -/* Min encryption key size to match with SMP */
2188     -#define HCI_MIN_ENC_KEY_SIZE 7
2189     -
2190     /* Default LE RPA expiry time, 15 minutes */
2191     #define HCI_DEFAULT_RPA_TIMEOUT (15 * 60)
2192    
2193     diff --git a/ipc/mqueue.c b/ipc/mqueue.c
2194     index 28a142f1be36..d5491a880751 100644
2195     --- a/ipc/mqueue.c
2196     +++ b/ipc/mqueue.c
2197     @@ -371,7 +371,8 @@ static void mqueue_evict_inode(struct inode *inode)
2198     struct user_struct *user;
2199     unsigned long mq_bytes, mq_treesize;
2200     struct ipc_namespace *ipc_ns;
2201     - struct msg_msg *msg;
2202     + struct msg_msg *msg, *nmsg;
2203     + LIST_HEAD(tmp_msg);
2204    
2205     clear_inode(inode);
2206    
2207     @@ -382,10 +383,15 @@ static void mqueue_evict_inode(struct inode *inode)
2208     info = MQUEUE_I(inode);
2209     spin_lock(&info->lock);
2210     while ((msg = msg_get(info)) != NULL)
2211     - free_msg(msg);
2212     + list_add_tail(&msg->m_list, &tmp_msg);
2213     kfree(info->node_cache);
2214     spin_unlock(&info->lock);
2215    
2216     + list_for_each_entry_safe(msg, nmsg, &tmp_msg, m_list) {
2217     + list_del(&msg->m_list);
2218     + free_msg(msg);
2219     + }
2220     +
2221     /* Total amount of bytes accounted for the mqueue */
2222     mq_treesize = info->attr.mq_maxmsg * sizeof(struct msg_msg) +
2223     min_t(unsigned int, info->attr.mq_maxmsg, MQ_PRIO_MAX) *
2224     diff --git a/ipc/msgutil.c b/ipc/msgutil.c
2225     index bf74eaa5c39f..6d90b191c638 100644
2226     --- a/ipc/msgutil.c
2227     +++ b/ipc/msgutil.c
2228     @@ -18,6 +18,7 @@
2229     #include <linux/utsname.h>
2230     #include <linux/proc_ns.h>
2231     #include <linux/uaccess.h>
2232     +#include <linux/sched.h>
2233    
2234     #include "util.h"
2235    
2236     @@ -64,6 +65,9 @@ static struct msg_msg *alloc_msg(size_t len)
2237     pseg = &msg->next;
2238     while (len > 0) {
2239     struct msg_msgseg *seg;
2240     +
2241     + cond_resched();
2242     +
2243     alen = min(len, DATALEN_SEG);
2244     seg = kmalloc(sizeof(*seg) + alen, GFP_KERNEL_ACCOUNT);
2245     if (seg == NULL)
2246     @@ -176,6 +180,8 @@ void free_msg(struct msg_msg *msg)
2247     kfree(msg);
2248     while (seg != NULL) {
2249     struct msg_msgseg *tmp = seg->next;
2250     +
2251     + cond_resched();
2252     kfree(seg);
2253     seg = tmp;
2254     }
2255     diff --git a/kernel/Makefile b/kernel/Makefile
2256     index 314e7d62f5f0..184fa9aa5802 100644
2257     --- a/kernel/Makefile
2258     +++ b/kernel/Makefile
2259     @@ -28,6 +28,7 @@ KCOV_INSTRUMENT_extable.o := n
2260     # Don't self-instrument.
2261     KCOV_INSTRUMENT_kcov.o := n
2262     KASAN_SANITIZE_kcov.o := n
2263     +CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack -fno-stack-protector)
2264    
2265     # cond_syscall is currently not LTO compatible
2266     CFLAGS_sys_ni.o = $(DISABLE_LTO)
2267     diff --git a/kernel/cred.c b/kernel/cred.c
2268     index 5f264fb5737d..7b925925be95 100644
2269     --- a/kernel/cred.c
2270     +++ b/kernel/cred.c
2271     @@ -447,6 +447,15 @@ int commit_creds(struct cred *new)
2272     if (task->mm)
2273     set_dumpable(task->mm, suid_dumpable);
2274     task->pdeath_signal = 0;
2275     + /*
2276     + * If a task drops privileges and becomes nondumpable,
2277     + * the dumpability change must become visible before
2278     + * the credential change; otherwise, a __ptrace_may_access()
2279     + * racing with this change may be able to attach to a task it
2280     + * shouldn't be able to attach to (as if the task had dropped
2281     + * privileges without becoming nondumpable).
2282     + * Pairs with a read barrier in __ptrace_may_access().
2283     + */
2284     smp_wmb();
2285     }
2286    
2287     diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
2288     index 99becab2c1ce..8e8b903b7613 100644
2289     --- a/kernel/events/ring_buffer.c
2290     +++ b/kernel/events/ring_buffer.c
2291     @@ -49,14 +49,30 @@ static void perf_output_put_handle(struct perf_output_handle *handle)
2292     unsigned long head;
2293    
2294     again:
2295     + /*
2296     + * In order to avoid publishing a head value that goes backwards,
2297     + * we must ensure the load of @rb->head happens after we've
2298     + * incremented @rb->nest.
2299     + *
2300     + * Otherwise we can observe a @rb->head value before one published
2301     + * by an IRQ/NMI happening between the load and the increment.
2302     + */
2303     + barrier();
2304     head = local_read(&rb->head);
2305    
2306     /*
2307     - * IRQ/NMI can happen here, which means we can miss a head update.
2308     + * IRQ/NMI can happen here and advance @rb->head, causing our
2309     + * load above to be stale.
2310     */
2311    
2312     - if (!local_dec_and_test(&rb->nest))
2313     + /*
2314     + * If this isn't the outermost nesting, we don't have to update
2315     + * @rb->user_page->data_head.
2316     + */
2317     + if (local_read(&rb->nest) > 1) {
2318     + local_dec(&rb->nest);
2319     goto out;
2320     + }
2321    
2322     /*
2323     * Since the mmap() consumer (userspace) can run on a different CPU:
2324     @@ -88,9 +104,18 @@ again:
2325     rb->user_page->data_head = head;
2326    
2327     /*
2328     - * Now check if we missed an update -- rely on previous implied
2329     - * compiler barriers to force a re-read.
2330     + * We must publish the head before decrementing the nest count,
2331     + * otherwise an IRQ/NMI can publish a more recent head value and our
2332     + * write will (temporarily) publish a stale value.
2333     + */
2334     + barrier();
2335     + local_set(&rb->nest, 0);
2336     +
2337     + /*
2338     + * Ensure we decrement @rb->nest before we validate the @rb->head.
2339     + * Otherwise we cannot be sure we caught the 'last' nested update.
2340     */
2341     + barrier();
2342     if (unlikely(head != local_read(&rb->head))) {
2343     local_inc(&rb->nest);
2344     goto again;
2345     diff --git a/kernel/ptrace.c b/kernel/ptrace.c
2346     index efba851ee018..f447f1e36185 100644
2347     --- a/kernel/ptrace.c
2348     +++ b/kernel/ptrace.c
2349     @@ -322,6 +322,16 @@ static int __ptrace_may_access(struct task_struct *task, unsigned int mode)
2350     return -EPERM;
2351     ok:
2352     rcu_read_unlock();
2353     + /*
2354     + * If a task drops privileges and becomes nondumpable (through a syscall
2355     + * like setresuid()) while we are trying to access it, we must ensure
2356     + * that the dumpability is read after the credentials; otherwise,
2357     + * we may be able to attach to a task that we shouldn't be able to
2358     + * attach to (as if the task had dropped privileges without becoming
2359     + * nondumpable).
2360     + * Pairs with a write barrier in commit_creds().
2361     + */
2362     + smp_rmb();
2363     mm = task->mm;
2364     if (mm &&
2365     ((get_dumpable(mm) != SUID_DUMP_USER) &&
2366     @@ -710,6 +720,10 @@ static int ptrace_peek_siginfo(struct task_struct *child,
2367     if (arg.nr < 0)
2368     return -EINVAL;
2369    
2370     + /* Ensure arg.off fits in an unsigned long */
2371     + if (arg.off > ULONG_MAX)
2372     + return 0;
2373     +
2374     if (arg.flags & PTRACE_PEEKSIGINFO_SHARED)
2375     pending = &child->signal->shared_pending;
2376     else
2377     @@ -717,18 +731,20 @@ static int ptrace_peek_siginfo(struct task_struct *child,
2378    
2379     for (i = 0; i < arg.nr; ) {
2380     siginfo_t info;
2381     - s32 off = arg.off + i;
2382     + unsigned long off = arg.off + i;
2383     + bool found = false;
2384    
2385     spin_lock_irq(&child->sighand->siglock);
2386     list_for_each_entry(q, &pending->list, list) {
2387     if (!off--) {
2388     + found = true;
2389     copy_siginfo(&info, &q->info);
2390     break;
2391     }
2392     }
2393     spin_unlock_irq(&child->sighand->siglock);
2394    
2395     - if (off >= 0) /* beyond the end of the list */
2396     + if (!found) /* beyond the end of the list */
2397     break;
2398    
2399     #ifdef CONFIG_COMPAT
2400     diff --git a/kernel/sys.c b/kernel/sys.c
2401     index 6c4e9b533258..157277cbf83a 100644
2402     --- a/kernel/sys.c
2403     +++ b/kernel/sys.c
2404     @@ -1762,7 +1762,7 @@ static int validate_prctl_map(struct prctl_mm_map *prctl_map)
2405     ((unsigned long)prctl_map->__m1 __op \
2406     (unsigned long)prctl_map->__m2) ? 0 : -EINVAL
2407     error = __prctl_check_order(start_code, <, end_code);
2408     - error |= __prctl_check_order(start_data, <, end_data);
2409     + error |= __prctl_check_order(start_data,<=, end_data);
2410     error |= __prctl_check_order(start_brk, <=, brk);
2411     error |= __prctl_check_order(arg_start, <=, arg_end);
2412     error |= __prctl_check_order(env_start, <=, env_end);
2413     diff --git a/kernel/sysctl.c b/kernel/sysctl.c
2414     index cf0aeaae567e..6af1ac551ea3 100644
2415     --- a/kernel/sysctl.c
2416     +++ b/kernel/sysctl.c
2417     @@ -2527,8 +2527,10 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int
2418     if (neg)
2419     continue;
2420     val = convmul * val / convdiv;
2421     - if ((min && val < *min) || (max && val > *max))
2422     - continue;
2423     + if ((min && val < *min) || (max && val > *max)) {
2424     + err = -EINVAL;
2425     + break;
2426     + }
2427     *i = val;
2428     } else {
2429     val = convdiv * (*i) / convmul;
2430     diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
2431     index 6df8927c58a5..0a16419006f3 100644
2432     --- a/kernel/time/ntp.c
2433     +++ b/kernel/time/ntp.c
2434     @@ -639,7 +639,7 @@ static inline void process_adjtimex_modes(struct timex *txc,
2435     time_constant = max(time_constant, 0l);
2436     }
2437    
2438     - if (txc->modes & ADJ_TAI && txc->constant > 0)
2439     + if (txc->modes & ADJ_TAI && txc->constant >= 0)
2440     *time_tai = txc->constant;
2441    
2442     if (txc->modes & ADJ_OFFSET)
2443     diff --git a/mm/cma.c b/mm/cma.c
2444     index b5d8847497a3..4ea0f32761c1 100644
2445     --- a/mm/cma.c
2446     +++ b/mm/cma.c
2447     @@ -100,8 +100,10 @@ static int __init cma_activate_area(struct cma *cma)
2448    
2449     cma->bitmap = kzalloc(bitmap_size, GFP_KERNEL);
2450    
2451     - if (!cma->bitmap)
2452     + if (!cma->bitmap) {
2453     + cma->count = 0;
2454     return -ENOMEM;
2455     + }
2456    
2457     WARN_ON_ONCE(!pfn_valid(pfn));
2458     zone = page_zone(pfn_to_page(pfn));
2459     diff --git a/mm/cma_debug.c b/mm/cma_debug.c
2460     index f8e4b60db167..da50dab56b70 100644
2461     --- a/mm/cma_debug.c
2462     +++ b/mm/cma_debug.c
2463     @@ -57,7 +57,7 @@ static int cma_maxchunk_get(void *data, u64 *val)
2464     mutex_lock(&cma->lock);
2465     for (;;) {
2466     start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end);
2467     - if (start >= cma->count)
2468     + if (start >= bitmap_maxno)
2469     break;
2470     end = find_next_bit(cma->bitmap, bitmap_maxno, start);
2471     maxchunk = max(end - start, maxchunk);
2472     diff --git a/mm/hugetlb.c b/mm/hugetlb.c
2473     index 6b03cd9b6d37..9914da93069e 100644
2474     --- a/mm/hugetlb.c
2475     +++ b/mm/hugetlb.c
2476     @@ -1247,12 +1247,23 @@ void free_huge_page(struct page *page)
2477     ClearPagePrivate(page);
2478    
2479     /*
2480     - * A return code of zero implies that the subpool will be under its
2481     - * minimum size if the reservation is not restored after page is free.
2482     - * Therefore, force restore_reserve operation.
2483     + * If PagePrivate() was set on page, page allocation consumed a
2484     + * reservation. If the page was associated with a subpool, there
2485     + * would have been a page reserved in the subpool before allocation
2486     + * via hugepage_subpool_get_pages(). Since we are 'restoring' the
2487     + * reservtion, do not call hugepage_subpool_put_pages() as this will
2488     + * remove the reserved page from the subpool.
2489     */
2490     - if (hugepage_subpool_put_pages(spool, 1) == 0)
2491     - restore_reserve = true;
2492     + if (!restore_reserve) {
2493     + /*
2494     + * A return code of zero implies that the subpool will be
2495     + * under its minimum size if the reservation is not restored
2496     + * after page is free. Therefore, force restore_reserve
2497     + * operation.
2498     + */
2499     + if (hugepage_subpool_put_pages(spool, 1) == 0)
2500     + restore_reserve = true;
2501     + }
2502    
2503     spin_lock(&hugetlb_lock);
2504     clear_page_huge_active(page);
2505     diff --git a/mm/list_lru.c b/mm/list_lru.c
2506     index db3a77c60201..16361c989af9 100644
2507     --- a/mm/list_lru.c
2508     +++ b/mm/list_lru.c
2509     @@ -313,7 +313,7 @@ static int __memcg_init_list_lru_node(struct list_lru_memcg *memcg_lrus,
2510     }
2511     return 0;
2512     fail:
2513     - __memcg_destroy_list_lru_node(memcg_lrus, begin, i - 1);
2514     + __memcg_destroy_list_lru_node(memcg_lrus, begin, i);
2515     return -ENOMEM;
2516     }
2517    
2518     diff --git a/mm/page_alloc.c b/mm/page_alloc.c
2519     index 05f141e39ac1..13a642192e12 100644
2520     --- a/mm/page_alloc.c
2521     +++ b/mm/page_alloc.c
2522     @@ -5491,13 +5491,15 @@ static unsigned long __meminit zone_spanned_pages_in_node(int nid,
2523     unsigned long *zone_end_pfn,
2524     unsigned long *ignored)
2525     {
2526     + unsigned long zone_low = arch_zone_lowest_possible_pfn[zone_type];
2527     + unsigned long zone_high = arch_zone_highest_possible_pfn[zone_type];
2528     /* When hotadd a new node from cpu_up(), the node should be empty */
2529     if (!node_start_pfn && !node_end_pfn)
2530     return 0;
2531    
2532     /* Get the start and end of the zone */
2533     - *zone_start_pfn = arch_zone_lowest_possible_pfn[zone_type];
2534     - *zone_end_pfn = arch_zone_highest_possible_pfn[zone_type];
2535     + *zone_start_pfn = clamp(node_start_pfn, zone_low, zone_high);
2536     + *zone_end_pfn = clamp(node_end_pfn, zone_low, zone_high);
2537     adjust_zone_range_for_zone_movable(nid, zone_type,
2538     node_start_pfn, node_end_pfn,
2539     zone_start_pfn, zone_end_pfn);
2540     diff --git a/mm/slab.c b/mm/slab.c
2541     index d2c0499c6b15..9547f02b4af9 100644
2542     --- a/mm/slab.c
2543     +++ b/mm/slab.c
2544     @@ -4365,8 +4365,12 @@ static int leaks_show(struct seq_file *m, void *p)
2545     * whole processing.
2546     */
2547     do {
2548     - set_store_user_clean(cachep);
2549     drain_cpu_caches(cachep);
2550     + /*
2551     + * drain_cpu_caches() could make kmemleak_object and
2552     + * debug_objects_cache dirty, so reset afterwards.
2553     + */
2554     + set_store_user_clean(cachep);
2555    
2556     x[1] = 0;
2557    
2558     diff --git a/net/ax25/ax25_route.c b/net/ax25/ax25_route.c
2559     index 149f82bd83fd..6ba56f215229 100644
2560     --- a/net/ax25/ax25_route.c
2561     +++ b/net/ax25/ax25_route.c
2562     @@ -443,9 +443,11 @@ int ax25_rt_autobind(ax25_cb *ax25, ax25_address *addr)
2563     }
2564    
2565     if (ax25->sk != NULL) {
2566     + local_bh_disable();
2567     bh_lock_sock(ax25->sk);
2568     sock_reset_flag(ax25->sk, SOCK_ZAPPED);
2569     bh_unlock_sock(ax25->sk);
2570     + local_bh_enable();
2571     }
2572    
2573     put:
2574     diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
2575     index fe4fb0c1fa61..cc061495f653 100644
2576     --- a/net/bluetooth/hci_conn.c
2577     +++ b/net/bluetooth/hci_conn.c
2578     @@ -1165,14 +1165,6 @@ int hci_conn_check_link_mode(struct hci_conn *conn)
2579     !test_bit(HCI_CONN_ENCRYPT, &conn->flags))
2580     return 0;
2581    
2582     - /* The minimum encryption key size needs to be enforced by the
2583     - * host stack before establishing any L2CAP connections. The
2584     - * specification in theory allows a minimum of 1, but to align
2585     - * BR/EDR and LE transports, a minimum of 7 is chosen.
2586     - */
2587     - if (conn->enc_key_size < HCI_MIN_ENC_KEY_SIZE)
2588     - return 0;
2589     -
2590     return 1;
2591     }
2592    
2593     diff --git a/net/core/neighbour.c b/net/core/neighbour.c
2594     index 428dd614a18a..01cdfe85bb09 100644
2595     --- a/net/core/neighbour.c
2596     +++ b/net/core/neighbour.c
2597     @@ -2704,6 +2704,7 @@ static void *neigh_get_idx_any(struct seq_file *seq, loff_t *pos)
2598     }
2599    
2600     void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl, unsigned int neigh_seq_flags)
2601     + __acquires(tbl->lock)
2602     __acquires(rcu_bh)
2603     {
2604     struct neigh_seq_state *state = seq->private;
2605     @@ -2714,6 +2715,7 @@ void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl
2606    
2607     rcu_read_lock_bh();
2608     state->nht = rcu_dereference_bh(tbl->nht);
2609     + read_lock(&tbl->lock);
2610    
2611     return *pos ? neigh_get_idx_any(seq, pos) : SEQ_START_TOKEN;
2612     }
2613     @@ -2747,8 +2749,13 @@ out:
2614     EXPORT_SYMBOL(neigh_seq_next);
2615    
2616     void neigh_seq_stop(struct seq_file *seq, void *v)
2617     + __releases(tbl->lock)
2618     __releases(rcu_bh)
2619     {
2620     + struct neigh_seq_state *state = seq->private;
2621     + struct neigh_table *tbl = state->tbl;
2622     +
2623     + read_unlock(&tbl->lock);
2624     rcu_read_unlock_bh();
2625     }
2626     EXPORT_SYMBOL(neigh_seq_stop);
2627     diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
2628     index 8c2f9aedc2af..6a6011160f18 100644
2629     --- a/net/ipv6/ip6_flowlabel.c
2630     +++ b/net/ipv6/ip6_flowlabel.c
2631     @@ -254,9 +254,9 @@ struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, __be32 label)
2632     rcu_read_lock_bh();
2633     for_each_sk_fl_rcu(np, sfl) {
2634     struct ip6_flowlabel *fl = sfl->fl;
2635     - if (fl->label == label) {
2636     +
2637     + if (fl->label == label && atomic_inc_not_zero(&fl->users)) {
2638     fl->lastuse = jiffies;
2639     - atomic_inc(&fl->users);
2640     rcu_read_unlock_bh();
2641     return fl;
2642     }
2643     @@ -623,7 +623,8 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen)
2644     goto done;
2645     }
2646     fl1 = sfl->fl;
2647     - atomic_inc(&fl1->users);
2648     + if (!atomic_inc_not_zero(&fl1->users))
2649     + fl1 = NULL;
2650     break;
2651     }
2652     }
2653     diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c
2654     index fc60d9d738b5..cdb913e7627e 100644
2655     --- a/net/lapb/lapb_iface.c
2656     +++ b/net/lapb/lapb_iface.c
2657     @@ -182,6 +182,7 @@ int lapb_unregister(struct net_device *dev)
2658     lapb = __lapb_devtostruct(dev);
2659     if (!lapb)
2660     goto out;
2661     + lapb_put(lapb);
2662    
2663     lapb_stop_t1timer(lapb);
2664     lapb_stop_t2timer(lapb);
2665     diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
2666     index 09491b27092e..bc6d371031fc 100644
2667     --- a/sound/core/seq/seq_clientmgr.c
2668     +++ b/sound/core/seq/seq_clientmgr.c
2669     @@ -1905,20 +1905,14 @@ static int snd_seq_ioctl_get_subscription(struct snd_seq_client *client,
2670     int result;
2671     struct snd_seq_client *sender = NULL;
2672     struct snd_seq_client_port *sport = NULL;
2673     - struct snd_seq_subscribers *p;
2674    
2675     result = -EINVAL;
2676     if ((sender = snd_seq_client_use_ptr(subs->sender.client)) == NULL)
2677     goto __end;
2678     if ((sport = snd_seq_port_use_ptr(sender, subs->sender.port)) == NULL)
2679     goto __end;
2680     - p = snd_seq_port_get_subscription(&sport->c_src, &subs->dest);
2681     - if (p) {
2682     - result = 0;
2683     - *subs = p->info;
2684     - } else
2685     - result = -ENOENT;
2686     -
2687     + result = snd_seq_port_get_subscription(&sport->c_src, &subs->dest,
2688     + subs);
2689     __end:
2690     if (sport)
2691     snd_seq_port_unlock(sport);
2692     diff --git a/sound/core/seq/seq_ports.c b/sound/core/seq/seq_ports.c
2693     index f04714d70bf7..9cfe4fcee9a5 100644
2694     --- a/sound/core/seq/seq_ports.c
2695     +++ b/sound/core/seq/seq_ports.c
2696     @@ -550,10 +550,10 @@ static void delete_and_unsubscribe_port(struct snd_seq_client *client,
2697     list_del_init(list);
2698     grp->exclusive = 0;
2699     write_unlock_irq(&grp->list_lock);
2700     - up_write(&grp->list_mutex);
2701    
2702     if (!empty)
2703     unsubscribe_port(client, port, grp, &subs->info, ack);
2704     + up_write(&grp->list_mutex);
2705     }
2706    
2707     /* connect two ports */
2708     @@ -635,20 +635,23 @@ int snd_seq_port_disconnect(struct snd_seq_client *connector,
2709    
2710    
2711     /* get matched subscriber */
2712     -struct snd_seq_subscribers *snd_seq_port_get_subscription(struct snd_seq_port_subs_info *src_grp,
2713     - struct snd_seq_addr *dest_addr)
2714     +int snd_seq_port_get_subscription(struct snd_seq_port_subs_info *src_grp,
2715     + struct snd_seq_addr *dest_addr,
2716     + struct snd_seq_port_subscribe *subs)
2717     {
2718     - struct snd_seq_subscribers *s, *found = NULL;
2719     + struct snd_seq_subscribers *s;
2720     + int err = -ENOENT;
2721    
2722     down_read(&src_grp->list_mutex);
2723     list_for_each_entry(s, &src_grp->list_head, src_list) {
2724     if (addr_match(dest_addr, &s->info.dest)) {
2725     - found = s;
2726     + *subs = s->info;
2727     + err = 0;
2728     break;
2729     }
2730     }
2731     up_read(&src_grp->list_mutex);
2732     - return found;
2733     + return err;
2734     }
2735    
2736     /*
2737     diff --git a/sound/core/seq/seq_ports.h b/sound/core/seq/seq_ports.h
2738     index 26bd71f36c41..06003b36652e 100644
2739     --- a/sound/core/seq/seq_ports.h
2740     +++ b/sound/core/seq/seq_ports.h
2741     @@ -135,7 +135,8 @@ int snd_seq_port_subscribe(struct snd_seq_client_port *port,
2742     struct snd_seq_port_subscribe *info);
2743    
2744     /* get matched subscriber */
2745     -struct snd_seq_subscribers *snd_seq_port_get_subscription(struct snd_seq_port_subs_info *src_grp,
2746     - struct snd_seq_addr *dest_addr);
2747     +int snd_seq_port_get_subscription(struct snd_seq_port_subs_info *src_grp,
2748     + struct snd_seq_addr *dest_addr,
2749     + struct snd_seq_port_subscribe *subs);
2750    
2751     #endif
2752     diff --git a/sound/firewire/oxfw/oxfw.c b/sound/firewire/oxfw/oxfw.c
2753     index b0395c4209ab..a7ab34d5e7b0 100644
2754     --- a/sound/firewire/oxfw/oxfw.c
2755     +++ b/sound/firewire/oxfw/oxfw.c
2756     @@ -175,9 +175,6 @@ static int detect_quirks(struct snd_oxfw *oxfw)
2757     oxfw->midi_input_ports = 0;
2758     oxfw->midi_output_ports = 0;
2759    
2760     - /* Output stream exists but no data channels are useful. */
2761     - oxfw->has_output = false;
2762     -
2763     return snd_oxfw_scs1x_add(oxfw);
2764     }
2765    
2766     diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
2767     index 789eca17fc60..f2f1d9fd848c 100644
2768     --- a/sound/pci/hda/hda_intel.c
2769     +++ b/sound/pci/hda/hda_intel.c
2770     @@ -1700,9 +1700,6 @@ static int azx_first_init(struct azx *chip)
2771     chip->msi = 0;
2772     }
2773    
2774     - if (azx_acquire_irq(chip, 0) < 0)
2775     - return -EBUSY;
2776     -
2777     pci_set_master(pci);
2778     synchronize_irq(bus->irq);
2779    
2780     @@ -1809,6 +1806,9 @@ static int azx_first_init(struct azx *chip)
2781     return -ENODEV;
2782     }
2783    
2784     + if (azx_acquire_irq(chip, 0) < 0)
2785     + return -EBUSY;
2786     +
2787     strcpy(card->driver, "HDA-Intel");
2788     strlcpy(card->shortname, driver_short_names[chip->driver_type],
2789     sizeof(card->shortname));
2790     diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
2791     index b4d87379d2bc..462341fef5a9 100644
2792     --- a/sound/soc/codecs/cs42xx8.c
2793     +++ b/sound/soc/codecs/cs42xx8.c
2794     @@ -569,6 +569,7 @@ static int cs42xx8_runtime_resume(struct device *dev)
2795     msleep(5);
2796    
2797     regcache_cache_only(cs42xx8->regmap, false);
2798     + regcache_mark_dirty(cs42xx8->regmap);
2799    
2800     ret = regcache_sync(cs42xx8->regmap);
2801     if (ret) {
2802     diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c
2803     index 1d82f68305c3..88a438f6c2de 100644
2804     --- a/sound/soc/fsl/fsl_asrc.c
2805     +++ b/sound/soc/fsl/fsl_asrc.c
2806     @@ -286,8 +286,8 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
2807     return -EINVAL;
2808     }
2809    
2810     - if ((outrate > 8000 && outrate < 30000) &&
2811     - (outrate/inrate > 24 || inrate/outrate > 8)) {
2812     + if ((outrate >= 8000 && outrate <= 30000) &&
2813     + (outrate > 24 * inrate || inrate > 8 * outrate)) {
2814     pair_err("exceed supported ratio range [1/24, 8] for \
2815     inrate/outrate: %d/%d\n", inrate, outrate);
2816     return -EINVAL;
2817     diff --git a/tools/objtool/check.c b/tools/objtool/check.c
2818     index ae3446768181..95326c6a7a24 100644
2819     --- a/tools/objtool/check.c
2820     +++ b/tools/objtool/check.c
2821     @@ -28,6 +28,8 @@
2822     #include <linux/hashtable.h>
2823     #include <linux/kernel.h>
2824    
2825     +#define FAKE_JUMP_OFFSET -1
2826     +
2827     struct alternative {
2828     struct list_head list;
2829     struct instruction *insn;
2830     @@ -498,7 +500,7 @@ static int add_jump_destinations(struct objtool_file *file)
2831     insn->type != INSN_JUMP_UNCONDITIONAL)
2832     continue;
2833    
2834     - if (insn->ignore)
2835     + if (insn->ignore || insn->offset == FAKE_JUMP_OFFSET)
2836     continue;
2837    
2838     rela = find_rela_by_dest_range(insn->sec, insn->offset,
2839     @@ -645,10 +647,10 @@ static int handle_group_alt(struct objtool_file *file,
2840     clear_insn_state(&fake_jump->state);
2841    
2842     fake_jump->sec = special_alt->new_sec;
2843     - fake_jump->offset = -1;
2844     + fake_jump->offset = FAKE_JUMP_OFFSET;
2845     fake_jump->type = INSN_JUMP_UNCONDITIONAL;
2846     fake_jump->jump_dest = list_next_entry(last_orig_insn, list);
2847     - fake_jump->ignore = true;
2848     + fake_jump->func = orig_insn->func;
2849     }
2850    
2851     if (!special_alt->new_len) {
2852     diff --git a/tools/perf/arch/s390/util/machine.c b/tools/perf/arch/s390/util/machine.c
2853     index b9a95a1a8e69..d3d1452021d4 100644
2854     --- a/tools/perf/arch/s390/util/machine.c
2855     +++ b/tools/perf/arch/s390/util/machine.c
2856     @@ -4,16 +4,19 @@
2857     #include "util.h"
2858     #include "machine.h"
2859     #include "api/fs/fs.h"
2860     +#include "debug.h"
2861    
2862     int arch__fix_module_text_start(u64 *start, const char *name)
2863     {
2864     + u64 m_start = *start;
2865     char path[PATH_MAX];
2866    
2867     snprintf(path, PATH_MAX, "module/%.*s/sections/.text",
2868     (int)strlen(name) - 2, name + 1);
2869     -
2870     - if (sysfs__read_ull(path, (unsigned long long *)start) < 0)
2871     - return -1;
2872     + if (sysfs__read_ull(path, (unsigned long long *)start) < 0) {
2873     + pr_debug2("Using module %s start:%#lx\n", path, m_start);
2874     + *start = m_start;
2875     + }
2876    
2877     return 0;
2878     }
2879     diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
2880     index 7123f4de32cc..226f4312b8f3 100644
2881     --- a/tools/perf/util/data-convert-bt.c
2882     +++ b/tools/perf/util/data-convert-bt.c
2883     @@ -265,7 +265,7 @@ static int string_set_value(struct bt_ctf_field *field, const char *string)
2884     if (i > 0)
2885     strncpy(buffer, string, i);
2886     }
2887     - strncat(buffer + p, numstr, 4);
2888     + memcpy(buffer + p, numstr, 4);
2889     p += 3;
2890     }
2891     }
2892     diff --git a/tools/testing/selftests/netfilter/nft_nat.sh b/tools/testing/selftests/netfilter/nft_nat.sh
2893     index 8ec76681605c..f25f72a75cf3 100755
2894     --- a/tools/testing/selftests/netfilter/nft_nat.sh
2895     +++ b/tools/testing/selftests/netfilter/nft_nat.sh
2896     @@ -23,7 +23,11 @@ ip netns add ns0
2897     ip netns add ns1
2898     ip netns add ns2
2899    
2900     -ip link add veth0 netns ns0 type veth peer name eth0 netns ns1
2901     +ip link add veth0 netns ns0 type veth peer name eth0 netns ns1 > /dev/null 2>&1
2902     +if [ $? -ne 0 ];then
2903     + echo "SKIP: No virtual ethernet pair device support in kernel"
2904     + exit $ksft_skip
2905     +fi
2906     ip link add veth1 netns ns0 type veth peer name eth0 netns ns2
2907    
2908     ip -net ns0 link set lo up
2909     diff --git a/tools/testing/selftests/timers/adjtick.c b/tools/testing/selftests/timers/adjtick.c
2910     index 9887fd538fec..91316ab4b041 100644
2911     --- a/tools/testing/selftests/timers/adjtick.c
2912     +++ b/tools/testing/selftests/timers/adjtick.c
2913     @@ -147,6 +147,7 @@ int check_tick_adj(long tickval)
2914    
2915     eppm = get_ppm_drift();
2916     printf("%lld usec, %lld ppm", systick + (systick * eppm / MILLION), eppm);
2917     + fflush(stdout);
2918    
2919     tx1.modes = 0;
2920     adjtimex(&tx1);
2921     diff --git a/tools/testing/selftests/timers/leapcrash.c b/tools/testing/selftests/timers/leapcrash.c
2922     index a1071bdbdeb7..a77c70b47495 100644
2923     --- a/tools/testing/selftests/timers/leapcrash.c
2924     +++ b/tools/testing/selftests/timers/leapcrash.c
2925     @@ -114,6 +114,7 @@ int main(void)
2926     }
2927     clear_time_state();
2928     printf(".");
2929     + fflush(stdout);
2930     }
2931     printf("[OK]\n");
2932     return ksft_exit_pass();
2933     diff --git a/tools/testing/selftests/timers/mqueue-lat.c b/tools/testing/selftests/timers/mqueue-lat.c
2934     index a2a3924d0b41..efdb62470052 100644
2935     --- a/tools/testing/selftests/timers/mqueue-lat.c
2936     +++ b/tools/testing/selftests/timers/mqueue-lat.c
2937     @@ -113,6 +113,7 @@ int main(int argc, char **argv)
2938     int ret;
2939    
2940     printf("Mqueue latency : ");
2941     + fflush(stdout);
2942    
2943     ret = mqueue_lat_test();
2944     if (ret < 0) {
2945     diff --git a/tools/testing/selftests/timers/nanosleep.c b/tools/testing/selftests/timers/nanosleep.c
2946     index ff942ff7c9b3..2e6e94c02a33 100644
2947     --- a/tools/testing/selftests/timers/nanosleep.c
2948     +++ b/tools/testing/selftests/timers/nanosleep.c
2949     @@ -153,6 +153,7 @@ int main(int argc, char **argv)
2950     continue;
2951    
2952     printf("Nanosleep %-31s ", clockstring(clockid));
2953     + fflush(stdout);
2954    
2955     length = 10;
2956     while (length <= (NSEC_PER_SEC * 10)) {
2957     diff --git a/tools/testing/selftests/timers/nsleep-lat.c b/tools/testing/selftests/timers/nsleep-lat.c
2958     index 2d7898fda0f1..ac06cf10a5c2 100644
2959     --- a/tools/testing/selftests/timers/nsleep-lat.c
2960     +++ b/tools/testing/selftests/timers/nsleep-lat.c
2961     @@ -166,6 +166,7 @@ int main(int argc, char **argv)
2962     continue;
2963    
2964     printf("nsleep latency %-26s ", clockstring(clockid));
2965     + fflush(stdout);
2966    
2967     length = 10;
2968     while (length <= (NSEC_PER_SEC * 10)) {
2969     diff --git a/tools/testing/selftests/timers/raw_skew.c b/tools/testing/selftests/timers/raw_skew.c
2970     index 0ab937a17ebb..4e631da7f956 100644
2971     --- a/tools/testing/selftests/timers/raw_skew.c
2972     +++ b/tools/testing/selftests/timers/raw_skew.c
2973     @@ -124,6 +124,7 @@ int main(int argv, char **argc)
2974     printf("WARNING: ADJ_OFFSET in progress, this will cause inaccurate results\n");
2975    
2976     printf("Estimating clock drift: ");
2977     + fflush(stdout);
2978     sleep(120);
2979    
2980     get_monotonic_and_raw(&mon, &raw);
2981     diff --git a/tools/testing/selftests/timers/set-tai.c b/tools/testing/selftests/timers/set-tai.c
2982     index dc88dbc8831f..3ae76ab483de 100644
2983     --- a/tools/testing/selftests/timers/set-tai.c
2984     +++ b/tools/testing/selftests/timers/set-tai.c
2985     @@ -66,6 +66,7 @@ int main(int argc, char **argv)
2986     printf("tai offset started at %i\n", ret);
2987    
2988     printf("Checking tai offsets can be properly set: ");
2989     + fflush(stdout);
2990     for (i = 1; i <= 60; i++) {
2991     ret = set_tai(i);
2992     ret = get_tai();
2993     diff --git a/tools/testing/selftests/timers/set-tz.c b/tools/testing/selftests/timers/set-tz.c
2994     index f4184928b16b..b038131c9682 100644
2995     --- a/tools/testing/selftests/timers/set-tz.c
2996     +++ b/tools/testing/selftests/timers/set-tz.c
2997     @@ -76,6 +76,7 @@ int main(int argc, char **argv)
2998     printf("tz_minuteswest started at %i, dst at %i\n", min, dst);
2999    
3000     printf("Checking tz_minuteswest can be properly set: ");
3001     + fflush(stdout);
3002     for (i = -15*60; i < 15*60; i += 30) {
3003     ret = set_tz(i, dst);
3004     ret = get_tz_min();
3005     @@ -87,6 +88,7 @@ int main(int argc, char **argv)
3006     printf("[OK]\n");
3007    
3008     printf("Checking invalid tz_minuteswest values are caught: ");
3009     + fflush(stdout);
3010    
3011     if (!set_tz(-15*60-1, dst)) {
3012     printf("[FAILED] %i didn't return failure!\n", -15*60-1);
3013     diff --git a/tools/testing/selftests/timers/threadtest.c b/tools/testing/selftests/timers/threadtest.c
3014     index e632e116f05e..a4bf736dd842 100644
3015     --- a/tools/testing/selftests/timers/threadtest.c
3016     +++ b/tools/testing/selftests/timers/threadtest.c
3017     @@ -175,6 +175,7 @@ int main(int argc, char **argv)
3018     strftime(buf, 255, "%a, %d %b %Y %T %z", localtime(&start));
3019     printf("%s\n", buf);
3020     printf("Testing consistency with %i threads for %ld seconds: ", thread_count, runtime);
3021     + fflush(stdout);
3022    
3023     /* spawn */
3024     for (i = 0; i < thread_count; i++)
3025     diff --git a/tools/testing/selftests/timers/valid-adjtimex.c b/tools/testing/selftests/timers/valid-adjtimex.c
3026     index 60fe3c569bd9..a747645d79f4 100644
3027     --- a/tools/testing/selftests/timers/valid-adjtimex.c
3028     +++ b/tools/testing/selftests/timers/valid-adjtimex.c
3029     @@ -134,6 +134,7 @@ int validate_freq(void)
3030     /* Set the leap second insert flag */
3031    
3032     printf("Testing ADJ_FREQ... ");
3033     + fflush(stdout);
3034     for (i = 0; i < NUM_FREQ_VALID; i++) {
3035     tx.modes = ADJ_FREQUENCY;
3036     tx.freq = valid_freq[i];
3037     @@ -261,6 +262,7 @@ int set_bad_offset(long sec, long usec, int use_nano)
3038     int validate_set_offset(void)
3039     {
3040     printf("Testing ADJ_SETOFFSET... ");
3041     + fflush(stdout);
3042    
3043     /* Test valid values */
3044     if (set_offset(NSEC_PER_SEC - 1, 1))