Magellan Linux

Annotation of /trunk/kernel-alx/patches-4.9/0279-4.9.180-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3356 - (hide annotations) (download)
Tue Jun 18 09:42:08 2019 UTC (5 years ago) by niro
File size: 122555 byte(s)
-linux-4.9.180
1 niro 3356 diff --git a/Makefile b/Makefile
2     index d60795319d8a..0b996e9d2c5f 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 4
7     PATCHLEVEL = 9
8     -SUBLEVEL = 179
9     +SUBLEVEL = 180
10     EXTRAVERSION =
11     NAME = Roaring Lionus
12    
13     diff --git a/arch/arm/include/asm/cp15.h b/arch/arm/include/asm/cp15.h
14     index b74b174ac9fc..b458e4122794 100644
15     --- a/arch/arm/include/asm/cp15.h
16     +++ b/arch/arm/include/asm/cp15.h
17     @@ -67,6 +67,8 @@
18     #define BPIALL __ACCESS_CP15(c7, 0, c5, 6)
19     #define ICIALLU __ACCESS_CP15(c7, 0, c5, 0)
20    
21     +#define CNTVCT __ACCESS_CP15_64(1, c14)
22     +
23     extern unsigned long cr_alignment; /* defined in entry-armv.S */
24    
25     static inline unsigned long get_cr(void)
26     diff --git a/arch/arm/vdso/vgettimeofday.c b/arch/arm/vdso/vgettimeofday.c
27     index 79214d5ff097..3af02d2a0b7f 100644
28     --- a/arch/arm/vdso/vgettimeofday.c
29     +++ b/arch/arm/vdso/vgettimeofday.c
30     @@ -18,9 +18,9 @@
31     #include <linux/compiler.h>
32     #include <linux/hrtimer.h>
33     #include <linux/time.h>
34     -#include <asm/arch_timer.h>
35     #include <asm/barrier.h>
36     #include <asm/bug.h>
37     +#include <asm/cp15.h>
38     #include <asm/page.h>
39     #include <asm/unistd.h>
40     #include <asm/vdso_datapage.h>
41     @@ -123,7 +123,8 @@ static notrace u64 get_ns(struct vdso_data *vdata)
42     u64 cycle_now;
43     u64 nsec;
44    
45     - cycle_now = arch_counter_get_cntvct();
46     + isb();
47     + cycle_now = read_sysreg(CNTVCT);
48    
49     cycle_delta = (cycle_now - vdata->cs_cycle_last) & vdata->cs_mask;
50    
51     diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
52     index 3a30a3994e4a..73e3718356b0 100644
53     --- a/arch/arm64/include/asm/pgtable.h
54     +++ b/arch/arm64/include/asm/pgtable.h
55     @@ -413,6 +413,8 @@ static inline phys_addr_t pmd_page_paddr(pmd_t pmd)
56     return pmd_val(pmd) & PHYS_MASK & (s32)PAGE_MASK;
57     }
58    
59     +static inline void pte_unmap(pte_t *pte) { }
60     +
61     /* Find an entry in the third-level page table. */
62     #define pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
63    
64     @@ -421,7 +423,6 @@ static inline phys_addr_t pmd_page_paddr(pmd_t pmd)
65    
66     #define pte_offset_map(dir,addr) pte_offset_kernel((dir), (addr))
67     #define pte_offset_map_nested(dir,addr) pte_offset_kernel((dir), (addr))
68     -#define pte_unmap(pte) do { } while (0)
69     #define pte_unmap_nested(pte) do { } while (0)
70    
71     #define pte_set_fixmap(addr) ((pte_t *)set_fixmap_offset(FIX_PTE, addr))
72     diff --git a/arch/arm64/include/asm/vdso_datapage.h b/arch/arm64/include/asm/vdso_datapage.h
73     index 2b9a63771eda..f89263c8e11a 100644
74     --- a/arch/arm64/include/asm/vdso_datapage.h
75     +++ b/arch/arm64/include/asm/vdso_datapage.h
76     @@ -38,6 +38,7 @@ struct vdso_data {
77     __u32 tz_minuteswest; /* Whacky timezone stuff */
78     __u32 tz_dsttime;
79     __u32 use_syscall;
80     + __u32 hrtimer_res;
81     };
82    
83     #endif /* !__ASSEMBLY__ */
84     diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c
85     index bd239b1b7a68..95878bea27f9 100644
86     --- a/arch/arm64/kernel/asm-offsets.c
87     +++ b/arch/arm64/kernel/asm-offsets.c
88     @@ -92,7 +92,7 @@ int main(void)
89     DEFINE(CLOCK_REALTIME, CLOCK_REALTIME);
90     DEFINE(CLOCK_MONOTONIC, CLOCK_MONOTONIC);
91     DEFINE(CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_RAW);
92     - DEFINE(CLOCK_REALTIME_RES, MONOTONIC_RES_NSEC);
93     + DEFINE(CLOCK_REALTIME_RES, offsetof(struct vdso_data, hrtimer_res));
94     DEFINE(CLOCK_REALTIME_COARSE, CLOCK_REALTIME_COARSE);
95     DEFINE(CLOCK_MONOTONIC_COARSE,CLOCK_MONOTONIC_COARSE);
96     DEFINE(CLOCK_COARSE_RES, LOW_RES_NSEC);
97     diff --git a/arch/arm64/kernel/cpu_ops.c b/arch/arm64/kernel/cpu_ops.c
98     index e137ceaf5016..82b465207ed0 100644
99     --- a/arch/arm64/kernel/cpu_ops.c
100     +++ b/arch/arm64/kernel/cpu_ops.c
101     @@ -85,6 +85,7 @@ static const char *__init cpu_read_enable_method(int cpu)
102     pr_err("%s: missing enable-method property\n",
103     dn->full_name);
104     }
105     + of_node_put(dn);
106     } else {
107     enable_method = acpi_get_enable_method(cpu);
108     if (!enable_method) {
109     diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
110     index 4bcfe01b5aad..c9b9a5a322eb 100644
111     --- a/arch/arm64/kernel/vdso.c
112     +++ b/arch/arm64/kernel/vdso.c
113     @@ -213,6 +213,9 @@ void update_vsyscall(struct timekeeper *tk)
114     vdso_data->wtm_clock_sec = tk->wall_to_monotonic.tv_sec;
115     vdso_data->wtm_clock_nsec = tk->wall_to_monotonic.tv_nsec;
116    
117     + /* Read without the seqlock held by clock_getres() */
118     + WRITE_ONCE(vdso_data->hrtimer_res, hrtimer_resolution);
119     +
120     if (!use_syscall) {
121     /* tkr_mono.cycle_last == tkr_raw.cycle_last */
122     vdso_data->cs_cycle_last = tk->tkr_mono.cycle_last;
123     diff --git a/arch/arm64/kernel/vdso/gettimeofday.S b/arch/arm64/kernel/vdso/gettimeofday.S
124     index 76320e920965..df829c4346fa 100644
125     --- a/arch/arm64/kernel/vdso/gettimeofday.S
126     +++ b/arch/arm64/kernel/vdso/gettimeofday.S
127     @@ -301,13 +301,14 @@ ENTRY(__kernel_clock_getres)
128     ccmp w0, #CLOCK_MONOTONIC_RAW, #0x4, ne
129     b.ne 1f
130    
131     - ldr x2, 5f
132     + adr vdso_data, _vdso_data
133     + ldr w2, [vdso_data, #CLOCK_REALTIME_RES]
134     b 2f
135     1:
136     cmp w0, #CLOCK_REALTIME_COARSE
137     ccmp w0, #CLOCK_MONOTONIC_COARSE, #0x4, ne
138     b.ne 4f
139     - ldr x2, 6f
140     + ldr x2, 5f
141     2:
142     cbz w1, 3f
143     stp xzr, x2, [x1]
144     @@ -321,8 +322,6 @@ ENTRY(__kernel_clock_getres)
145     svc #0
146     ret
147     5:
148     - .quad CLOCK_REALTIME_RES
149     -6:
150     .quad CLOCK_COARSE_RES
151     .cfi_endproc
152     ENDPROC(__kernel_clock_getres)
153     diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
154     index f5fde8d389c9..3ceec224d3d2 100644
155     --- a/arch/arm64/mm/proc.S
156     +++ b/arch/arm64/mm/proc.S
157     @@ -64,17 +64,18 @@ ENTRY(cpu_do_suspend)
158     mrs x2, tpidr_el0
159     mrs x3, tpidrro_el0
160     mrs x4, contextidr_el1
161     - mrs x5, cpacr_el1
162     - mrs x6, tcr_el1
163     - mrs x7, vbar_el1
164     - mrs x8, mdscr_el1
165     - mrs x9, oslsr_el1
166     - mrs x10, sctlr_el1
167     + mrs x5, osdlr_el1
168     + mrs x6, cpacr_el1
169     + mrs x7, tcr_el1
170     + mrs x8, vbar_el1
171     + mrs x9, mdscr_el1
172     + mrs x10, oslsr_el1
173     + mrs x11, sctlr_el1
174     stp x2, x3, [x0]
175     - stp x4, xzr, [x0, #16]
176     - stp x5, x6, [x0, #32]
177     - stp x7, x8, [x0, #48]
178     - stp x9, x10, [x0, #64]
179     + stp x4, x5, [x0, #16]
180     + stp x6, x7, [x0, #32]
181     + stp x8, x9, [x0, #48]
182     + stp x10, x11, [x0, #64]
183     ret
184     ENDPROC(cpu_do_suspend)
185    
186     @@ -96,8 +97,8 @@ ENTRY(cpu_do_resume)
187     msr cpacr_el1, x6
188    
189     /* Don't change t0sz here, mask those bits when restoring */
190     - mrs x5, tcr_el1
191     - bfi x8, x5, TCR_T0SZ_OFFSET, TCR_TxSZ_WIDTH
192     + mrs x7, tcr_el1
193     + bfi x8, x7, TCR_T0SZ_OFFSET, TCR_TxSZ_WIDTH
194    
195     msr tcr_el1, x8
196     msr vbar_el1, x9
197     @@ -115,6 +116,7 @@ ENTRY(cpu_do_resume)
198     /*
199     * Restore oslsr_el1 by writing oslar_el1
200     */
201     + msr osdlr_el1, x5
202     ubfx x11, x11, #1, #1
203     msr oslar_el1, x11
204     reset_pmuserenr_el0 x0 // Disable PMU access from EL0
205     diff --git a/arch/powerpc/boot/addnote.c b/arch/powerpc/boot/addnote.c
206     index 9d9f6f334d3c..3da3e2b1b51b 100644
207     --- a/arch/powerpc/boot/addnote.c
208     +++ b/arch/powerpc/boot/addnote.c
209     @@ -223,7 +223,11 @@ main(int ac, char **av)
210     PUT_16(E_PHNUM, np + 2);
211    
212     /* write back */
213     - lseek(fd, (long) 0, SEEK_SET);
214     + i = lseek(fd, (long) 0, SEEK_SET);
215     + if (i < 0) {
216     + perror("lseek");
217     + exit(1);
218     + }
219     i = write(fd, buf, n);
220     if (i < 0) {
221     perror("write");
222     diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
223     index 9cad2ed812ab..31e9064ba628 100644
224     --- a/arch/powerpc/mm/numa.c
225     +++ b/arch/powerpc/mm/numa.c
226     @@ -1574,6 +1574,9 @@ int start_topology_update(void)
227     {
228     int rc = 0;
229    
230     + if (!topology_updates_enabled)
231     + return 0;
232     +
233     if (firmware_has_feature(FW_FEATURE_PRRN)) {
234     if (!prrn_enabled) {
235     prrn_enabled = 1;
236     @@ -1603,6 +1606,9 @@ int stop_topology_update(void)
237     {
238     int rc = 0;
239    
240     + if (!topology_updates_enabled)
241     + return 0;
242     +
243     if (prrn_enabled) {
244     prrn_enabled = 0;
245     #ifdef CONFIG_SMP
246     @@ -1648,11 +1654,13 @@ static ssize_t topology_write(struct file *file, const char __user *buf,
247    
248     kbuf[read_len] = '\0';
249    
250     - if (!strncmp(kbuf, "on", 2))
251     + if (!strncmp(kbuf, "on", 2)) {
252     + topology_updates_enabled = true;
253     start_topology_update();
254     - else if (!strncmp(kbuf, "off", 3))
255     + } else if (!strncmp(kbuf, "off", 3)) {
256     stop_topology_update();
257     - else
258     + topology_updates_enabled = false;
259     + } else
260     return -EINVAL;
261    
262     return count;
263     @@ -1667,9 +1675,7 @@ static const struct file_operations topology_ops = {
264    
265     static int topology_update_init(void)
266     {
267     - /* Do not poll for changes if disabled at boot */
268     - if (topology_updates_enabled)
269     - start_topology_update();
270     + start_topology_update();
271    
272     if (!proc_create("powerpc/topology_updates", 0644, NULL, &topology_ops))
273     return -ENOMEM;
274     diff --git a/arch/x86/Makefile b/arch/x86/Makefile
275     index b5226a009973..2996a1d0a410 100644
276     --- a/arch/x86/Makefile
277     +++ b/arch/x86/Makefile
278     @@ -47,7 +47,7 @@ export REALMODE_CFLAGS
279     export BITS
280    
281     ifdef CONFIG_X86_NEED_RELOCS
282     - LDFLAGS_vmlinux := --emit-relocs
283     + LDFLAGS_vmlinux := --emit-relocs --discard-none
284     endif
285    
286     #
287     diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
288     index cb13c0564ea7..9978ea4382bf 100644
289     --- a/arch/x86/ia32/ia32_signal.c
290     +++ b/arch/x86/ia32/ia32_signal.c
291     @@ -60,9 +60,8 @@
292     } while (0)
293    
294     #define RELOAD_SEG(seg) { \
295     - unsigned int pre = GET_SEG(seg); \
296     + unsigned int pre = (seg) | 3; \
297     unsigned int cur = get_user_seg(seg); \
298     - pre |= 3; \
299     if (pre != cur) \
300     set_user_seg(seg, pre); \
301     }
302     @@ -71,6 +70,7 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
303     struct sigcontext_32 __user *sc)
304     {
305     unsigned int tmpflags, err = 0;
306     + u16 gs, fs, es, ds;
307     void __user *buf;
308     u32 tmp;
309    
310     @@ -78,16 +78,10 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
311     current->restart_block.fn = do_no_restart_syscall;
312    
313     get_user_try {
314     - /*
315     - * Reload fs and gs if they have changed in the signal
316     - * handler. This does not handle long fs/gs base changes in
317     - * the handler, but does not clobber them at least in the
318     - * normal case.
319     - */
320     - RELOAD_SEG(gs);
321     - RELOAD_SEG(fs);
322     - RELOAD_SEG(ds);
323     - RELOAD_SEG(es);
324     + gs = GET_SEG(gs);
325     + fs = GET_SEG(fs);
326     + ds = GET_SEG(ds);
327     + es = GET_SEG(es);
328    
329     COPY(di); COPY(si); COPY(bp); COPY(sp); COPY(bx);
330     COPY(dx); COPY(cx); COPY(ip); COPY(ax);
331     @@ -105,6 +99,17 @@ static int ia32_restore_sigcontext(struct pt_regs *regs,
332     buf = compat_ptr(tmp);
333     } get_user_catch(err);
334    
335     + /*
336     + * Reload fs and gs if they have changed in the signal
337     + * handler. This does not handle long fs/gs base changes in
338     + * the handler, but does not clobber them at least in the
339     + * normal case.
340     + */
341     + RELOAD_SEG(gs);
342     + RELOAD_SEG(fs);
343     + RELOAD_SEG(ds);
344     + RELOAD_SEG(es);
345     +
346     err |= fpu__restore_sig(buf, 1);
347    
348     force_iret();
349     diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
350     index d9ad49ca3cbe..e348bee411e3 100644
351     --- a/arch/x86/kernel/cpu/mcheck/mce.c
352     +++ b/arch/x86/kernel/cpu/mcheck/mce.c
353     @@ -673,20 +673,50 @@ bool machine_check_poll(enum mcp_flags flags, mce_banks_t *b)
354    
355     barrier();
356     m.status = mce_rdmsrl(msr_ops.status(i));
357     +
358     + /* If this entry is not valid, ignore it */
359     if (!(m.status & MCI_STATUS_VAL))
360     continue;
361    
362    
363     /*
364     - * Uncorrected or signalled events are handled by the exception
365     - * handler when it is enabled, so don't process those here.
366     - *
367     - * TBD do the same check for MCI_STATUS_EN here?
368     + * If we are logging everything (at CPU online) or this
369     + * is a corrected error, then we must log it.
370     */
371     - if (!(flags & MCP_UC) &&
372     - (m.status & (mca_cfg.ser ? MCI_STATUS_S : MCI_STATUS_UC)))
373     - continue;
374     + if ((flags & MCP_UC) || !(m.status & MCI_STATUS_UC))
375     + goto log_it;
376     +
377     + /*
378     + * Newer Intel systems that support software error
379     + * recovery need to make additional checks. Other
380     + * CPUs should skip over uncorrected errors, but log
381     + * everything else.
382     + */
383     + if (!mca_cfg.ser) {
384     + if (m.status & MCI_STATUS_UC)
385     + continue;
386     + goto log_it;
387     + }
388     +
389     + /* Log "not enabled" (speculative) errors */
390     + if (!(m.status & MCI_STATUS_EN))
391     + goto log_it;
392     +
393     + /*
394     + * Log UCNA (SDM: 15.6.3 "UCR Error Classification")
395     + * UC == 1 && PCC == 0 && S == 0
396     + */
397     + if (!(m.status & MCI_STATUS_PCC) && !(m.status & MCI_STATUS_S))
398     + goto log_it;
399     +
400     + /*
401     + * Skip anything else. Presumption is that our read of this
402     + * bank is racing with a machine check. Leave the log alone
403     + * for do_machine_check() to deal with it.
404     + */
405     + continue;
406    
407     +log_it:
408     error_seen = true;
409    
410     mce_read_aux(&m, i);
411     diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
412     index bcd1b82c86e8..005e9a77a664 100644
413     --- a/arch/x86/kernel/irq_64.c
414     +++ b/arch/x86/kernel/irq_64.c
415     @@ -25,9 +25,18 @@ int sysctl_panic_on_stackoverflow;
416     /*
417     * Probabilistic stack overflow check:
418     *
419     - * Only check the stack in process context, because everything else
420     - * runs on the big interrupt stacks. Checking reliably is too expensive,
421     - * so we just check from interrupts.
422     + * Regular device interrupts can enter on the following stacks:
423     + *
424     + * - User stack
425     + *
426     + * - Kernel task stack
427     + *
428     + * - Interrupt stack if a device driver reenables interrupts
429     + * which should only happen in really old drivers.
430     + *
431     + * - Debug IST stack
432     + *
433     + * All other contexts are invalid.
434     */
435     static inline void stack_overflow_check(struct pt_regs *regs)
436     {
437     @@ -52,8 +61,8 @@ static inline void stack_overflow_check(struct pt_regs *regs)
438     return;
439    
440     oist = this_cpu_ptr(&orig_ist);
441     - estack_top = (u64)oist->ist[0] - EXCEPTION_STKSZ + STACK_TOP_MARGIN;
442     - estack_bottom = (u64)oist->ist[N_EXCEPTION_STACKS - 1];
443     + estack_bottom = (u64)oist->ist[DEBUG_STACK];
444     + estack_top = estack_bottom - DEBUG_STKSZ + STACK_TOP_MARGIN;
445     if (regs->sp >= estack_top && regs->sp <= estack_bottom)
446     return;
447    
448     diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
449     index b1a5d252d482..ca010dfb9682 100644
450     --- a/arch/x86/kernel/signal.c
451     +++ b/arch/x86/kernel/signal.c
452     @@ -129,16 +129,6 @@ static int restore_sigcontext(struct pt_regs *regs,
453     COPY_SEG_CPL3(cs);
454     COPY_SEG_CPL3(ss);
455    
456     -#ifdef CONFIG_X86_64
457     - /*
458     - * Fix up SS if needed for the benefit of old DOSEMU and
459     - * CRIU.
460     - */
461     - if (unlikely(!(uc_flags & UC_STRICT_RESTORE_SS) &&
462     - user_64bit_mode(regs)))
463     - force_valid_ss(regs);
464     -#endif
465     -
466     get_user_ex(tmpflags, &sc->flags);
467     regs->flags = (regs->flags & ~FIX_EFLAGS) | (tmpflags & FIX_EFLAGS);
468     regs->orig_ax = -1; /* disable syscall checks */
469     @@ -147,6 +137,15 @@ static int restore_sigcontext(struct pt_regs *regs,
470     buf = (void __user *)buf_val;
471     } get_user_catch(err);
472    
473     +#ifdef CONFIG_X86_64
474     + /*
475     + * Fix up SS if needed for the benefit of old DOSEMU and
476     + * CRIU.
477     + */
478     + if (unlikely(!(uc_flags & UC_STRICT_RESTORE_SS) && user_64bit_mode(regs)))
479     + force_valid_ss(regs);
480     +#endif
481     +
482     err |= fpu__restore_sig(buf, IS_ENABLED(CONFIG_X86_32));
483    
484     force_iret();
485     @@ -458,6 +457,7 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
486     {
487     struct rt_sigframe __user *frame;
488     void __user *fp = NULL;
489     + unsigned long uc_flags;
490     int err = 0;
491    
492     frame = get_sigframe(&ksig->ka, regs, sizeof(struct rt_sigframe), &fp);
493     @@ -470,9 +470,11 @@ static int __setup_rt_frame(int sig, struct ksignal *ksig,
494     return -EFAULT;
495     }
496    
497     + uc_flags = frame_uc_flags(regs);
498     +
499     put_user_try {
500     /* Create the ucontext. */
501     - put_user_ex(frame_uc_flags(regs), &frame->uc.uc_flags);
502     + put_user_ex(uc_flags, &frame->uc.uc_flags);
503     put_user_ex(0, &frame->uc.uc_link);
504     save_altstack_ex(&frame->uc.uc_stack, regs->sp);
505    
506     @@ -538,6 +540,7 @@ static int x32_setup_rt_frame(struct ksignal *ksig,
507     {
508     #ifdef CONFIG_X86_X32_ABI
509     struct rt_sigframe_x32 __user *frame;
510     + unsigned long uc_flags;
511     void __user *restorer;
512     int err = 0;
513     void __user *fpstate = NULL;
514     @@ -552,9 +555,11 @@ static int x32_setup_rt_frame(struct ksignal *ksig,
515     return -EFAULT;
516     }
517    
518     + uc_flags = frame_uc_flags(regs);
519     +
520     put_user_try {
521     /* Create the ucontext. */
522     - put_user_ex(frame_uc_flags(regs), &frame->uc.uc_flags);
523     + put_user_ex(uc_flags, &frame->uc.uc_flags);
524     put_user_ex(0, &frame->uc.uc_link);
525     compat_save_altstack_ex(&frame->uc.uc_stack, regs->sp);
526     put_user_ex(0, &frame->uc.uc__pad0);
527     diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
528     index 55f04875293f..51b772f9d886 100644
529     --- a/arch/x86/kernel/vmlinux.lds.S
530     +++ b/arch/x86/kernel/vmlinux.lds.S
531     @@ -111,11 +111,11 @@ SECTIONS
532     *(.text.__x86.indirect_thunk)
533     __indirect_thunk_end = .;
534     #endif
535     -
536     - /* End of text section */
537     - _etext = .;
538     } :text = 0x9090
539    
540     + /* End of text section */
541     + _etext = .;
542     +
543     NOTES :text :note
544    
545     EXCEPTION_TABLE(16) :text = 0x9090
546     diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
547     index 9338136a6a23..f7a7b98b3271 100644
548     --- a/arch/x86/kvm/svm.c
549     +++ b/arch/x86/kvm/svm.c
550     @@ -1518,7 +1518,11 @@ static void avic_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
551     if (!kvm_vcpu_apicv_active(vcpu))
552     return;
553    
554     - if (WARN_ON(h_physical_id >= AVIC_MAX_PHYSICAL_ID_COUNT))
555     + /*
556     + * Since the host physical APIC id is 8 bits,
557     + * we can support host APIC ID upto 255.
558     + */
559     + if (WARN_ON(h_physical_id > AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK))
560     return;
561    
562     entry = READ_ONCE(*(svm->avic_physical_id_cache));
563     diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
564     index 1f32c4e32a00..72efecc4288b 100644
565     --- a/arch/x86/kvm/x86.c
566     +++ b/arch/x86/kvm/x86.c
567     @@ -1109,7 +1109,7 @@ static int set_efer(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
568     u64 efer = msr_info->data;
569    
570     if (efer & efer_reserved_bits)
571     - return false;
572     + return 1;
573    
574     if (!msr_info->host_initiated) {
575     if (!__kvm_valid_efer(vcpu, efer))
576     diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
577     index 5c419b8f99a0..c140198d9fa5 100644
578     --- a/arch/x86/mm/fault.c
579     +++ b/arch/x86/mm/fault.c
580     @@ -430,8 +430,6 @@ static noinline int vmalloc_fault(unsigned long address)
581     if (!(address >= VMALLOC_START && address < VMALLOC_END))
582     return -1;
583    
584     - WARN_ON_ONCE(in_nmi());
585     -
586     /*
587     * Copy kernel mappings over when needed. This can also
588     * happen within a race in page table update. In the later
589     diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
590     index 98517216879d..a2714890fe43 100644
591     --- a/drivers/base/power/main.c
592     +++ b/drivers/base/power/main.c
593     @@ -1383,6 +1383,10 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
594     if (dev->power.syscore)
595     goto Complete;
596    
597     + /* Avoid direct_complete to let wakeup_path propagate. */
598     + if (device_may_wakeup(dev) || dev->power.wakeup_path)
599     + dev->power.direct_complete = false;
600     +
601     if (dev->power.direct_complete) {
602     if (pm_runtime_status_suspended(dev)) {
603     pm_runtime_disable(dev);
604     diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
605     index 8c0017d48571..800ced0a5a24 100644
606     --- a/drivers/char/virtio_console.c
607     +++ b/drivers/char/virtio_console.c
608     @@ -75,7 +75,7 @@ struct ports_driver_data {
609     /* All the console devices handled by this driver */
610     struct list_head consoles;
611     };
612     -static struct ports_driver_data pdrvdata;
613     +static struct ports_driver_data pdrvdata = { .next_vtermno = 1};
614    
615     static DEFINE_SPINLOCK(pdrvdata_lock);
616     static DECLARE_COMPLETION(early_console_added);
617     @@ -1425,6 +1425,7 @@ static int add_port(struct ports_device *portdev, u32 id)
618     port->async_queue = NULL;
619    
620     port->cons.ws.ws_row = port->cons.ws.ws_col = 0;
621     + port->cons.vtermno = 0;
622    
623     port->host_connected = port->guest_connected = false;
624     port->stats = (struct port_stats) { 0 };
625     diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
626     index a38a23f0b3f4..e917521a3ef9 100644
627     --- a/drivers/cpufreq/cpufreq.c
628     +++ b/drivers/cpufreq/cpufreq.c
629     @@ -1065,6 +1065,7 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu)
630     cpufreq_global_kobject, "policy%u", cpu);
631     if (ret) {
632     pr_err("%s: failed to init policy->kobj: %d\n", __func__, ret);
633     + kobject_put(&policy->kobj);
634     goto err_free_real_cpus;
635     }
636    
637     diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
638     index 38d1a8216084..32c9524a6ec5 100644
639     --- a/drivers/cpufreq/cpufreq_governor.c
640     +++ b/drivers/cpufreq/cpufreq_governor.c
641     @@ -449,6 +449,8 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy)
642     /* Failure, so roll back. */
643     pr_err("initialization failed (dbs_data kobject init error %d)\n", ret);
644    
645     + kobject_put(&dbs_data->attr_set.kobj);
646     +
647     policy->governor_data = NULL;
648    
649     if (!have_governor_per_policy())
650     diff --git a/drivers/cpufreq/pasemi-cpufreq.c b/drivers/cpufreq/pasemi-cpufreq.c
651     index 35dd4d7ffee0..58c933f48300 100644
652     --- a/drivers/cpufreq/pasemi-cpufreq.c
653     +++ b/drivers/cpufreq/pasemi-cpufreq.c
654     @@ -146,6 +146,7 @@ static int pas_cpufreq_cpu_init(struct cpufreq_policy *policy)
655    
656     cpu = of_get_cpu_node(policy->cpu, NULL);
657    
658     + of_node_put(cpu);
659     if (!cpu)
660     goto out;
661    
662     diff --git a/drivers/cpufreq/pmac32-cpufreq.c b/drivers/cpufreq/pmac32-cpufreq.c
663     index ff44016ea031..641f8021855a 100644
664     --- a/drivers/cpufreq/pmac32-cpufreq.c
665     +++ b/drivers/cpufreq/pmac32-cpufreq.c
666     @@ -551,6 +551,7 @@ static int pmac_cpufreq_init_7447A(struct device_node *cpunode)
667     volt_gpio_np = of_find_node_by_name(NULL, "cpu-vcore-select");
668     if (volt_gpio_np)
669     voltage_gpio = read_gpio(volt_gpio_np);
670     + of_node_put(volt_gpio_np);
671     if (!voltage_gpio){
672     pr_err("missing cpu-vcore-select gpio\n");
673     return 1;
674     @@ -587,6 +588,7 @@ static int pmac_cpufreq_init_750FX(struct device_node *cpunode)
675     if (volt_gpio_np)
676     voltage_gpio = read_gpio(volt_gpio_np);
677    
678     + of_node_put(volt_gpio_np);
679     pvr = mfspr(SPRN_PVR);
680     has_cpu_l2lve = !((pvr & 0xf00) == 0x100);
681    
682     diff --git a/drivers/cpufreq/ppc_cbe_cpufreq.c b/drivers/cpufreq/ppc_cbe_cpufreq.c
683     index 5a4c5a639f61..2eaeebcc93af 100644
684     --- a/drivers/cpufreq/ppc_cbe_cpufreq.c
685     +++ b/drivers/cpufreq/ppc_cbe_cpufreq.c
686     @@ -86,6 +86,7 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy)
687     if (!cbe_get_cpu_pmd_regs(policy->cpu) ||
688     !cbe_get_cpu_mic_tm_regs(policy->cpu)) {
689     pr_info("invalid CBE regs pointers for cpufreq\n");
690     + of_node_put(cpu);
691     return -EINVAL;
692     }
693    
694     diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-hash.c b/drivers/crypto/sunxi-ss/sun4i-ss-hash.c
695     index 0de2f62d51ff..ec16ec2e284d 100644
696     --- a/drivers/crypto/sunxi-ss/sun4i-ss-hash.c
697     +++ b/drivers/crypto/sunxi-ss/sun4i-ss-hash.c
698     @@ -250,7 +250,10 @@ static int sun4i_hash(struct ahash_request *areq)
699     }
700     } else {
701     /* Since we have the flag final, we can go up to modulo 4 */
702     - end = ((areq->nbytes + op->len) / 4) * 4 - op->len;
703     + if (areq->nbytes < 4)
704     + end = 0;
705     + else
706     + end = ((areq->nbytes + op->len) / 4) * 4 - op->len;
707     }
708    
709     /* TODO if SGlen % 4 and op->len == 0 then DMA */
710     diff --git a/drivers/crypto/vmx/aesp8-ppc.pl b/drivers/crypto/vmx/aesp8-ppc.pl
711     index d9281a28818d..930a3f1e3ec0 100644
712     --- a/drivers/crypto/vmx/aesp8-ppc.pl
713     +++ b/drivers/crypto/vmx/aesp8-ppc.pl
714     @@ -1318,7 +1318,7 @@ Loop_ctr32_enc:
715     addi $idx,$idx,16
716     bdnz Loop_ctr32_enc
717    
718     - vadduwm $ivec,$ivec,$one
719     + vadduqm $ivec,$ivec,$one
720     vmr $dat,$inptail
721     lvx $inptail,0,$inp
722     addi $inp,$inp,16
723     diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
724     index b222dd7afe8e..12d904829324 100644
725     --- a/drivers/dma/at_xdmac.c
726     +++ b/drivers/dma/at_xdmac.c
727     @@ -1608,7 +1608,11 @@ static void at_xdmac_tasklet(unsigned long data)
728     struct at_xdmac_desc,
729     xfer_node);
730     dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc);
731     - BUG_ON(!desc->active_xfer);
732     + if (!desc->active_xfer) {
733     + dev_err(chan2dev(&atchan->chan), "Xfer not active: exiting");
734     + spin_unlock_bh(&atchan->lock);
735     + return;
736     + }
737    
738     txd = &desc->tx_dma_desc;
739    
740     diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
741     index 6d7e3cd4aba4..57b375d0de29 100644
742     --- a/drivers/dma/pl330.c
743     +++ b/drivers/dma/pl330.c
744     @@ -1020,6 +1020,7 @@ static void _stop(struct pl330_thread *thrd)
745     {
746     void __iomem *regs = thrd->dmac->base;
747     u8 insn[6] = {0, 0, 0, 0, 0, 0};
748     + u32 inten = readl(regs + INTEN);
749    
750     if (_state(thrd) == PL330_STATE_FAULT_COMPLETING)
751     UNTIL(thrd, PL330_STATE_FAULTING | PL330_STATE_KILLING);
752     @@ -1032,10 +1033,13 @@ static void _stop(struct pl330_thread *thrd)
753    
754     _emit_KILL(0, insn);
755    
756     - /* Stop generating interrupts for SEV */
757     - writel(readl(regs + INTEN) & ~(1 << thrd->ev), regs + INTEN);
758     -
759     _execute_DBGINSN(thrd, insn, is_manager(thrd));
760     +
761     + /* clear the event */
762     + if (inten & (1 << thrd->ev))
763     + writel(1 << thrd->ev, regs + INTCLR);
764     + /* Stop generating interrupts for SEV */
765     + writel(inten & ~(1 << thrd->ev), regs + INTEN);
766     }
767    
768     /* Start doing req 'idx' of thread 'thrd' */
769     diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c
770     index b10cbaa82ff5..e9e46a520745 100644
771     --- a/drivers/dma/tegra210-adma.c
772     +++ b/drivers/dma/tegra210-adma.c
773     @@ -22,7 +22,6 @@
774     #include <linux/of_device.h>
775     #include <linux/of_dma.h>
776     #include <linux/of_irq.h>
777     -#include <linux/pm_clock.h>
778     #include <linux/pm_runtime.h>
779     #include <linux/slab.h>
780    
781     @@ -141,6 +140,7 @@ struct tegra_adma {
782     struct dma_device dma_dev;
783     struct device *dev;
784     void __iomem *base_addr;
785     + struct clk *ahub_clk;
786     unsigned int nr_channels;
787     unsigned long rx_requests_reserved;
788     unsigned long tx_requests_reserved;
789     @@ -637,8 +637,9 @@ static int tegra_adma_runtime_suspend(struct device *dev)
790     struct tegra_adma *tdma = dev_get_drvdata(dev);
791    
792     tdma->global_cmd = tdma_read(tdma, ADMA_GLOBAL_CMD);
793     + clk_disable_unprepare(tdma->ahub_clk);
794    
795     - return pm_clk_suspend(dev);
796     + return 0;
797     }
798    
799     static int tegra_adma_runtime_resume(struct device *dev)
800     @@ -646,10 +647,11 @@ static int tegra_adma_runtime_resume(struct device *dev)
801     struct tegra_adma *tdma = dev_get_drvdata(dev);
802     int ret;
803    
804     - ret = pm_clk_resume(dev);
805     - if (ret)
806     + ret = clk_prepare_enable(tdma->ahub_clk);
807     + if (ret) {
808     + dev_err(dev, "ahub clk_enable failed: %d\n", ret);
809     return ret;
810     -
811     + }
812     tdma_write(tdma, ADMA_GLOBAL_CMD, tdma->global_cmd);
813    
814     return 0;
815     @@ -692,13 +694,11 @@ static int tegra_adma_probe(struct platform_device *pdev)
816     if (IS_ERR(tdma->base_addr))
817     return PTR_ERR(tdma->base_addr);
818    
819     - ret = pm_clk_create(&pdev->dev);
820     - if (ret)
821     - return ret;
822     -
823     - ret = of_pm_clk_add_clk(&pdev->dev, "d_audio");
824     - if (ret)
825     - goto clk_destroy;
826     + tdma->ahub_clk = devm_clk_get(&pdev->dev, "d_audio");
827     + if (IS_ERR(tdma->ahub_clk)) {
828     + dev_err(&pdev->dev, "Error: Missing ahub controller clock\n");
829     + return PTR_ERR(tdma->ahub_clk);
830     + }
831    
832     pm_runtime_enable(&pdev->dev);
833    
834     @@ -775,8 +775,6 @@ rpm_put:
835     pm_runtime_put_sync(&pdev->dev);
836     rpm_disable:
837     pm_runtime_disable(&pdev->dev);
838     -clk_destroy:
839     - pm_clk_destroy(&pdev->dev);
840    
841     return ret;
842     }
843     @@ -786,6 +784,7 @@ static int tegra_adma_remove(struct platform_device *pdev)
844     struct tegra_adma *tdma = platform_get_drvdata(pdev);
845     int i;
846    
847     + of_dma_controller_free(pdev->dev.of_node);
848     dma_async_device_unregister(&tdma->dma_dev);
849    
850     for (i = 0; i < tdma->nr_channels; ++i)
851     @@ -793,7 +792,6 @@ static int tegra_adma_remove(struct platform_device *pdev)
852    
853     pm_runtime_put_sync(&pdev->dev);
854     pm_runtime_disable(&pdev->dev);
855     - pm_clk_destroy(&pdev->dev);
856    
857     return 0;
858     }
859     diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
860     index 56e6c4c7c60d..4c0b6df8b5dd 100644
861     --- a/drivers/extcon/extcon-arizona.c
862     +++ b/drivers/extcon/extcon-arizona.c
863     @@ -1684,6 +1684,16 @@ static int arizona_extcon_remove(struct platform_device *pdev)
864     struct arizona_extcon_info *info = platform_get_drvdata(pdev);
865     struct arizona *arizona = info->arizona;
866     int jack_irq_rise, jack_irq_fall;
867     + bool change;
868     +
869     + regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1,
870     + ARIZONA_MICD_ENA, 0,
871     + &change);
872     +
873     + if (change) {
874     + regulator_disable(info->micvdd);
875     + pm_runtime_put(info->dev);
876     + }
877    
878     gpiod_put(info->micd_pol_gpio);
879    
880     diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
881     index c37b7b5f1dd3..921f7f690ae9 100644
882     --- a/drivers/gpu/drm/drm_fops.c
883     +++ b/drivers/gpu/drm/drm_fops.c
884     @@ -515,6 +515,7 @@ put_back_event:
885     file_priv->event_space -= length;
886     list_add(&e->link, &file_priv->event_list);
887     spin_unlock_irq(&dev->event_lock);
888     + wake_up_interruptible(&file_priv->event_wait);
889     break;
890     }
891    
892     diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
893     index 70597854397f..ceb4df96e0d5 100644
894     --- a/drivers/hid/hid-core.c
895     +++ b/drivers/hid/hid-core.c
896     @@ -200,13 +200,14 @@ static unsigned hid_lookup_collection(struct hid_parser *parser, unsigned type)
897     * Add a usage to the temporary parser table.
898     */
899    
900     -static int hid_add_usage(struct hid_parser *parser, unsigned usage)
901     +static int hid_add_usage(struct hid_parser *parser, unsigned usage, u8 size)
902     {
903     if (parser->local.usage_index >= HID_MAX_USAGES) {
904     hid_err(parser->device, "usage index exceeded\n");
905     return -1;
906     }
907     parser->local.usage[parser->local.usage_index] = usage;
908     + parser->local.usage_size[parser->local.usage_index] = size;
909     parser->local.collection_index[parser->local.usage_index] =
910     parser->collection_stack_ptr ?
911     parser->collection_stack[parser->collection_stack_ptr - 1] : 0;
912     @@ -463,10 +464,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
913     return 0;
914     }
915    
916     - if (item->size <= 2)
917     - data = (parser->global.usage_page << 16) + data;
918     -
919     - return hid_add_usage(parser, data);
920     + return hid_add_usage(parser, data, item->size);
921    
922     case HID_LOCAL_ITEM_TAG_USAGE_MINIMUM:
923    
924     @@ -475,9 +473,6 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
925     return 0;
926     }
927    
928     - if (item->size <= 2)
929     - data = (parser->global.usage_page << 16) + data;
930     -
931     parser->local.usage_minimum = data;
932     return 0;
933    
934     @@ -488,9 +483,6 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
935     return 0;
936     }
937    
938     - if (item->size <= 2)
939     - data = (parser->global.usage_page << 16) + data;
940     -
941     count = data - parser->local.usage_minimum;
942     if (count + parser->local.usage_index >= HID_MAX_USAGES) {
943     /*
944     @@ -510,7 +502,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
945     }
946    
947     for (n = parser->local.usage_minimum; n <= data; n++)
948     - if (hid_add_usage(parser, n)) {
949     + if (hid_add_usage(parser, n, item->size)) {
950     dbg_hid("hid_add_usage failed\n");
951     return -1;
952     }
953     @@ -524,6 +516,22 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
954     return 0;
955     }
956    
957     +/*
958     + * Concatenate Usage Pages into Usages where relevant:
959     + * As per specification, 6.2.2.8: "When the parser encounters a main item it
960     + * concatenates the last declared Usage Page with a Usage to form a complete
961     + * usage value."
962     + */
963     +
964     +static void hid_concatenate_usage_page(struct hid_parser *parser)
965     +{
966     + int i;
967     +
968     + for (i = 0; i < parser->local.usage_index; i++)
969     + if (parser->local.usage_size[i] <= 2)
970     + parser->local.usage[i] += parser->global.usage_page << 16;
971     +}
972     +
973     /*
974     * Process a main item.
975     */
976     @@ -533,6 +541,8 @@ static int hid_parser_main(struct hid_parser *parser, struct hid_item *item)
977     __u32 data;
978     int ret;
979    
980     + hid_concatenate_usage_page(parser);
981     +
982     data = item_udata(item);
983    
984     switch (item->tag) {
985     @@ -746,6 +756,8 @@ static int hid_scan_main(struct hid_parser *parser, struct hid_item *item)
986     __u32 data;
987     int i;
988    
989     + hid_concatenate_usage_page(parser);
990     +
991     data = item_udata(item);
992    
993     switch (item->tag) {
994     diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
995     index 3198faf5cff4..38d9deb03d16 100644
996     --- a/drivers/hid/hid-logitech-hidpp.c
997     +++ b/drivers/hid/hid-logitech-hidpp.c
998     @@ -449,13 +449,16 @@ static int hidpp_root_get_feature(struct hidpp_device *hidpp, u16 feature,
999    
1000     static int hidpp_root_get_protocol_version(struct hidpp_device *hidpp)
1001     {
1002     + const u8 ping_byte = 0x5a;
1003     + u8 ping_data[3] = { 0, 0, ping_byte };
1004     struct hidpp_report response;
1005     int ret;
1006    
1007     - ret = hidpp_send_fap_command_sync(hidpp,
1008     + ret = hidpp_send_rap_command_sync(hidpp,
1009     + REPORT_ID_HIDPP_SHORT,
1010     HIDPP_PAGE_ROOT_IDX,
1011     CMD_ROOT_GET_PROTOCOL_VERSION,
1012     - NULL, 0, &response);
1013     + ping_data, sizeof(ping_data), &response);
1014    
1015     if (ret == HIDPP_ERROR_INVALID_SUBID) {
1016     hidpp->protocol_major = 1;
1017     @@ -475,8 +478,14 @@ static int hidpp_root_get_protocol_version(struct hidpp_device *hidpp)
1018     if (ret)
1019     return ret;
1020    
1021     - hidpp->protocol_major = response.fap.params[0];
1022     - hidpp->protocol_minor = response.fap.params[1];
1023     + if (response.rap.params[2] != ping_byte) {
1024     + hid_err(hidpp->hid_dev, "%s: ping mismatch 0x%02x != 0x%02x\n",
1025     + __func__, response.rap.params[2], ping_byte);
1026     + return -EPROTO;
1027     + }
1028     +
1029     + hidpp->protocol_major = response.rap.params[0];
1030     + hidpp->protocol_minor = response.rap.params[1];
1031    
1032     return ret;
1033     }
1034     diff --git a/drivers/hwmon/f71805f.c b/drivers/hwmon/f71805f.c
1035     index facd05cda26d..e8c089886427 100644
1036     --- a/drivers/hwmon/f71805f.c
1037     +++ b/drivers/hwmon/f71805f.c
1038     @@ -96,17 +96,23 @@ superio_select(int base, int ld)
1039     outb(ld, base + 1);
1040     }
1041    
1042     -static inline void
1043     +static inline int
1044     superio_enter(int base)
1045     {
1046     + if (!request_muxed_region(base, 2, DRVNAME))
1047     + return -EBUSY;
1048     +
1049     outb(0x87, base);
1050     outb(0x87, base);
1051     +
1052     + return 0;
1053     }
1054    
1055     static inline void
1056     superio_exit(int base)
1057     {
1058     outb(0xaa, base);
1059     + release_region(base, 2);
1060     }
1061    
1062     /*
1063     @@ -1561,7 +1567,7 @@ exit:
1064     static int __init f71805f_find(int sioaddr, unsigned short *address,
1065     struct f71805f_sio_data *sio_data)
1066     {
1067     - int err = -ENODEV;
1068     + int err;
1069     u16 devid;
1070    
1071     static const char * const names[] = {
1072     @@ -1569,8 +1575,11 @@ static int __init f71805f_find(int sioaddr, unsigned short *address,
1073     "F71872F/FG or F71806F/FG",
1074     };
1075    
1076     - superio_enter(sioaddr);
1077     + err = superio_enter(sioaddr);
1078     + if (err)
1079     + return err;
1080    
1081     + err = -ENODEV;
1082     devid = superio_inw(sioaddr, SIO_REG_MANID);
1083     if (devid != SIO_FINTEK_ID)
1084     goto exit;
1085     diff --git a/drivers/hwmon/pc87427.c b/drivers/hwmon/pc87427.c
1086     index cb9fdd37bd0d..2b5b8c3de8fc 100644
1087     --- a/drivers/hwmon/pc87427.c
1088     +++ b/drivers/hwmon/pc87427.c
1089     @@ -106,6 +106,13 @@ static const char *logdev_str[2] = { DRVNAME " FMC", DRVNAME " HMC" };
1090     #define LD_IN 1
1091     #define LD_TEMP 1
1092    
1093     +static inline int superio_enter(int sioaddr)
1094     +{
1095     + if (!request_muxed_region(sioaddr, 2, DRVNAME))
1096     + return -EBUSY;
1097     + return 0;
1098     +}
1099     +
1100     static inline void superio_outb(int sioaddr, int reg, int val)
1101     {
1102     outb(reg, sioaddr);
1103     @@ -122,6 +129,7 @@ static inline void superio_exit(int sioaddr)
1104     {
1105     outb(0x02, sioaddr);
1106     outb(0x02, sioaddr + 1);
1107     + release_region(sioaddr, 2);
1108     }
1109    
1110     /*
1111     @@ -1220,7 +1228,11 @@ static int __init pc87427_find(int sioaddr, struct pc87427_sio_data *sio_data)
1112     {
1113     u16 val;
1114     u8 cfg, cfg_b;
1115     - int i, err = 0;
1116     + int i, err;
1117     +
1118     + err = superio_enter(sioaddr);
1119     + if (err)
1120     + return err;
1121    
1122     /* Identify device */
1123     val = force_id ? force_id : superio_inb(sioaddr, SIOREG_DEVID);
1124     diff --git a/drivers/hwmon/smsc47b397.c b/drivers/hwmon/smsc47b397.c
1125     index 6bd200756560..cbdb5c4991ae 100644
1126     --- a/drivers/hwmon/smsc47b397.c
1127     +++ b/drivers/hwmon/smsc47b397.c
1128     @@ -72,14 +72,19 @@ static inline void superio_select(int ld)
1129     superio_outb(0x07, ld);
1130     }
1131    
1132     -static inline void superio_enter(void)
1133     +static inline int superio_enter(void)
1134     {
1135     + if (!request_muxed_region(REG, 2, DRVNAME))
1136     + return -EBUSY;
1137     +
1138     outb(0x55, REG);
1139     + return 0;
1140     }
1141    
1142     static inline void superio_exit(void)
1143     {
1144     outb(0xAA, REG);
1145     + release_region(REG, 2);
1146     }
1147    
1148     #define SUPERIO_REG_DEVID 0x20
1149     @@ -300,8 +305,12 @@ static int __init smsc47b397_find(void)
1150     u8 id, rev;
1151     char *name;
1152     unsigned short addr;
1153     + int err;
1154     +
1155     + err = superio_enter();
1156     + if (err)
1157     + return err;
1158    
1159     - superio_enter();
1160     id = force_id ? force_id : superio_inb(SUPERIO_REG_DEVID);
1161    
1162     switch (id) {
1163     diff --git a/drivers/hwmon/smsc47m1.c b/drivers/hwmon/smsc47m1.c
1164     index 5d323186d2c1..d24df0c50bea 100644
1165     --- a/drivers/hwmon/smsc47m1.c
1166     +++ b/drivers/hwmon/smsc47m1.c
1167     @@ -73,16 +73,21 @@ superio_inb(int reg)
1168     /* logical device for fans is 0x0A */
1169     #define superio_select() superio_outb(0x07, 0x0A)
1170    
1171     -static inline void
1172     +static inline int
1173     superio_enter(void)
1174     {
1175     + if (!request_muxed_region(REG, 2, DRVNAME))
1176     + return -EBUSY;
1177     +
1178     outb(0x55, REG);
1179     + return 0;
1180     }
1181    
1182     static inline void
1183     superio_exit(void)
1184     {
1185     outb(0xAA, REG);
1186     + release_region(REG, 2);
1187     }
1188    
1189     #define SUPERIO_REG_ACT 0x30
1190     @@ -531,8 +536,12 @@ static int __init smsc47m1_find(struct smsc47m1_sio_data *sio_data)
1191     {
1192     u8 val;
1193     unsigned short addr;
1194     + int err;
1195     +
1196     + err = superio_enter();
1197     + if (err)
1198     + return err;
1199    
1200     - superio_enter();
1201     val = force_id ? force_id : superio_inb(SUPERIO_REG_DEVID);
1202    
1203     /*
1204     @@ -608,13 +617,14 @@ static int __init smsc47m1_find(struct smsc47m1_sio_data *sio_data)
1205     static void smsc47m1_restore(const struct smsc47m1_sio_data *sio_data)
1206     {
1207     if ((sio_data->activate & 0x01) == 0) {
1208     - superio_enter();
1209     - superio_select();
1210     -
1211     - pr_info("Disabling device\n");
1212     - superio_outb(SUPERIO_REG_ACT, sio_data->activate);
1213     -
1214     - superio_exit();
1215     + if (!superio_enter()) {
1216     + superio_select();
1217     + pr_info("Disabling device\n");
1218     + superio_outb(SUPERIO_REG_ACT, sio_data->activate);
1219     + superio_exit();
1220     + } else {
1221     + pr_warn("Failed to disable device\n");
1222     + }
1223     }
1224     }
1225    
1226     diff --git a/drivers/hwmon/vt1211.c b/drivers/hwmon/vt1211.c
1227     index 3a6bfa51cb94..95d5e8ec8b7f 100644
1228     --- a/drivers/hwmon/vt1211.c
1229     +++ b/drivers/hwmon/vt1211.c
1230     @@ -226,15 +226,21 @@ static inline void superio_select(int sio_cip, int ldn)
1231     outb(ldn, sio_cip + 1);
1232     }
1233    
1234     -static inline void superio_enter(int sio_cip)
1235     +static inline int superio_enter(int sio_cip)
1236     {
1237     + if (!request_muxed_region(sio_cip, 2, DRVNAME))
1238     + return -EBUSY;
1239     +
1240     outb(0x87, sio_cip);
1241     outb(0x87, sio_cip);
1242     +
1243     + return 0;
1244     }
1245    
1246     static inline void superio_exit(int sio_cip)
1247     {
1248     outb(0xaa, sio_cip);
1249     + release_region(sio_cip, 2);
1250     }
1251    
1252     /* ---------------------------------------------------------------------
1253     @@ -1282,11 +1288,14 @@ EXIT:
1254    
1255     static int __init vt1211_find(int sio_cip, unsigned short *address)
1256     {
1257     - int err = -ENODEV;
1258     + int err;
1259     int devid;
1260    
1261     - superio_enter(sio_cip);
1262     + err = superio_enter(sio_cip);
1263     + if (err)
1264     + return err;
1265    
1266     + err = -ENODEV;
1267     devid = force_id ? force_id : superio_inb(sio_cip, SIO_VT1211_DEVID);
1268     if (devid != SIO_VT1211_ID)
1269     goto EXIT;
1270     diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
1271     index a1d072ecb717..30f200ad6b97 100644
1272     --- a/drivers/iio/adc/ad_sigma_delta.c
1273     +++ b/drivers/iio/adc/ad_sigma_delta.c
1274     @@ -62,7 +62,7 @@ int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg,
1275     struct spi_transfer t = {
1276     .tx_buf = data,
1277     .len = size + 1,
1278     - .cs_change = sigma_delta->bus_locked,
1279     + .cs_change = sigma_delta->keep_cs_asserted,
1280     };
1281     struct spi_message m;
1282     int ret;
1283     @@ -217,6 +217,7 @@ static int ad_sd_calibrate(struct ad_sigma_delta *sigma_delta,
1284    
1285     spi_bus_lock(sigma_delta->spi->master);
1286     sigma_delta->bus_locked = true;
1287     + sigma_delta->keep_cs_asserted = true;
1288     reinit_completion(&sigma_delta->completion);
1289    
1290     ret = ad_sigma_delta_set_mode(sigma_delta, mode);
1291     @@ -234,9 +235,10 @@ static int ad_sd_calibrate(struct ad_sigma_delta *sigma_delta,
1292     ret = 0;
1293     }
1294     out:
1295     + sigma_delta->keep_cs_asserted = false;
1296     + ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_IDLE);
1297     sigma_delta->bus_locked = false;
1298     spi_bus_unlock(sigma_delta->spi->master);
1299     - ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_IDLE);
1300    
1301     return ret;
1302     }
1303     @@ -288,6 +290,7 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev,
1304    
1305     spi_bus_lock(sigma_delta->spi->master);
1306     sigma_delta->bus_locked = true;
1307     + sigma_delta->keep_cs_asserted = true;
1308     reinit_completion(&sigma_delta->completion);
1309    
1310     ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_SINGLE);
1311     @@ -297,9 +300,6 @@ int ad_sigma_delta_single_conversion(struct iio_dev *indio_dev,
1312     ret = wait_for_completion_interruptible_timeout(
1313     &sigma_delta->completion, HZ);
1314    
1315     - sigma_delta->bus_locked = false;
1316     - spi_bus_unlock(sigma_delta->spi->master);
1317     -
1318     if (ret == 0)
1319     ret = -EIO;
1320     if (ret < 0)
1321     @@ -315,7 +315,10 @@ out:
1322     sigma_delta->irq_dis = true;
1323     }
1324    
1325     + sigma_delta->keep_cs_asserted = false;
1326     ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_IDLE);
1327     + sigma_delta->bus_locked = false;
1328     + spi_bus_unlock(sigma_delta->spi->master);
1329     mutex_unlock(&indio_dev->mlock);
1330    
1331     if (ret)
1332     @@ -352,6 +355,8 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)
1333    
1334     spi_bus_lock(sigma_delta->spi->master);
1335     sigma_delta->bus_locked = true;
1336     + sigma_delta->keep_cs_asserted = true;
1337     +
1338     ret = ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_CONTINUOUS);
1339     if (ret)
1340     goto err_unlock;
1341     @@ -380,6 +385,7 @@ static int ad_sd_buffer_postdisable(struct iio_dev *indio_dev)
1342     sigma_delta->irq_dis = true;
1343     }
1344    
1345     + sigma_delta->keep_cs_asserted = false;
1346     ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_IDLE);
1347    
1348     sigma_delta->bus_locked = false;
1349     diff --git a/drivers/iio/common/ssp_sensors/ssp_iio.c b/drivers/iio/common/ssp_sensors/ssp_iio.c
1350     index a3ae165f8d9f..16180e6321bd 100644
1351     --- a/drivers/iio/common/ssp_sensors/ssp_iio.c
1352     +++ b/drivers/iio/common/ssp_sensors/ssp_iio.c
1353     @@ -80,7 +80,7 @@ int ssp_common_process_data(struct iio_dev *indio_dev, void *buf,
1354     unsigned int len, int64_t timestamp)
1355     {
1356     __le32 time;
1357     - int64_t calculated_time;
1358     + int64_t calculated_time = 0;
1359     struct ssp_sensor_data *spd = iio_priv(indio_dev);
1360    
1361     if (indio_dev->scan_bytes == 0)
1362     diff --git a/drivers/iio/magnetometer/hmc5843_i2c.c b/drivers/iio/magnetometer/hmc5843_i2c.c
1363     index 3de7f4426ac4..86abba5827a2 100644
1364     --- a/drivers/iio/magnetometer/hmc5843_i2c.c
1365     +++ b/drivers/iio/magnetometer/hmc5843_i2c.c
1366     @@ -58,8 +58,13 @@ static const struct regmap_config hmc5843_i2c_regmap_config = {
1367     static int hmc5843_i2c_probe(struct i2c_client *cli,
1368     const struct i2c_device_id *id)
1369     {
1370     + struct regmap *regmap = devm_regmap_init_i2c(cli,
1371     + &hmc5843_i2c_regmap_config);
1372     + if (IS_ERR(regmap))
1373     + return PTR_ERR(regmap);
1374     +
1375     return hmc5843_common_probe(&cli->dev,
1376     - devm_regmap_init_i2c(cli, &hmc5843_i2c_regmap_config),
1377     + regmap,
1378     id->driver_data, id->name);
1379     }
1380    
1381     diff --git a/drivers/iio/magnetometer/hmc5843_spi.c b/drivers/iio/magnetometer/hmc5843_spi.c
1382     index 535f03a70d63..79b2b707f90e 100644
1383     --- a/drivers/iio/magnetometer/hmc5843_spi.c
1384     +++ b/drivers/iio/magnetometer/hmc5843_spi.c
1385     @@ -58,6 +58,7 @@ static const struct regmap_config hmc5843_spi_regmap_config = {
1386     static int hmc5843_spi_probe(struct spi_device *spi)
1387     {
1388     int ret;
1389     + struct regmap *regmap;
1390     const struct spi_device_id *id = spi_get_device_id(spi);
1391    
1392     spi->mode = SPI_MODE_3;
1393     @@ -67,8 +68,12 @@ static int hmc5843_spi_probe(struct spi_device *spi)
1394     if (ret)
1395     return ret;
1396    
1397     + regmap = devm_regmap_init_spi(spi, &hmc5843_spi_regmap_config);
1398     + if (IS_ERR(regmap))
1399     + return PTR_ERR(regmap);
1400     +
1401     return hmc5843_common_probe(&spi->dev,
1402     - devm_regmap_init_spi(spi, &hmc5843_spi_regmap_config),
1403     + regmap,
1404     id->driver_data, id->name);
1405     }
1406    
1407     diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
1408     index a2322b2dbd82..e5752352e0fb 100644
1409     --- a/drivers/infiniband/hw/cxgb4/cm.c
1410     +++ b/drivers/infiniband/hw/cxgb4/cm.c
1411     @@ -455,6 +455,8 @@ static struct sk_buff *get_skb(struct sk_buff *skb, int len, gfp_t gfp)
1412     skb_reset_transport_header(skb);
1413     } else {
1414     skb = alloc_skb(len, gfp);
1415     + if (!skb)
1416     + return NULL;
1417     }
1418     t4_set_arp_err_handler(skb, NULL, NULL);
1419     return skb;
1420     diff --git a/drivers/md/bcache/alloc.c b/drivers/md/bcache/alloc.c
1421     index dd344ee9e62b..ebacd21714ef 100644
1422     --- a/drivers/md/bcache/alloc.c
1423     +++ b/drivers/md/bcache/alloc.c
1424     @@ -322,10 +322,11 @@ static int bch_allocator_thread(void *arg)
1425     * possibly issue discards to them, then we add the bucket to
1426     * the free list:
1427     */
1428     - while (!fifo_empty(&ca->free_inc)) {
1429     + while (1) {
1430     long bucket;
1431    
1432     - fifo_pop(&ca->free_inc, bucket);
1433     + if (!fifo_pop(&ca->free_inc, bucket))
1434     + break;
1435    
1436     if (ca->discard) {
1437     mutex_unlock(&ca->set->bucket_lock);
1438     diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
1439     index c76a0176b5c6..6ee5370eb916 100644
1440     --- a/drivers/md/bcache/journal.c
1441     +++ b/drivers/md/bcache/journal.c
1442     @@ -309,6 +309,18 @@ void bch_journal_mark(struct cache_set *c, struct list_head *list)
1443     }
1444     }
1445    
1446     +bool is_discard_enabled(struct cache_set *s)
1447     +{
1448     + struct cache *ca;
1449     + unsigned int i;
1450     +
1451     + for_each_cache(ca, s, i)
1452     + if (ca->discard)
1453     + return true;
1454     +
1455     + return false;
1456     +}
1457     +
1458     int bch_journal_replay(struct cache_set *s, struct list_head *list)
1459     {
1460     int ret = 0, keys = 0, entries = 0;
1461     @@ -322,9 +334,17 @@ int bch_journal_replay(struct cache_set *s, struct list_head *list)
1462     list_for_each_entry(i, list, list) {
1463     BUG_ON(i->pin && atomic_read(i->pin) != 1);
1464    
1465     - cache_set_err_on(n != i->j.seq, s,
1466     -"bcache: journal entries %llu-%llu missing! (replaying %llu-%llu)",
1467     - n, i->j.seq - 1, start, end);
1468     + if (n != i->j.seq) {
1469     + if (n == start && is_discard_enabled(s))
1470     + pr_info("bcache: journal entries %llu-%llu may be discarded! (replaying %llu-%llu)",
1471     + n, i->j.seq - 1, start, end);
1472     + else {
1473     + pr_err("bcache: journal entries %llu-%llu missing! (replaying %llu-%llu)",
1474     + n, i->j.seq - 1, start, end);
1475     + ret = -EIO;
1476     + goto err;
1477     + }
1478     + }
1479    
1480     for (k = i->j.start;
1481     k < bset_bkey_last(&i->j);
1482     diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
1483     index 362efc8dd16f..9f2588eaaf5f 100644
1484     --- a/drivers/md/bcache/super.c
1485     +++ b/drivers/md/bcache/super.c
1486     @@ -1561,7 +1561,7 @@ err:
1487     return NULL;
1488     }
1489    
1490     -static void run_cache_set(struct cache_set *c)
1491     +static int run_cache_set(struct cache_set *c)
1492     {
1493     const char *err = "cannot allocate memory";
1494     struct cached_dev *dc, *t;
1495     @@ -1653,7 +1653,9 @@ static void run_cache_set(struct cache_set *c)
1496     if (j->version < BCACHE_JSET_VERSION_UUID)
1497     __uuid_write(c);
1498    
1499     - bch_journal_replay(c, &journal);
1500     + err = "bcache: replay journal failed";
1501     + if (bch_journal_replay(c, &journal))
1502     + goto err;
1503     } else {
1504     pr_notice("invalidating existing data");
1505    
1506     @@ -1721,11 +1723,13 @@ static void run_cache_set(struct cache_set *c)
1507     flash_devs_run(c);
1508    
1509     set_bit(CACHE_SET_RUNNING, &c->flags);
1510     - return;
1511     + return 0;
1512     err:
1513     closure_sync(&cl);
1514     /* XXX: test this, it's broken */
1515     bch_cache_set_error(c, "%s", err);
1516     +
1517     + return -EIO;
1518     }
1519    
1520     static bool can_attach_cache(struct cache *ca, struct cache_set *c)
1521     @@ -1789,8 +1793,11 @@ found:
1522     ca->set->cache[ca->sb.nr_this_dev] = ca;
1523     c->cache_by_alloc[c->caches_loaded++] = ca;
1524    
1525     - if (c->caches_loaded == c->sb.nr_in_set)
1526     - run_cache_set(c);
1527     + if (c->caches_loaded == c->sb.nr_in_set) {
1528     + err = "failed to run cache set";
1529     + if (run_cache_set(c) < 0)
1530     + goto err;
1531     + }
1532    
1533     return NULL;
1534     err:
1535     diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
1536     index 31f16105184c..59a4563c0466 100644
1537     --- a/drivers/media/dvb-frontends/m88ds3103.c
1538     +++ b/drivers/media/dvb-frontends/m88ds3103.c
1539     @@ -309,6 +309,9 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
1540     u16 u16tmp;
1541     u32 tuner_frequency_khz, target_mclk;
1542     s32 s32tmp;
1543     + static const struct reg_sequence reset_buf[] = {
1544     + {0x07, 0x80}, {0x07, 0x00}
1545     + };
1546    
1547     dev_dbg(&client->dev,
1548     "delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
1549     @@ -321,11 +324,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
1550     }
1551    
1552     /* reset */
1553     - ret = regmap_write(dev->regmap, 0x07, 0x80);
1554     - if (ret)
1555     - goto err;
1556     -
1557     - ret = regmap_write(dev->regmap, 0x07, 0x00);
1558     + ret = regmap_multi_reg_write(dev->regmap, reset_buf, 2);
1559     if (ret)
1560     goto err;
1561    
1562     diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c
1563     index 1f999e9c0118..3554eea77e04 100644
1564     --- a/drivers/media/i2c/ov2659.c
1565     +++ b/drivers/media/i2c/ov2659.c
1566     @@ -1117,8 +1117,10 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd,
1567     if (ov2659_formats[index].code == mf->code)
1568     break;
1569    
1570     - if (index < 0)
1571     - return -EINVAL;
1572     + if (index < 0) {
1573     + index = 0;
1574     + mf->code = ov2659_formats[index].code;
1575     + }
1576    
1577     mf->colorspace = V4L2_COLORSPACE_SRGB;
1578     mf->code = ov2659_formats[index].code;
1579     diff --git a/drivers/media/i2c/soc_camera/ov6650.c b/drivers/media/i2c/soc_camera/ov6650.c
1580     index e21b7e1c2ee1..fc187c5aeb1e 100644
1581     --- a/drivers/media/i2c/soc_camera/ov6650.c
1582     +++ b/drivers/media/i2c/soc_camera/ov6650.c
1583     @@ -840,9 +840,16 @@ static int ov6650_video_probe(struct i2c_client *client)
1584     u8 pidh, pidl, midh, midl;
1585     int ret;
1586    
1587     + priv->clk = v4l2_clk_get(&client->dev, NULL);
1588     + if (IS_ERR(priv->clk)) {
1589     + ret = PTR_ERR(priv->clk);
1590     + dev_err(&client->dev, "v4l2_clk request err: %d\n", ret);
1591     + return ret;
1592     + }
1593     +
1594     ret = ov6650_s_power(&priv->subdev, 1);
1595     if (ret < 0)
1596     - return ret;
1597     + goto eclkput;
1598    
1599     msleep(20);
1600    
1601     @@ -879,6 +886,11 @@ static int ov6650_video_probe(struct i2c_client *client)
1602    
1603     done:
1604     ov6650_s_power(&priv->subdev, 0);
1605     + if (!ret)
1606     + return 0;
1607     +eclkput:
1608     + v4l2_clk_put(priv->clk);
1609     +
1610     return ret;
1611     }
1612    
1613     @@ -1035,18 +1047,9 @@ static int ov6650_probe(struct i2c_client *client,
1614     priv->code = MEDIA_BUS_FMT_YUYV8_2X8;
1615     priv->colorspace = V4L2_COLORSPACE_JPEG;
1616    
1617     - priv->clk = v4l2_clk_get(&client->dev, NULL);
1618     - if (IS_ERR(priv->clk)) {
1619     - ret = PTR_ERR(priv->clk);
1620     - goto eclkget;
1621     - }
1622     -
1623     ret = ov6650_video_probe(client);
1624     - if (ret) {
1625     - v4l2_clk_put(priv->clk);
1626     -eclkget:
1627     + if (ret)
1628     v4l2_ctrl_handler_free(&priv->hdl);
1629     - }
1630    
1631     return ret;
1632     }
1633     diff --git a/drivers/media/pci/saa7146/hexium_gemini.c b/drivers/media/pci/saa7146/hexium_gemini.c
1634     index c889ec9f8a5a..f5fc8bcbd14b 100644
1635     --- a/drivers/media/pci/saa7146/hexium_gemini.c
1636     +++ b/drivers/media/pci/saa7146/hexium_gemini.c
1637     @@ -270,9 +270,8 @@ static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_d
1638     /* enable i2c-port pins */
1639     saa7146_write(dev, MC1, (MASK_08 | MASK_24 | MASK_10 | MASK_26));
1640    
1641     - hexium->i2c_adapter = (struct i2c_adapter) {
1642     - .name = "hexium gemini",
1643     - };
1644     + strscpy(hexium->i2c_adapter.name, "hexium gemini",
1645     + sizeof(hexium->i2c_adapter.name));
1646     saa7146_i2c_adapter_prepare(dev, &hexium->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480);
1647     if (i2c_add_adapter(&hexium->i2c_adapter) < 0) {
1648     DEB_S("cannot register i2c-device. skipping.\n");
1649     diff --git a/drivers/media/pci/saa7146/hexium_orion.c b/drivers/media/pci/saa7146/hexium_orion.c
1650     index c306a92e8909..dc07ca37ebd0 100644
1651     --- a/drivers/media/pci/saa7146/hexium_orion.c
1652     +++ b/drivers/media/pci/saa7146/hexium_orion.c
1653     @@ -232,9 +232,8 @@ static int hexium_probe(struct saa7146_dev *dev)
1654     saa7146_write(dev, DD1_STREAM_B, 0x00000000);
1655     saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26));
1656    
1657     - hexium->i2c_adapter = (struct i2c_adapter) {
1658     - .name = "hexium orion",
1659     - };
1660     + strscpy(hexium->i2c_adapter.name, "hexium orion",
1661     + sizeof(hexium->i2c_adapter.name));
1662     saa7146_i2c_adapter_prepare(dev, &hexium->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480);
1663     if (i2c_add_adapter(&hexium->i2c_adapter) < 0) {
1664     DEB_S("cannot register i2c-device. skipping.\n");
1665     diff --git a/drivers/media/platform/coda/coda-bit.c b/drivers/media/platform/coda/coda-bit.c
1666     index b6625047250d..717ee9a6a80e 100644
1667     --- a/drivers/media/platform/coda/coda-bit.c
1668     +++ b/drivers/media/platform/coda/coda-bit.c
1669     @@ -1829,6 +1829,9 @@ static int coda_prepare_decode(struct coda_ctx *ctx)
1670     /* Clear decode success flag */
1671     coda_write(dev, 0, CODA_RET_DEC_PIC_SUCCESS);
1672    
1673     + /* Clear error return value */
1674     + coda_write(dev, 0, CODA_RET_DEC_PIC_ERR_MB);
1675     +
1676     trace_coda_dec_pic_run(ctx, meta);
1677    
1678     coda_command_async(ctx, CODA_COMMAND_PIC_RUN);
1679     diff --git a/drivers/media/platform/vivid/vivid-vid-cap.c b/drivers/media/platform/vivid/vivid-vid-cap.c
1680     index 25d4fd4f4c0b..a72982df4777 100644
1681     --- a/drivers/media/platform/vivid/vivid-vid-cap.c
1682     +++ b/drivers/media/platform/vivid/vivid-vid-cap.c
1683     @@ -984,7 +984,7 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection
1684     v4l2_rect_map_inside(&s->r, &dev->fmt_cap_rect);
1685     if (dev->bitmap_cap && (compose->width != s->r.width ||
1686     compose->height != s->r.height)) {
1687     - kfree(dev->bitmap_cap);
1688     + vfree(dev->bitmap_cap);
1689     dev->bitmap_cap = NULL;
1690     }
1691     *compose = s->r;
1692     diff --git a/drivers/media/radio/wl128x/fmdrv_common.c b/drivers/media/radio/wl128x/fmdrv_common.c
1693     index 642b89c66bcb..c1457cf46698 100644
1694     --- a/drivers/media/radio/wl128x/fmdrv_common.c
1695     +++ b/drivers/media/radio/wl128x/fmdrv_common.c
1696     @@ -494,7 +494,8 @@ int fmc_send_cmd(struct fmdev *fmdev, u8 fm_op, u16 type, void *payload,
1697     return -EIO;
1698     }
1699     /* Send response data to caller */
1700     - if (response != NULL && response_len != NULL && evt_hdr->dlen) {
1701     + if (response != NULL && response_len != NULL && evt_hdr->dlen &&
1702     + evt_hdr->dlen <= payload_len) {
1703     /* Skip header info and copy only response data */
1704     skb_pull(skb, sizeof(struct fm_event_msg_hdr));
1705     memcpy(response, skb->data, evt_hdr->dlen);
1706     @@ -590,6 +591,8 @@ static void fm_irq_handle_flag_getcmd_resp(struct fmdev *fmdev)
1707     return;
1708    
1709     fm_evt_hdr = (void *)skb->data;
1710     + if (fm_evt_hdr->dlen > sizeof(fmdev->irq_info.flag))
1711     + return;
1712    
1713     /* Skip header info and copy only response data */
1714     skb_pull(skb, sizeof(struct fm_event_msg_hdr));
1715     @@ -1315,7 +1318,7 @@ static int load_default_rx_configuration(struct fmdev *fmdev)
1716     static int fm_power_up(struct fmdev *fmdev, u8 mode)
1717     {
1718     u16 payload;
1719     - __be16 asic_id, asic_ver;
1720     + __be16 asic_id = 0, asic_ver = 0;
1721     int resp_len, ret;
1722     u8 fw_name[50];
1723    
1724     diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
1725     index 85dd9a8e83ff..48eeb5a6a209 100644
1726     --- a/drivers/media/usb/au0828/au0828-video.c
1727     +++ b/drivers/media/usb/au0828/au0828-video.c
1728     @@ -764,6 +764,9 @@ static int au0828_analog_stream_enable(struct au0828_dev *d)
1729    
1730     dprintk(1, "au0828_analog_stream_enable called\n");
1731    
1732     + if (test_bit(DEV_DISCONNECTED, &d->dev_state))
1733     + return -ENODEV;
1734     +
1735     iface = usb_ifnum_to_if(d->usbdev, 0);
1736     if (iface && iface->cur_altsetting->desc.bAlternateSetting != 5) {
1737     dprintk(1, "Changing intf#0 to alt 5\n");
1738     @@ -852,9 +855,9 @@ int au0828_start_analog_streaming(struct vb2_queue *vq, unsigned int count)
1739     return rc;
1740     }
1741    
1742     + v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 1);
1743     +
1744     if (vq->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
1745     - v4l2_device_call_all(&dev->v4l2_dev, 0, video,
1746     - s_stream, 1);
1747     dev->vid_timeout_running = 1;
1748     mod_timer(&dev->vid_timeout, jiffies + (HZ / 10));
1749     } else if (vq->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
1750     @@ -874,10 +877,11 @@ static void au0828_stop_streaming(struct vb2_queue *vq)
1751    
1752     dprintk(1, "au0828_stop_streaming called %d\n", dev->streaming_users);
1753    
1754     - if (dev->streaming_users-- == 1)
1755     + if (dev->streaming_users-- == 1) {
1756     au0828_uninit_isoc(dev);
1757     + v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
1758     + }
1759    
1760     - v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
1761     dev->vid_timeout_running = 0;
1762     del_timer_sync(&dev->vid_timeout);
1763    
1764     @@ -906,8 +910,10 @@ void au0828_stop_vbi_streaming(struct vb2_queue *vq)
1765     dprintk(1, "au0828_stop_vbi_streaming called %d\n",
1766     dev->streaming_users);
1767    
1768     - if (dev->streaming_users-- == 1)
1769     + if (dev->streaming_users-- == 1) {
1770     au0828_uninit_isoc(dev);
1771     + v4l2_device_call_all(&dev->v4l2_dev, 0, video, s_stream, 0);
1772     + }
1773    
1774     spin_lock_irqsave(&dev->slock, flags);
1775     if (dev->isoc_ctl.vbi_buf != NULL) {
1776     diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c b/drivers/media/usb/cpia2/cpia2_v4l.c
1777     index d793c630f1dd..05e7edb213de 100644
1778     --- a/drivers/media/usb/cpia2/cpia2_v4l.c
1779     +++ b/drivers/media/usb/cpia2/cpia2_v4l.c
1780     @@ -1248,8 +1248,7 @@ static int __init cpia2_init(void)
1781     LOG("%s v%s\n",
1782     ABOUT, CPIA_VERSION);
1783     check_parameters();
1784     - cpia2_usb_init();
1785     - return 0;
1786     + return cpia2_usb_init();
1787     }
1788    
1789    
1790     diff --git a/drivers/media/usb/go7007/go7007-fw.c b/drivers/media/usb/go7007/go7007-fw.c
1791     index 60bf5f0644d1..a5efcd4f7b4f 100644
1792     --- a/drivers/media/usb/go7007/go7007-fw.c
1793     +++ b/drivers/media/usb/go7007/go7007-fw.c
1794     @@ -1499,8 +1499,8 @@ static int modet_to_package(struct go7007 *go, __le16 *code, int space)
1795     return cnt;
1796     }
1797    
1798     -static int do_special(struct go7007 *go, u16 type, __le16 *code, int space,
1799     - int *framelen)
1800     +static noinline_for_stack int do_special(struct go7007 *go, u16 type,
1801     + __le16 *code, int space, int *framelen)
1802     {
1803     switch (type) {
1804     case SPECIAL_FRM_HEAD:
1805     diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1806     index 1eb4f7ba2967..ff489645e070 100644
1807     --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1808     +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
1809     @@ -670,6 +670,8 @@ static int ctrl_get_input(struct pvr2_ctrl *cptr,int *vp)
1810    
1811     static int ctrl_check_input(struct pvr2_ctrl *cptr,int v)
1812     {
1813     + if (v < 0 || v > PVR2_CVAL_INPUT_MAX)
1814     + return 0;
1815     return ((1 << v) & cptr->hdw->input_allowed_mask) != 0;
1816     }
1817    
1818     diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.h b/drivers/media/usb/pvrusb2/pvrusb2-hdw.h
1819     index a82a00dd7329..80869990ffbb 100644
1820     --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.h
1821     +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.h
1822     @@ -54,6 +54,7 @@
1823     #define PVR2_CVAL_INPUT_COMPOSITE 2
1824     #define PVR2_CVAL_INPUT_SVIDEO 3
1825     #define PVR2_CVAL_INPUT_RADIO 4
1826     +#define PVR2_CVAL_INPUT_MAX PVR2_CVAL_INPUT_RADIO
1827    
1828     enum pvr2_config {
1829     pvr2_config_empty, /* No configuration */
1830     diff --git a/drivers/mmc/core/pwrseq_emmc.c b/drivers/mmc/core/pwrseq_emmc.c
1831     index adc9c0c614fb..4493c299d85e 100644
1832     --- a/drivers/mmc/core/pwrseq_emmc.c
1833     +++ b/drivers/mmc/core/pwrseq_emmc.c
1834     @@ -30,19 +30,14 @@ struct mmc_pwrseq_emmc {
1835    
1836     #define to_pwrseq_emmc(p) container_of(p, struct mmc_pwrseq_emmc, pwrseq)
1837    
1838     -static void __mmc_pwrseq_emmc_reset(struct mmc_pwrseq_emmc *pwrseq)
1839     -{
1840     - gpiod_set_value(pwrseq->reset_gpio, 1);
1841     - udelay(1);
1842     - gpiod_set_value(pwrseq->reset_gpio, 0);
1843     - udelay(200);
1844     -}
1845     -
1846     static void mmc_pwrseq_emmc_reset(struct mmc_host *host)
1847     {
1848     struct mmc_pwrseq_emmc *pwrseq = to_pwrseq_emmc(host->pwrseq);
1849    
1850     - __mmc_pwrseq_emmc_reset(pwrseq);
1851     + gpiod_set_value_cansleep(pwrseq->reset_gpio, 1);
1852     + udelay(1);
1853     + gpiod_set_value_cansleep(pwrseq->reset_gpio, 0);
1854     + udelay(200);
1855     }
1856    
1857     static int mmc_pwrseq_emmc_reset_nb(struct notifier_block *this,
1858     @@ -50,8 +45,11 @@ static int mmc_pwrseq_emmc_reset_nb(struct notifier_block *this,
1859     {
1860     struct mmc_pwrseq_emmc *pwrseq = container_of(this,
1861     struct mmc_pwrseq_emmc, reset_nb);
1862     + gpiod_set_value(pwrseq->reset_gpio, 1);
1863     + udelay(1);
1864     + gpiod_set_value(pwrseq->reset_gpio, 0);
1865     + udelay(200);
1866    
1867     - __mmc_pwrseq_emmc_reset(pwrseq);
1868     return NOTIFY_DONE;
1869     }
1870    
1871     @@ -72,14 +70,18 @@ static int mmc_pwrseq_emmc_probe(struct platform_device *pdev)
1872     if (IS_ERR(pwrseq->reset_gpio))
1873     return PTR_ERR(pwrseq->reset_gpio);
1874    
1875     - /*
1876     - * register reset handler to ensure emmc reset also from
1877     - * emergency_reboot(), priority 255 is the highest priority
1878     - * so it will be executed before any system reboot handler.
1879     - */
1880     - pwrseq->reset_nb.notifier_call = mmc_pwrseq_emmc_reset_nb;
1881     - pwrseq->reset_nb.priority = 255;
1882     - register_restart_handler(&pwrseq->reset_nb);
1883     + if (!gpiod_cansleep(pwrseq->reset_gpio)) {
1884     + /*
1885     + * register reset handler to ensure emmc reset also from
1886     + * emergency_reboot(), priority 255 is the highest priority
1887     + * so it will be executed before any system reboot handler.
1888     + */
1889     + pwrseq->reset_nb.notifier_call = mmc_pwrseq_emmc_reset_nb;
1890     + pwrseq->reset_nb.priority = 255;
1891     + register_restart_handler(&pwrseq->reset_nb);
1892     + } else {
1893     + dev_notice(dev, "EMMC reset pin tied to a sleepy GPIO driver; reset on emergency-reboot disabled\n");
1894     + }
1895    
1896     pwrseq->pwrseq.ops = &mmc_pwrseq_emmc_ops;
1897     pwrseq->pwrseq.dev = dev;
1898     diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
1899     index f09148a4ab55..00ba8807dafe 100644
1900     --- a/drivers/mmc/core/sd.c
1901     +++ b/drivers/mmc/core/sd.c
1902     @@ -214,6 +214,14 @@ static int mmc_decode_scr(struct mmc_card *card)
1903    
1904     if (scr->sda_spec3)
1905     scr->cmds = UNSTUFF_BITS(resp, 32, 2);
1906     +
1907     + /* SD Spec says: any SD Card shall set at least bits 0 and 2 */
1908     + if (!(scr->bus_widths & SD_SCR_BUS_WIDTH_1) ||
1909     + !(scr->bus_widths & SD_SCR_BUS_WIDTH_4)) {
1910     + pr_err("%s: invalid bus width\n", mmc_hostname(card->host));
1911     + return -EINVAL;
1912     + }
1913     +
1914     return 0;
1915     }
1916    
1917     diff --git a/drivers/mmc/host/mmc_spi.c b/drivers/mmc/host/mmc_spi.c
1918     index 6224ad37fd80..c2df68e958b3 100644
1919     --- a/drivers/mmc/host/mmc_spi.c
1920     +++ b/drivers/mmc/host/mmc_spi.c
1921     @@ -819,6 +819,10 @@ mmc_spi_readblock(struct mmc_spi_host *host, struct spi_transfer *t,
1922     }
1923    
1924     status = spi_sync_locked(spi, &host->m);
1925     + if (status < 0) {
1926     + dev_dbg(&spi->dev, "read error %d\n", status);
1927     + return status;
1928     + }
1929    
1930     if (host->dma_dev) {
1931     dma_sync_single_for_cpu(host->dma_dev,
1932     diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c
1933     index a51d636c2312..6f11cd95bb5f 100644
1934     --- a/drivers/mmc/host/sdhci-of-esdhc.c
1935     +++ b/drivers/mmc/host/sdhci-of-esdhc.c
1936     @@ -636,6 +636,11 @@ static int sdhci_esdhc_probe(struct platform_device *pdev)
1937     if (esdhc->vendor_ver > VENDOR_V_22)
1938     host->quirks &= ~SDHCI_QUIRK_NO_BUSY_IRQ;
1939    
1940     + if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc")) {
1941     + host->quirks2 |= SDHCI_QUIRK_RESET_AFTER_REQUEST;
1942     + host->quirks2 |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
1943     + }
1944     +
1945     if (of_device_is_compatible(np, "fsl,p5040-esdhc") ||
1946     of_device_is_compatible(np, "fsl,p5020-esdhc") ||
1947     of_device_is_compatible(np, "fsl,p4080-esdhc") ||
1948     diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
1949     index 0c298878bf46..0780900b37c7 100644
1950     --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
1951     +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
1952     @@ -2116,7 +2116,7 @@ static void ena_config_host_info(struct ena_com_dev *ena_dev)
1953    
1954     host_info->os_type = ENA_ADMIN_OS_LINUX;
1955     host_info->kernel_ver = LINUX_VERSION_CODE;
1956     - strncpy(host_info->kernel_ver_str, utsname()->version,
1957     + strlcpy(host_info->kernel_ver_str, utsname()->version,
1958     sizeof(host_info->kernel_ver_str) - 1);
1959     host_info->os_dist = 0;
1960     strncpy(host_info->os_dist_str, utsname()->release,
1961     diff --git a/drivers/net/ethernet/chelsio/cxgb3/l2t.h b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
1962     index 8cffcdfd5678..38b5858c335a 100644
1963     --- a/drivers/net/ethernet/chelsio/cxgb3/l2t.h
1964     +++ b/drivers/net/ethernet/chelsio/cxgb3/l2t.h
1965     @@ -75,8 +75,8 @@ struct l2t_data {
1966     struct l2t_entry *rover; /* starting point for next allocation */
1967     atomic_t nfree; /* number of free entries */
1968     rwlock_t lock;
1969     - struct l2t_entry l2tab[0];
1970     struct rcu_head rcu_head; /* to handle rcu cleanup */
1971     + struct l2t_entry l2tab[];
1972     };
1973    
1974     typedef void (*arp_failure_handler_func)(struct t3cdev * dev,
1975     diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
1976     index c71a52a2f801..5478a2ab45c4 100644
1977     --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
1978     +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
1979     @@ -5203,15 +5203,24 @@ static int __init cxgb4_init_module(void)
1980    
1981     ret = pci_register_driver(&cxgb4_driver);
1982     if (ret < 0)
1983     - debugfs_remove(cxgb4_debugfs_root);
1984     + goto err_pci;
1985    
1986     #if IS_ENABLED(CONFIG_IPV6)
1987     if (!inet6addr_registered) {
1988     - register_inet6addr_notifier(&cxgb4_inet6addr_notifier);
1989     - inet6addr_registered = true;
1990     + ret = register_inet6addr_notifier(&cxgb4_inet6addr_notifier);
1991     + if (ret)
1992     + pci_unregister_driver(&cxgb4_driver);
1993     + else
1994     + inet6addr_registered = true;
1995     }
1996     #endif
1997    
1998     + if (ret == 0)
1999     + return ret;
2000     +
2001     +err_pci:
2002     + debugfs_remove(cxgb4_debugfs_root);
2003     +
2004     return ret;
2005     }
2006    
2007     diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
2008     index 7836072d3f63..886378c5334f 100644
2009     --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
2010     +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
2011     @@ -2285,6 +2285,10 @@ void i40e_vlan_stripping_enable(struct i40e_vsi *vsi)
2012     struct i40e_vsi_context ctxt;
2013     i40e_status ret;
2014    
2015     + /* Don't modify stripping options if a port VLAN is active */
2016     + if (vsi->info.pvid)
2017     + return;
2018     +
2019     if ((vsi->info.valid_sections &
2020     cpu_to_le16(I40E_AQ_VSI_PROP_VLAN_VALID)) &&
2021     ((vsi->info.port_vlan_flags & I40E_AQ_VSI_PVLAN_MODE_MASK) == 0))
2022     @@ -2315,6 +2319,10 @@ void i40e_vlan_stripping_disable(struct i40e_vsi *vsi)
2023     struct i40e_vsi_context ctxt;
2024     i40e_status ret;
2025    
2026     + /* Don't modify stripping options if a port VLAN is active */
2027     + if (vsi->info.pvid)
2028     + return;
2029     +
2030     if ((vsi->info.valid_sections &
2031     cpu_to_le16(I40E_AQ_VSI_PROP_VLAN_VALID)) &&
2032     ((vsi->info.port_vlan_flags & I40E_AQ_VSI_PVLAN_EMOD_MASK) ==
2033     diff --git a/drivers/net/wireless/atmel/at76c50x-usb.c b/drivers/net/wireless/atmel/at76c50x-usb.c
2034     index 0e180677c7fc..09dbab464fe1 100644
2035     --- a/drivers/net/wireless/atmel/at76c50x-usb.c
2036     +++ b/drivers/net/wireless/atmel/at76c50x-usb.c
2037     @@ -2583,8 +2583,8 @@ static int __init at76_mod_init(void)
2038     if (result < 0)
2039     printk(KERN_ERR DRIVER_NAME
2040     ": usb_register failed (status %d)\n", result);
2041     -
2042     - led_trigger_register_simple("at76_usb-tx", &ledtrig_tx);
2043     + else
2044     + led_trigger_register_simple("at76_usb-tx", &ledtrig_tx);
2045     return result;
2046     }
2047    
2048     diff --git a/drivers/net/wireless/broadcom/b43/phy_lp.c b/drivers/net/wireless/broadcom/b43/phy_lp.c
2049     index 6922cbb99a04..5a0699fb4b9a 100644
2050     --- a/drivers/net/wireless/broadcom/b43/phy_lp.c
2051     +++ b/drivers/net/wireless/broadcom/b43/phy_lp.c
2052     @@ -1834,7 +1834,7 @@ static void lpphy_papd_cal(struct b43_wldev *dev, struct lpphy_tx_gains gains,
2053     static void lpphy_papd_cal_txpwr(struct b43_wldev *dev)
2054     {
2055     struct b43_phy_lp *lpphy = dev->phy.lp;
2056     - struct lpphy_tx_gains gains, oldgains;
2057     + struct lpphy_tx_gains oldgains;
2058     int old_txpctl, old_afe_ovr, old_rf, old_bbmult;
2059    
2060     lpphy_read_tx_pctl_mode_from_hardware(dev);
2061     @@ -1848,9 +1848,9 @@ static void lpphy_papd_cal_txpwr(struct b43_wldev *dev)
2062     lpphy_set_tx_power_control(dev, B43_LPPHY_TXPCTL_OFF);
2063    
2064     if (dev->dev->chip_id == 0x4325 && dev->dev->chip_rev == 0)
2065     - lpphy_papd_cal(dev, gains, 0, 1, 30);
2066     + lpphy_papd_cal(dev, oldgains, 0, 1, 30);
2067     else
2068     - lpphy_papd_cal(dev, gains, 0, 1, 65);
2069     + lpphy_papd_cal(dev, oldgains, 0, 1, 65);
2070    
2071     if (old_afe_ovr)
2072     lpphy_set_tx_gains(dev, oldgains);
2073     diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
2074     index 530f52120972..8f8fe6f2af5b 100644
2075     --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
2076     +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
2077     @@ -5374,6 +5374,8 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
2078     conn_info->req_ie =
2079     kmemdup(cfg->extra_buf, conn_info->req_ie_len,
2080     GFP_KERNEL);
2081     + if (!conn_info->req_ie)
2082     + conn_info->req_ie_len = 0;
2083     } else {
2084     conn_info->req_ie_len = 0;
2085     conn_info->req_ie = NULL;
2086     @@ -5390,6 +5392,8 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
2087     conn_info->resp_ie =
2088     kmemdup(cfg->extra_buf, conn_info->resp_ie_len,
2089     GFP_KERNEL);
2090     + if (!conn_info->resp_ie)
2091     + conn_info->resp_ie_len = 0;
2092     } else {
2093     conn_info->resp_ie_len = 0;
2094     conn_info->resp_ie = NULL;
2095     diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
2096     index f877301c9454..ecfe056d7643 100644
2097     --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
2098     +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
2099     @@ -685,17 +685,17 @@ static void brcmf_del_if(struct brcmf_pub *drvr, s32 bsscfgidx,
2100     bool rtnl_locked)
2101     {
2102     struct brcmf_if *ifp;
2103     + int ifidx;
2104    
2105     ifp = drvr->iflist[bsscfgidx];
2106     - drvr->iflist[bsscfgidx] = NULL;
2107     if (!ifp) {
2108     brcmf_err("Null interface, bsscfgidx=%d\n", bsscfgidx);
2109     return;
2110     }
2111     brcmf_dbg(TRACE, "Enter, bsscfgidx=%d, ifidx=%d\n", bsscfgidx,
2112     ifp->ifidx);
2113     - if (drvr->if2bss[ifp->ifidx] == bsscfgidx)
2114     - drvr->if2bss[ifp->ifidx] = BRCMF_BSSIDX_INVALID;
2115     + ifidx = ifp->ifidx;
2116     +
2117     if (ifp->ndev) {
2118     if (bsscfgidx == 0) {
2119     if (ifp->ndev->netdev_ops == &brcmf_netdev_ops_pri) {
2120     @@ -723,6 +723,10 @@ static void brcmf_del_if(struct brcmf_pub *drvr, s32 bsscfgidx,
2121     brcmf_p2p_ifp_removed(ifp, rtnl_locked);
2122     kfree(ifp);
2123     }
2124     +
2125     + drvr->iflist[bsscfgidx] = NULL;
2126     + if (drvr->if2bss[ifidx] == bsscfgidx)
2127     + drvr->if2bss[ifidx] = BRCMF_BSSIDX_INVALID;
2128     }
2129    
2130     void brcmf_remove_interface(struct brcmf_if *ifp, bool rtnl_locked)
2131     diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
2132     index 053f3b59f21e..acf513fd9e6d 100644
2133     --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
2134     +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
2135     @@ -157,7 +157,7 @@ struct brcmf_usbdev_info {
2136    
2137     struct usb_device *usbdev;
2138     struct device *dev;
2139     - struct mutex dev_init_lock;
2140     + struct completion dev_init_done;
2141    
2142     int ctl_in_pipe, ctl_out_pipe;
2143     struct urb *ctl_urb; /* URB for control endpoint */
2144     @@ -681,12 +681,18 @@ static int brcmf_usb_up(struct device *dev)
2145    
2146     static void brcmf_cancel_all_urbs(struct brcmf_usbdev_info *devinfo)
2147     {
2148     + int i;
2149     +
2150     if (devinfo->ctl_urb)
2151     usb_kill_urb(devinfo->ctl_urb);
2152     if (devinfo->bulk_urb)
2153     usb_kill_urb(devinfo->bulk_urb);
2154     - brcmf_usb_free_q(&devinfo->tx_postq, true);
2155     - brcmf_usb_free_q(&devinfo->rx_postq, true);
2156     + if (devinfo->tx_reqs)
2157     + for (i = 0; i < devinfo->bus_pub.ntxq; i++)
2158     + usb_kill_urb(devinfo->tx_reqs[i].urb);
2159     + if (devinfo->rx_reqs)
2160     + for (i = 0; i < devinfo->bus_pub.nrxq; i++)
2161     + usb_kill_urb(devinfo->rx_reqs[i].urb);
2162     }
2163    
2164     static void brcmf_usb_down(struct device *dev)
2165     @@ -1189,11 +1195,11 @@ static void brcmf_usb_probe_phase2(struct device *dev, int ret,
2166     if (ret)
2167     goto error;
2168    
2169     - mutex_unlock(&devinfo->dev_init_lock);
2170     + complete(&devinfo->dev_init_done);
2171     return;
2172     error:
2173     brcmf_dbg(TRACE, "failed: dev=%s, err=%d\n", dev_name(dev), ret);
2174     - mutex_unlock(&devinfo->dev_init_lock);
2175     + complete(&devinfo->dev_init_done);
2176     device_release_driver(dev);
2177     }
2178    
2179     @@ -1239,7 +1245,7 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo)
2180     if (ret)
2181     goto fail;
2182     /* we are done */
2183     - mutex_unlock(&devinfo->dev_init_lock);
2184     + complete(&devinfo->dev_init_done);
2185     return 0;
2186     }
2187     bus->chip = bus_pub->devid;
2188     @@ -1300,11 +1306,10 @@ brcmf_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
2189    
2190     devinfo->usbdev = usb;
2191     devinfo->dev = &usb->dev;
2192     - /* Take an init lock, to protect for disconnect while still loading.
2193     + /* Init completion, to protect for disconnect while still loading.
2194     * Necessary because of the asynchronous firmware load construction
2195     */
2196     - mutex_init(&devinfo->dev_init_lock);
2197     - mutex_lock(&devinfo->dev_init_lock);
2198     + init_completion(&devinfo->dev_init_done);
2199    
2200     usb_set_intfdata(intf, devinfo);
2201    
2202     @@ -1382,7 +1387,7 @@ brcmf_usb_probe(struct usb_interface *intf, const struct usb_device_id *id)
2203     return 0;
2204    
2205     fail:
2206     - mutex_unlock(&devinfo->dev_init_lock);
2207     + complete(&devinfo->dev_init_done);
2208     kfree(devinfo);
2209     usb_set_intfdata(intf, NULL);
2210     return ret;
2211     @@ -1397,7 +1402,7 @@ brcmf_usb_disconnect(struct usb_interface *intf)
2212     devinfo = (struct brcmf_usbdev_info *)usb_get_intfdata(intf);
2213    
2214     if (devinfo) {
2215     - mutex_lock(&devinfo->dev_init_lock);
2216     + wait_for_completion(&devinfo->dev_init_done);
2217     /* Make sure that devinfo still exists. Firmware probe routines
2218     * may have released the device and cleared the intfdata.
2219     */
2220     diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c
2221     index 8eff2753abad..d493021f6031 100644
2222     --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c
2223     +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/vendor.c
2224     @@ -35,9 +35,10 @@ static int brcmf_cfg80211_vndr_cmds_dcmd_handler(struct wiphy *wiphy,
2225     struct brcmf_if *ifp;
2226     const struct brcmf_vndr_dcmd_hdr *cmdhdr = data;
2227     struct sk_buff *reply;
2228     - int ret, payload, ret_len;
2229     + unsigned int payload, ret_len;
2230     void *dcmd_buf = NULL, *wr_pointer;
2231     u16 msglen, maxmsglen = PAGE_SIZE - 0x100;
2232     + int ret;
2233    
2234     if (len < sizeof(*cmdhdr)) {
2235     brcmf_err("vendor command too short: %d\n", len);
2236     @@ -65,7 +66,7 @@ static int brcmf_cfg80211_vndr_cmds_dcmd_handler(struct wiphy *wiphy,
2237     brcmf_err("oversize return buffer %d\n", ret_len);
2238     ret_len = BRCMF_DCMD_MAXLEN;
2239     }
2240     - payload = max(ret_len, len) + 1;
2241     + payload = max_t(unsigned int, ret_len, len) + 1;
2242     dcmd_buf = vzalloc(payload);
2243     if (NULL == dcmd_buf)
2244     return -ENOMEM;
2245     diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
2246     index c21f8bd32d08..25f2a0aceaa2 100644
2247     --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
2248     +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
2249     @@ -1225,10 +1225,15 @@ static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
2250     static void iwl_pcie_rx_handle(struct iwl_trans *trans, int queue)
2251     {
2252     struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
2253     - struct iwl_rxq *rxq = &trans_pcie->rxq[queue];
2254     + struct iwl_rxq *rxq;
2255     u32 r, i, count = 0;
2256     bool emergency = false;
2257    
2258     + if (WARN_ON_ONCE(!trans_pcie->rxq || !trans_pcie->rxq[queue].bd))
2259     + return;
2260     +
2261     + rxq = &trans_pcie->rxq[queue];
2262     +
2263     restart:
2264     spin_lock(&rxq->lock);
2265     /* uCode's read index (stored in shared DRAM) indicates the last Rx
2266     diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
2267     index 4da3541471e6..46d0099fd6e8 100644
2268     --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
2269     +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
2270     @@ -4018,16 +4018,20 @@ static int mwifiex_tm_cmd(struct wiphy *wiphy, struct wireless_dev *wdev,
2271    
2272     if (mwifiex_send_cmd(priv, 0, 0, 0, hostcmd, true)) {
2273     dev_err(priv->adapter->dev, "Failed to process hostcmd\n");
2274     + kfree(hostcmd);
2275     return -EFAULT;
2276     }
2277    
2278     /* process hostcmd response*/
2279     skb = cfg80211_testmode_alloc_reply_skb(wiphy, hostcmd->len);
2280     - if (!skb)
2281     + if (!skb) {
2282     + kfree(hostcmd);
2283     return -ENOMEM;
2284     + }
2285     err = nla_put(skb, MWIFIEX_TM_ATTR_DATA,
2286     hostcmd->len, hostcmd->cmd);
2287     if (err) {
2288     + kfree(hostcmd);
2289     kfree_skb(skb);
2290     return -EMSGSIZE;
2291     }
2292     diff --git a/drivers/net/wireless/marvell/mwifiex/cfp.c b/drivers/net/wireless/marvell/mwifiex/cfp.c
2293     index 1ff22055e54f..9ddaa767ea74 100644
2294     --- a/drivers/net/wireless/marvell/mwifiex/cfp.c
2295     +++ b/drivers/net/wireless/marvell/mwifiex/cfp.c
2296     @@ -533,5 +533,8 @@ u8 mwifiex_adjust_data_rate(struct mwifiex_private *priv,
2297     rate_index = (rx_rate > MWIFIEX_RATE_INDEX_OFDM0) ?
2298     rx_rate - 1 : rx_rate;
2299    
2300     + if (rate_index >= MWIFIEX_MAX_AC_RX_RATES)
2301     + rate_index = MWIFIEX_MAX_AC_RX_RATES - 1;
2302     +
2303     return rate_index;
2304     }
2305     diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c
2306     index 4ac928bf1f8e..7de18ed10db8 100644
2307     --- a/drivers/net/wireless/realtek/rtlwifi/base.c
2308     +++ b/drivers/net/wireless/realtek/rtlwifi/base.c
2309     @@ -466,6 +466,11 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
2310     /* <2> work queue */
2311     rtlpriv->works.hw = hw;
2312     rtlpriv->works.rtl_wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name);
2313     + if (unlikely(!rtlpriv->works.rtl_wq)) {
2314     + pr_err("Failed to allocate work queue\n");
2315     + return;
2316     + }
2317     +
2318     INIT_DELAYED_WORK(&rtlpriv->works.watchdog_wq,
2319     (void *)rtl_watchdog_wq_callback);
2320     INIT_DELAYED_WORK(&rtlpriv->works.ips_nic_off_wq,
2321     diff --git a/drivers/net/wireless/st/cw1200/main.c b/drivers/net/wireless/st/cw1200/main.c
2322     index dc478cedbde0..84624c812a15 100644
2323     --- a/drivers/net/wireless/st/cw1200/main.c
2324     +++ b/drivers/net/wireless/st/cw1200/main.c
2325     @@ -345,6 +345,11 @@ static struct ieee80211_hw *cw1200_init_common(const u8 *macaddr,
2326     mutex_init(&priv->wsm_cmd_mux);
2327     mutex_init(&priv->conf_mutex);
2328     priv->workqueue = create_singlethread_workqueue("cw1200_wq");
2329     + if (!priv->workqueue) {
2330     + ieee80211_free_hw(hw);
2331     + return NULL;
2332     + }
2333     +
2334     sema_init(&priv->scan.lock, 1);
2335     INIT_WORK(&priv->scan.work, cw1200_scan_work);
2336     INIT_DELAYED_WORK(&priv->scan.probe_work, cw1200_probe_work);
2337     diff --git a/drivers/nvdimm/label.c b/drivers/nvdimm/label.c
2338     index 66a089d561cf..9108004a0d9b 100644
2339     --- a/drivers/nvdimm/label.c
2340     +++ b/drivers/nvdimm/label.c
2341     @@ -490,15 +490,26 @@ static unsigned long nd_label_offset(struct nvdimm_drvdata *ndd,
2342     - (unsigned long) to_namespace_index(ndd, 0);
2343     }
2344    
2345     +static void reap_victim(struct nd_mapping *nd_mapping,
2346     + struct nd_label_ent *victim)
2347     +{
2348     + struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
2349     + u32 slot = to_slot(ndd, victim->label);
2350     +
2351     + dev_dbg(ndd->dev, "free: %d\n", slot);
2352     + nd_label_free_slot(ndd, slot);
2353     + victim->label = NULL;
2354     +}
2355     +
2356     static int __pmem_label_update(struct nd_region *nd_region,
2357     struct nd_mapping *nd_mapping, struct nd_namespace_pmem *nspm,
2358     int pos, unsigned long flags)
2359     {
2360     u64 cookie = nd_region_interleave_set_cookie(nd_region);
2361     struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
2362     - struct nd_label_ent *label_ent, *victim = NULL;
2363     struct nd_namespace_label *nd_label;
2364     struct nd_namespace_index *nsindex;
2365     + struct nd_label_ent *label_ent;
2366     struct nd_label_id label_id;
2367     struct resource *res;
2368     unsigned long *free;
2369     @@ -551,18 +562,10 @@ static int __pmem_label_update(struct nd_region *nd_region,
2370     list_for_each_entry(label_ent, &nd_mapping->labels, list) {
2371     if (!label_ent->label)
2372     continue;
2373     - if (memcmp(nspm->uuid, label_ent->label->uuid,
2374     - NSLABEL_UUID_LEN) != 0)
2375     - continue;
2376     - victim = label_ent;
2377     - list_move_tail(&victim->list, &nd_mapping->labels);
2378     - break;
2379     - }
2380     - if (victim) {
2381     - dev_dbg(ndd->dev, "%s: free: %d\n", __func__, slot);
2382     - slot = to_slot(ndd, victim->label);
2383     - nd_label_free_slot(ndd, slot);
2384     - victim->label = NULL;
2385     + if (test_and_clear_bit(ND_LABEL_REAP, &label_ent->flags)
2386     + || memcmp(nspm->uuid, label_ent->label->uuid,
2387     + NSLABEL_UUID_LEN) == 0)
2388     + reap_victim(nd_mapping, label_ent);
2389     }
2390    
2391     /* update index */
2392     diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
2393     index cf4a90b50f8b..e83453e1b308 100644
2394     --- a/drivers/nvdimm/namespace_devs.c
2395     +++ b/drivers/nvdimm/namespace_devs.c
2396     @@ -1210,12 +1210,27 @@ static int namespace_update_uuid(struct nd_region *nd_region,
2397     for (i = 0; i < nd_region->ndr_mappings; i++) {
2398     struct nd_mapping *nd_mapping = &nd_region->mapping[i];
2399     struct nvdimm_drvdata *ndd = to_ndd(nd_mapping);
2400     + struct nd_label_ent *label_ent;
2401     struct resource *res;
2402    
2403     for_each_dpa_resource(ndd, res)
2404     if (strcmp(res->name, old_label_id.id) == 0)
2405     sprintf((void *) res->name, "%s",
2406     new_label_id.id);
2407     +
2408     + mutex_lock(&nd_mapping->lock);
2409     + list_for_each_entry(label_ent, &nd_mapping->labels, list) {
2410     + struct nd_namespace_label *nd_label = label_ent->label;
2411     + struct nd_label_id label_id;
2412     +
2413     + if (!nd_label)
2414     + continue;
2415     + nd_label_gen_id(&label_id, nd_label->uuid,
2416     + __le32_to_cpu(nd_label->flags));
2417     + if (strcmp(old_label_id.id, label_id.id) == 0)
2418     + set_bit(ND_LABEL_REAP, &label_ent->flags);
2419     + }
2420     + mutex_unlock(&nd_mapping->lock);
2421     }
2422     kfree(*old_uuid);
2423     out:
2424     diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h
2425     index d869236b474f..bd29e598bac1 100644
2426     --- a/drivers/nvdimm/nd.h
2427     +++ b/drivers/nvdimm/nd.h
2428     @@ -113,8 +113,12 @@ struct nd_percpu_lane {
2429     spinlock_t lock;
2430     };
2431    
2432     +enum nd_label_flags {
2433     + ND_LABEL_REAP,
2434     +};
2435     struct nd_label_ent {
2436     struct list_head list;
2437     + unsigned long flags;
2438     struct nd_namespace_label *label;
2439     };
2440    
2441     diff --git a/drivers/pinctrl/pinctrl-pistachio.c b/drivers/pinctrl/pinctrl-pistachio.c
2442     index 55375b1b3cc8..b2b7e238bda9 100644
2443     --- a/drivers/pinctrl/pinctrl-pistachio.c
2444     +++ b/drivers/pinctrl/pinctrl-pistachio.c
2445     @@ -1368,6 +1368,7 @@ static int pistachio_gpio_register(struct pistachio_pinctrl *pctl)
2446     if (!of_find_property(child, "gpio-controller", NULL)) {
2447     dev_err(pctl->dev,
2448     "No gpio-controller property for bank %u\n", i);
2449     + of_node_put(child);
2450     ret = -ENODEV;
2451     goto err;
2452     }
2453     @@ -1375,6 +1376,7 @@ static int pistachio_gpio_register(struct pistachio_pinctrl *pctl)
2454     irq = irq_of_parse_and_map(child, 0);
2455     if (irq < 0) {
2456     dev_err(pctl->dev, "No IRQ for bank %u: %d\n", i, irq);
2457     + of_node_put(child);
2458     ret = irq;
2459     goto err;
2460     }
2461     diff --git a/drivers/rtc/rtc-88pm860x.c b/drivers/rtc/rtc-88pm860x.c
2462     index 19e53b3b8e00..166faae3a59c 100644
2463     --- a/drivers/rtc/rtc-88pm860x.c
2464     +++ b/drivers/rtc/rtc-88pm860x.c
2465     @@ -414,7 +414,7 @@ static int pm860x_rtc_remove(struct platform_device *pdev)
2466     struct pm860x_rtc_info *info = platform_get_drvdata(pdev);
2467    
2468     #ifdef VRTC_CALIBRATION
2469     - flush_scheduled_work();
2470     + cancel_delayed_work_sync(&info->calib_work);
2471     /* disable measurement */
2472     pm860x_set_bits(info->i2c, PM8607_MEAS_EN2, MEAS2_VRTC, 0);
2473     #endif /* VRTC_CALIBRATION */
2474     diff --git a/drivers/s390/cio/cio.h b/drivers/s390/cio/cio.h
2475     index f0e57aefb5f2..d167652a6a23 100644
2476     --- a/drivers/s390/cio/cio.h
2477     +++ b/drivers/s390/cio/cio.h
2478     @@ -114,7 +114,7 @@ struct subchannel {
2479     struct schib_config config;
2480     } __attribute__ ((aligned(8)));
2481    
2482     -DECLARE_PER_CPU(struct irb, cio_irb);
2483     +DECLARE_PER_CPU_ALIGNED(struct irb, cio_irb);
2484    
2485     #define to_subchannel(n) container_of(n, struct subchannel, dev)
2486    
2487     diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
2488     index 1a6f65db615e..ee1f9ee995e5 100644
2489     --- a/drivers/scsi/libsas/sas_expander.c
2490     +++ b/drivers/scsi/libsas/sas_expander.c
2491     @@ -2027,6 +2027,11 @@ static int sas_rediscover_dev(struct domain_device *dev, int phy_id, bool last)
2492     if ((SAS_ADDR(sas_addr) == 0) || (res == -ECOMM)) {
2493     phy->phy_state = PHY_EMPTY;
2494     sas_unregister_devs_sas_addr(dev, phy_id, last);
2495     + /*
2496     + * Even though the PHY is empty, for convenience we discover
2497     + * the PHY to update the PHY info, like negotiated linkrate.
2498     + */
2499     + sas_ex_phy_discover(dev, phy_id);
2500     return res;
2501     } else if (SAS_ADDR(sas_addr) == SAS_ADDR(phy->attached_sas_addr) &&
2502     dev_type_flutter(type, phy->attached_dev_type)) {
2503     diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c
2504     index 4ac03b16d17f..52afbcff362f 100644
2505     --- a/drivers/scsi/lpfc/lpfc_ct.c
2506     +++ b/drivers/scsi/lpfc/lpfc_ct.c
2507     @@ -1561,6 +1561,9 @@ lpfc_fdmi_hba_attr_manufacturer(struct lpfc_vport *vport,
2508     ae = (struct lpfc_fdmi_attr_entry *)&ad->AttrValue;
2509     memset(ae, 0, 256);
2510    
2511     + /* This string MUST be consistent with other FC platforms
2512     + * supported by Broadcom.
2513     + */
2514     strncpy(ae->un.AttrString,
2515     "Emulex Corporation",
2516     sizeof(ae->un.AttrString));
2517     diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c
2518     index 81736457328a..9cca5ddbc50c 100644
2519     --- a/drivers/scsi/lpfc/lpfc_hbadisc.c
2520     +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
2521     @@ -901,7 +901,11 @@ lpfc_linkdown(struct lpfc_hba *phba)
2522     lpfc_linkdown_port(vports[i]);
2523     }
2524     lpfc_destroy_vport_work_array(phba, vports);
2525     - /* Clean up any firmware default rpi's */
2526     +
2527     + /* Clean up any SLI3 firmware default rpi's */
2528     + if (phba->sli_rev > LPFC_SLI_REV3)
2529     + goto skip_unreg_did;
2530     +
2531     mb = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
2532     if (mb) {
2533     lpfc_unreg_did(phba, 0xffff, LPFC_UNREG_ALL_DFLT_RPIS, mb);
2534     @@ -913,6 +917,7 @@ lpfc_linkdown(struct lpfc_hba *phba)
2535     }
2536     }
2537    
2538     + skip_unreg_did:
2539     /* Setup myDID for link up if we are in pt2pt mode */
2540     if (phba->pport->fc_flag & FC_PT2PT) {
2541     phba->pport->fc_myDID = 0;
2542     @@ -4654,6 +4659,10 @@ lpfc_unreg_default_rpis(struct lpfc_vport *vport)
2543     LPFC_MBOXQ_t *mbox;
2544     int rc;
2545    
2546     + /* Unreg DID is an SLI3 operation. */
2547     + if (phba->sli_rev > LPFC_SLI_REV3)
2548     + return;
2549     +
2550     mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
2551     if (mbox) {
2552     lpfc_unreg_did(phba, vport->vpi, LPFC_UNREG_ALL_DFLT_RPIS,
2553     diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
2554     index 73c99f237b10..f0fcff032f8a 100644
2555     --- a/drivers/scsi/qla2xxx/qla_isr.c
2556     +++ b/drivers/scsi/qla2xxx/qla_isr.c
2557     @@ -3089,7 +3089,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
2558     ql_log(ql_log_fatal, vha, 0x00c8,
2559     "Failed to allocate memory for ha->msix_entries.\n");
2560     ret = -ENOMEM;
2561     - goto msix_out;
2562     + goto free_irqs;
2563     }
2564     ha->flags.msix_enabled = 1;
2565    
2566     @@ -3177,6 +3177,10 @@ msix_register_fail:
2567     msix_out:
2568     kfree(entries);
2569     return ret;
2570     +
2571     +free_irqs:
2572     + pci_free_irq_vectors(ha->pdev);
2573     + goto msix_out;
2574     }
2575    
2576     int
2577     diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
2578     index c158967b59d7..d220b4f691c7 100644
2579     --- a/drivers/scsi/qla4xxx/ql4_os.c
2580     +++ b/drivers/scsi/qla4xxx/ql4_os.c
2581     @@ -5939,7 +5939,7 @@ static int get_fw_boot_info(struct scsi_qla_host *ha, uint16_t ddb_index[])
2582     val = rd_nvram_byte(ha, sec_addr);
2583     if (val & BIT_7)
2584     ddb_index[1] = (val & 0x7f);
2585     -
2586     + goto exit_boot_info;
2587     } else if (is_qla80XX(ha)) {
2588     buf = dma_alloc_coherent(&ha->pdev->dev, size,
2589     &buf_dma, GFP_KERNEL);
2590     diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
2591     index 58345d3d4682..b40fe8d583c0 100644
2592     --- a/drivers/scsi/sd.c
2593     +++ b/drivers/scsi/sd.c
2594     @@ -2403,7 +2403,6 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2595     int res;
2596     struct scsi_device *sdp = sdkp->device;
2597     struct scsi_mode_data data;
2598     - int disk_ro = get_disk_ro(sdkp->disk);
2599     int old_wp = sdkp->write_prot;
2600    
2601     set_disk_ro(sdkp->disk, 0);
2602     @@ -2444,7 +2443,7 @@ sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2603     "Test WP failed, assume Write Enabled\n");
2604     } else {
2605     sdkp->write_prot = ((data.device_specific & 0x80) != 0);
2606     - set_disk_ro(sdkp->disk, sdkp->write_prot || disk_ro);
2607     + set_disk_ro(sdkp->disk, sdkp->write_prot);
2608     if (sdkp->first_scan || old_wp != sdkp->write_prot) {
2609     sd_printk(KERN_NOTICE, sdkp, "Write Protect is %s\n",
2610     sdkp->write_prot ? "on" : "off");
2611     diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
2612     index 0b858414c558..0fe4f8e8c8c9 100644
2613     --- a/drivers/scsi/ufs/ufshcd.c
2614     +++ b/drivers/scsi/ufs/ufshcd.c
2615     @@ -4875,19 +4875,19 @@ static u32 ufshcd_find_max_sup_active_icc_level(struct ufs_hba *hba,
2616     goto out;
2617     }
2618    
2619     - if (hba->vreg_info.vcc)
2620     + if (hba->vreg_info.vcc && hba->vreg_info.vcc->max_uA)
2621     icc_level = ufshcd_get_max_icc_level(
2622     hba->vreg_info.vcc->max_uA,
2623     POWER_DESC_MAX_ACTV_ICC_LVLS - 1,
2624     &desc_buf[PWR_DESC_ACTIVE_LVLS_VCC_0]);
2625    
2626     - if (hba->vreg_info.vccq)
2627     + if (hba->vreg_info.vccq && hba->vreg_info.vccq->max_uA)
2628     icc_level = ufshcd_get_max_icc_level(
2629     hba->vreg_info.vccq->max_uA,
2630     icc_level,
2631     &desc_buf[PWR_DESC_ACTIVE_LVLS_VCCQ_0]);
2632    
2633     - if (hba->vreg_info.vccq2)
2634     + if (hba->vreg_info.vccq2 && hba->vreg_info.vccq2->max_uA)
2635     icc_level = ufshcd_get_max_icc_level(
2636     hba->vreg_info.vccq2->max_uA,
2637     icc_level,
2638     @@ -5449,6 +5449,15 @@ static int ufshcd_config_vreg_load(struct device *dev, struct ufs_vreg *vreg,
2639     if (!vreg)
2640     return 0;
2641    
2642     + /*
2643     + * "set_load" operation shall be required on those regulators
2644     + * which specifically configured current limitation. Otherwise
2645     + * zero max_uA may cause unexpected behavior when regulator is
2646     + * enabled or set as high power mode.
2647     + */
2648     + if (!vreg->max_uA)
2649     + return 0;
2650     +
2651     ret = regulator_set_load(vreg->reg, ua);
2652     if (ret < 0) {
2653     dev_err(dev, "%s: %s set load (ua=%d) failed, err=%d\n",
2654     @@ -5495,12 +5504,15 @@ static int ufshcd_config_vreg(struct device *dev,
2655     name = vreg->name;
2656    
2657     if (regulator_count_voltages(reg) > 0) {
2658     - min_uV = on ? vreg->min_uV : 0;
2659     - ret = regulator_set_voltage(reg, min_uV, vreg->max_uV);
2660     - if (ret) {
2661     - dev_err(dev, "%s: %s set voltage failed, err=%d\n",
2662     + if (vreg->min_uV && vreg->max_uV) {
2663     + min_uV = on ? vreg->min_uV : 0;
2664     + ret = regulator_set_voltage(reg, min_uV, vreg->max_uV);
2665     + if (ret) {
2666     + dev_err(dev,
2667     + "%s: %s set voltage failed, err=%d\n",
2668     __func__, name, ret);
2669     - goto out;
2670     + goto out;
2671     + }
2672     }
2673    
2674     uA_load = on ? vreg->max_uA : 0;
2675     diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
2676     index f2209ec4cb68..8b618f0fa459 100644
2677     --- a/drivers/spi/spi-pxa2xx.c
2678     +++ b/drivers/spi/spi-pxa2xx.c
2679     @@ -921,10 +921,14 @@ static unsigned int ssp_get_clk_div(struct driver_data *drv_data, int rate)
2680    
2681     rate = min_t(int, ssp_clk, rate);
2682    
2683     + /*
2684     + * Calculate the divisor for the SCR (Serial Clock Rate), avoiding
2685     + * that the SSP transmission rate can be greater than the device rate
2686     + */
2687     if (ssp->type == PXA25x_SSP || ssp->type == CE4100_SSP)
2688     - return (ssp_clk / (2 * rate) - 1) & 0xff;
2689     + return (DIV_ROUND_UP(ssp_clk, 2 * rate) - 1) & 0xff;
2690     else
2691     - return (ssp_clk / rate - 1) & 0xfff;
2692     + return (DIV_ROUND_UP(ssp_clk, rate) - 1) & 0xfff;
2693     }
2694    
2695     static unsigned int pxa2xx_ssp_get_clk_div(struct driver_data *drv_data,
2696     diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c
2697     index 093c9cf92bfd..07612e8c58ee 100644
2698     --- a/drivers/spi/spi-rspi.c
2699     +++ b/drivers/spi/spi-rspi.c
2700     @@ -279,7 +279,8 @@ static int rspi_set_config_register(struct rspi_data *rspi, int access_size)
2701     /* Sets parity, interrupt mask */
2702     rspi_write8(rspi, 0x00, RSPI_SPCR2);
2703    
2704     - /* Sets SPCMD */
2705     + /* Resets sequencer */
2706     + rspi_write8(rspi, 0, RSPI_SPSCR);
2707     rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
2708     rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
2709    
2710     @@ -323,7 +324,8 @@ static int rspi_rz_set_config_register(struct rspi_data *rspi, int access_size)
2711     rspi_write8(rspi, 0x00, RSPI_SSLND);
2712     rspi_write8(rspi, 0x00, RSPI_SPND);
2713    
2714     - /* Sets SPCMD */
2715     + /* Resets sequencer */
2716     + rspi_write8(rspi, 0, RSPI_SPSCR);
2717     rspi->spcmd |= SPCMD_SPB_8_TO_16(access_size);
2718     rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
2719    
2720     @@ -374,7 +376,8 @@ static int qspi_set_config_register(struct rspi_data *rspi, int access_size)
2721     /* Sets buffer to allow normal operation */
2722     rspi_write8(rspi, 0x00, QSPI_SPBFCR);
2723    
2724     - /* Sets SPCMD */
2725     + /* Resets sequencer */
2726     + rspi_write8(rspi, 0, RSPI_SPSCR);
2727     rspi_write16(rspi, rspi->spcmd, RSPI_SPCMD0);
2728    
2729     /* Enables SPI function in master mode */
2730     diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
2731     index 73779cecc3bb..705f515863d4 100644
2732     --- a/drivers/spi/spi-tegra114.c
2733     +++ b/drivers/spi/spi-tegra114.c
2734     @@ -1067,27 +1067,19 @@ static int tegra_spi_probe(struct platform_device *pdev)
2735    
2736     spi_irq = platform_get_irq(pdev, 0);
2737     tspi->irq = spi_irq;
2738     - ret = request_threaded_irq(tspi->irq, tegra_spi_isr,
2739     - tegra_spi_isr_thread, IRQF_ONESHOT,
2740     - dev_name(&pdev->dev), tspi);
2741     - if (ret < 0) {
2742     - dev_err(&pdev->dev, "Failed to register ISR for IRQ %d\n",
2743     - tspi->irq);
2744     - goto exit_free_master;
2745     - }
2746    
2747     tspi->clk = devm_clk_get(&pdev->dev, "spi");
2748     if (IS_ERR(tspi->clk)) {
2749     dev_err(&pdev->dev, "can not get clock\n");
2750     ret = PTR_ERR(tspi->clk);
2751     - goto exit_free_irq;
2752     + goto exit_free_master;
2753     }
2754    
2755     tspi->rst = devm_reset_control_get(&pdev->dev, "spi");
2756     if (IS_ERR(tspi->rst)) {
2757     dev_err(&pdev->dev, "can not get reset\n");
2758     ret = PTR_ERR(tspi->rst);
2759     - goto exit_free_irq;
2760     + goto exit_free_master;
2761     }
2762    
2763     tspi->max_buf_size = SPI_FIFO_DEPTH << 2;
2764     @@ -1095,7 +1087,7 @@ static int tegra_spi_probe(struct platform_device *pdev)
2765    
2766     ret = tegra_spi_init_dma_param(tspi, true);
2767     if (ret < 0)
2768     - goto exit_free_irq;
2769     + goto exit_free_master;
2770     ret = tegra_spi_init_dma_param(tspi, false);
2771     if (ret < 0)
2772     goto exit_rx_dma_free;
2773     @@ -1117,18 +1109,32 @@ static int tegra_spi_probe(struct platform_device *pdev)
2774     dev_err(&pdev->dev, "pm runtime get failed, e = %d\n", ret);
2775     goto exit_pm_disable;
2776     }
2777     +
2778     + reset_control_assert(tspi->rst);
2779     + udelay(2);
2780     + reset_control_deassert(tspi->rst);
2781     tspi->def_command1_reg = SPI_M_S;
2782     tegra_spi_writel(tspi, tspi->def_command1_reg, SPI_COMMAND1);
2783     pm_runtime_put(&pdev->dev);
2784     + ret = request_threaded_irq(tspi->irq, tegra_spi_isr,
2785     + tegra_spi_isr_thread, IRQF_ONESHOT,
2786     + dev_name(&pdev->dev), tspi);
2787     + if (ret < 0) {
2788     + dev_err(&pdev->dev, "Failed to register ISR for IRQ %d\n",
2789     + tspi->irq);
2790     + goto exit_pm_disable;
2791     + }
2792    
2793     master->dev.of_node = pdev->dev.of_node;
2794     ret = devm_spi_register_master(&pdev->dev, master);
2795     if (ret < 0) {
2796     dev_err(&pdev->dev, "can not register to master err %d\n", ret);
2797     - goto exit_pm_disable;
2798     + goto exit_free_irq;
2799     }
2800     return ret;
2801    
2802     +exit_free_irq:
2803     + free_irq(spi_irq, tspi);
2804     exit_pm_disable:
2805     pm_runtime_disable(&pdev->dev);
2806     if (!pm_runtime_status_suspended(&pdev->dev))
2807     @@ -1136,8 +1142,6 @@ exit_pm_disable:
2808     tegra_spi_deinit_dma_param(tspi, false);
2809     exit_rx_dma_free:
2810     tegra_spi_deinit_dma_param(tspi, true);
2811     -exit_free_irq:
2812     - free_irq(spi_irq, tspi);
2813     exit_free_master:
2814     spi_master_put(master);
2815     return ret;
2816     diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
2817     index c54ee6674471..fe707440f8c3 100644
2818     --- a/drivers/spi/spi-topcliff-pch.c
2819     +++ b/drivers/spi/spi-topcliff-pch.c
2820     @@ -1306,18 +1306,27 @@ static void pch_free_dma_buf(struct pch_spi_board_data *board_dat,
2821     return;
2822     }
2823    
2824     -static void pch_alloc_dma_buf(struct pch_spi_board_data *board_dat,
2825     +static int pch_alloc_dma_buf(struct pch_spi_board_data *board_dat,
2826     struct pch_spi_data *data)
2827     {
2828     struct pch_spi_dma_ctrl *dma;
2829     + int ret;
2830    
2831     dma = &data->dma;
2832     + ret = 0;
2833     /* Get Consistent memory for Tx DMA */
2834     dma->tx_buf_virt = dma_alloc_coherent(&board_dat->pdev->dev,
2835     PCH_BUF_SIZE, &dma->tx_buf_dma, GFP_KERNEL);
2836     + if (!dma->tx_buf_virt)
2837     + ret = -ENOMEM;
2838     +
2839     /* Get Consistent memory for Rx DMA */
2840     dma->rx_buf_virt = dma_alloc_coherent(&board_dat->pdev->dev,
2841     PCH_BUF_SIZE, &dma->rx_buf_dma, GFP_KERNEL);
2842     + if (!dma->rx_buf_virt)
2843     + ret = -ENOMEM;
2844     +
2845     + return ret;
2846     }
2847    
2848     static int pch_spi_pd_probe(struct platform_device *plat_dev)
2849     @@ -1394,7 +1403,9 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev)
2850    
2851     if (use_dma) {
2852     dev_info(&plat_dev->dev, "Use DMA for data transfers\n");
2853     - pch_alloc_dma_buf(board_dat, data);
2854     + ret = pch_alloc_dma_buf(board_dat, data);
2855     + if (ret)
2856     + goto err_spi_register_master;
2857     }
2858    
2859     ret = spi_register_master(master);
2860     diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
2861     index c2e85e23d538..d74d341f9890 100644
2862     --- a/drivers/spi/spi.c
2863     +++ b/drivers/spi/spi.c
2864     @@ -955,6 +955,8 @@ static int spi_map_msg(struct spi_master *master, struct spi_message *msg)
2865     if (max_tx || max_rx) {
2866     list_for_each_entry(xfer, &msg->transfers,
2867     transfer_list) {
2868     + if (!xfer->len)
2869     + continue;
2870     if (!xfer->tx_buf)
2871     xfer->tx_buf = master->dummy_tx;
2872     if (!xfer->rx_buf)
2873     diff --git a/drivers/ssb/bridge_pcmcia_80211.c b/drivers/ssb/bridge_pcmcia_80211.c
2874     index d70568ea02d5..2ff7d90e166a 100644
2875     --- a/drivers/ssb/bridge_pcmcia_80211.c
2876     +++ b/drivers/ssb/bridge_pcmcia_80211.c
2877     @@ -113,16 +113,21 @@ static struct pcmcia_driver ssb_host_pcmcia_driver = {
2878     .resume = ssb_host_pcmcia_resume,
2879     };
2880    
2881     +static int pcmcia_init_failed;
2882     +
2883     /*
2884     * These are not module init/exit functions!
2885     * The module_pcmcia_driver() helper cannot be used here.
2886     */
2887     int ssb_host_pcmcia_init(void)
2888     {
2889     - return pcmcia_register_driver(&ssb_host_pcmcia_driver);
2890     + pcmcia_init_failed = pcmcia_register_driver(&ssb_host_pcmcia_driver);
2891     +
2892     + return pcmcia_init_failed;
2893     }
2894    
2895     void ssb_host_pcmcia_exit(void)
2896     {
2897     - pcmcia_unregister_driver(&ssb_host_pcmcia_driver);
2898     + if (!pcmcia_init_failed)
2899     + pcmcia_unregister_driver(&ssb_host_pcmcia_driver);
2900     }
2901     diff --git a/drivers/tty/ipwireless/main.c b/drivers/tty/ipwireless/main.c
2902     index 655c7948261c..2fa4f9123469 100644
2903     --- a/drivers/tty/ipwireless/main.c
2904     +++ b/drivers/tty/ipwireless/main.c
2905     @@ -113,6 +113,10 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
2906    
2907     ipw->common_memory = ioremap(p_dev->resource[2]->start,
2908     resource_size(p_dev->resource[2]));
2909     + if (!ipw->common_memory) {
2910     + ret = -ENOMEM;
2911     + goto exit1;
2912     + }
2913     if (!request_mem_region(p_dev->resource[2]->start,
2914     resource_size(p_dev->resource[2]),
2915     IPWIRELESS_PCCARD_NAME)) {
2916     @@ -133,6 +137,10 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, void *priv_data)
2917    
2918     ipw->attr_memory = ioremap(p_dev->resource[3]->start,
2919     resource_size(p_dev->resource[3]));
2920     + if (!ipw->attr_memory) {
2921     + ret = -ENOMEM;
2922     + goto exit3;
2923     + }
2924     if (!request_mem_region(p_dev->resource[3]->start,
2925     resource_size(p_dev->resource[3]),
2926     IPWIRELESS_PCCARD_NAME)) {
2927     diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
2928     index bdb0d7a08ff9..1dd4c65e9188 100644
2929     --- a/drivers/usb/core/hcd.c
2930     +++ b/drivers/usb/core/hcd.c
2931     @@ -3033,6 +3033,9 @@ usb_hcd_platform_shutdown(struct platform_device *dev)
2932     {
2933     struct usb_hcd *hcd = platform_get_drvdata(dev);
2934    
2935     + /* No need for pm_runtime_put(), we're shutting down */
2936     + pm_runtime_get_sync(&dev->dev);
2937     +
2938     if (hcd->driver->shutdown)
2939     hcd->driver->shutdown(hcd);
2940     }
2941     diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
2942     index 8fddb94f1874..3941df076cca 100644
2943     --- a/drivers/usb/core/hub.c
2944     +++ b/drivers/usb/core/hub.c
2945     @@ -5703,7 +5703,10 @@ int usb_reset_device(struct usb_device *udev)
2946     cintf->needs_binding = 1;
2947     }
2948     }
2949     - usb_unbind_and_rebind_marked_interfaces(udev);
2950     +
2951     + /* If the reset failed, hub_wq will unbind drivers later */
2952     + if (ret == 0)
2953     + usb_unbind_and_rebind_marked_interfaces(udev);
2954     }
2955    
2956     usb_autosuspend_device(udev);
2957     diff --git a/drivers/video/fbdev/core/fbcmap.c b/drivers/video/fbdev/core/fbcmap.c
2958     index 68a113594808..2811c4afde01 100644
2959     --- a/drivers/video/fbdev/core/fbcmap.c
2960     +++ b/drivers/video/fbdev/core/fbcmap.c
2961     @@ -94,6 +94,8 @@ int fb_alloc_cmap_gfp(struct fb_cmap *cmap, int len, int transp, gfp_t flags)
2962     int size = len * sizeof(u16);
2963     int ret = -ENOMEM;
2964    
2965     + flags |= __GFP_NOWARN;
2966     +
2967     if (cmap->len != len) {
2968     fb_dealloc_cmap(cmap);
2969     if (!len)
2970     diff --git a/drivers/video/fbdev/core/modedb.c b/drivers/video/fbdev/core/modedb.c
2971     index de119f11b78f..455a15f70172 100644
2972     --- a/drivers/video/fbdev/core/modedb.c
2973     +++ b/drivers/video/fbdev/core/modedb.c
2974     @@ -933,6 +933,9 @@ void fb_var_to_videomode(struct fb_videomode *mode,
2975     if (var->vmode & FB_VMODE_DOUBLE)
2976     vtotal *= 2;
2977    
2978     + if (!htotal || !vtotal)
2979     + return;
2980     +
2981     hfreq = pixclock/htotal;
2982     mode->refresh = hfreq/vtotal;
2983     }
2984     diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c
2985     index f4bc8c100a01..a3ac582420ec 100644
2986     --- a/drivers/w1/w1_io.c
2987     +++ b/drivers/w1/w1_io.c
2988     @@ -437,8 +437,7 @@ int w1_reset_resume_command(struct w1_master *dev)
2989     if (w1_reset_bus(dev))
2990     return -1;
2991    
2992     - /* This will make only the last matched slave perform a skip ROM. */
2993     - w1_write_8(dev, W1_RESUME_CMD);
2994     + w1_write_8(dev, dev->slave_count > 1 ? W1_RESUME_CMD : W1_SKIP_ROM);
2995     return 0;
2996     }
2997     EXPORT_SYMBOL_GPL(w1_reset_resume_command);
2998     diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
2999     index 6b29165f766f..7938c48c72ff 100644
3000     --- a/fs/btrfs/extent-tree.c
3001     +++ b/fs/btrfs/extent-tree.c
3002     @@ -11150,9 +11150,9 @@ int btrfs_error_unpin_extent_range(struct btrfs_root *root, u64 start, u64 end)
3003     * transaction.
3004     */
3005     static int btrfs_trim_free_extents(struct btrfs_device *device,
3006     - struct fstrim_range *range, u64 *trimmed)
3007     + u64 minlen, u64 *trimmed)
3008     {
3009     - u64 start = range->start, len = 0;
3010     + u64 start = 0, len = 0;
3011     int ret;
3012    
3013     *trimmed = 0;
3014     @@ -11188,8 +11188,8 @@ static int btrfs_trim_free_extents(struct btrfs_device *device,
3015     atomic_inc(&trans->use_count);
3016     spin_unlock(&fs_info->trans_lock);
3017    
3018     - ret = find_free_dev_extent_start(trans, device, range->minlen,
3019     - start, &start, &len);
3020     + ret = find_free_dev_extent_start(trans, device, minlen, start,
3021     + &start, &len);
3022     if (trans)
3023     btrfs_put_transaction(trans);
3024    
3025     @@ -11201,16 +11201,6 @@ static int btrfs_trim_free_extents(struct btrfs_device *device,
3026     break;
3027     }
3028    
3029     - /* If we are out of the passed range break */
3030     - if (start > range->start + range->len - 1) {
3031     - mutex_unlock(&fs_info->chunk_mutex);
3032     - ret = 0;
3033     - break;
3034     - }
3035     -
3036     - start = max(range->start, start);
3037     - len = min(range->len, len);
3038     -
3039     ret = btrfs_issue_discard(device->bdev, start, len, &bytes);
3040     up_read(&fs_info->commit_root_sem);
3041     mutex_unlock(&fs_info->chunk_mutex);
3042     @@ -11221,10 +11211,6 @@ static int btrfs_trim_free_extents(struct btrfs_device *device,
3043     start += len;
3044     *trimmed += bytes;
3045    
3046     - /* We've trimmed enough */
3047     - if (*trimmed >= range->len)
3048     - break;
3049     -
3050     if (fatal_signal_pending(current)) {
3051     ret = -ERESTARTSYS;
3052     break;
3053     @@ -11309,7 +11295,8 @@ int btrfs_trim_fs(struct btrfs_root *root, struct fstrim_range *range)
3054     mutex_lock(&fs_info->fs_devices->device_list_mutex);
3055     devices = &fs_info->fs_devices->devices;
3056     list_for_each_entry(device, devices, dev_list) {
3057     - ret = btrfs_trim_free_extents(device, range, &group_trimmed);
3058     + ret = btrfs_trim_free_extents(device, range->minlen,
3059     + &group_trimmed);
3060     if (ret) {
3061     dev_failed++;
3062     dev_ret = ret;
3063     diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
3064     index 437544846e4e..c77114ce884b 100644
3065     --- a/fs/btrfs/file.c
3066     +++ b/fs/btrfs/file.c
3067     @@ -1951,6 +1951,18 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
3068     bool full_sync = 0;
3069     u64 len;
3070    
3071     + /*
3072     + * If the inode needs a full sync, make sure we use a full range to
3073     + * avoid log tree corruption, due to hole detection racing with ordered
3074     + * extent completion for adjacent ranges, and assertion failures during
3075     + * hole detection.
3076     + */
3077     + if (test_bit(BTRFS_INODE_NEEDS_FULL_SYNC,
3078     + &BTRFS_I(inode)->runtime_flags)) {
3079     + start = 0;
3080     + end = LLONG_MAX;
3081     + }
3082     +
3083     /*
3084     * The range length can be represented by u64, we have to do the typecasts
3085     * to avoid signed overflow if it's [0, LLONG_MAX] eg. from fsync()
3086     diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
3087     index edae751e870c..307b8baaf0e9 100644
3088     --- a/fs/btrfs/root-tree.c
3089     +++ b/fs/btrfs/root-tree.c
3090     @@ -144,10 +144,8 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, struct btrfs_root
3091     return -ENOMEM;
3092    
3093     ret = btrfs_search_slot(trans, root, key, path, 0, 1);
3094     - if (ret < 0) {
3095     - btrfs_abort_transaction(trans, ret);
3096     + if (ret < 0)
3097     goto out;
3098     - }
3099    
3100     if (ret != 0) {
3101     btrfs_print_leaf(root, path->nodes[0]);
3102     diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
3103     index 1f157fba8940..510cad48e519 100644
3104     --- a/fs/btrfs/sysfs.c
3105     +++ b/fs/btrfs/sysfs.c
3106     @@ -751,7 +751,12 @@ int btrfs_sysfs_add_fsid(struct btrfs_fs_devices *fs_devs,
3107     fs_devs->fsid_kobj.kset = btrfs_kset;
3108     error = kobject_init_and_add(&fs_devs->fsid_kobj,
3109     &btrfs_ktype, parent, "%pU", fs_devs->fsid);
3110     - return error;
3111     + if (error) {
3112     + kobject_put(&fs_devs->fsid_kobj);
3113     + return error;
3114     + }
3115     +
3116     + return 0;
3117     }
3118    
3119     int btrfs_sysfs_add_mounted(struct btrfs_fs_info *fs_info)
3120     diff --git a/fs/char_dev.c b/fs/char_dev.c
3121     index 44a240c4bb65..a112a4745d8b 100644
3122     --- a/fs/char_dev.c
3123     +++ b/fs/char_dev.c
3124     @@ -134,6 +134,12 @@ __register_chrdev_region(unsigned int major, unsigned int baseminor,
3125     ret = -EBUSY;
3126     goto out;
3127     }
3128     +
3129     + if (new_min < old_min && new_max > old_max) {
3130     + ret = -EBUSY;
3131     + goto out;
3132     + }
3133     +
3134     }
3135    
3136     cd->next = *cp;
3137     diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
3138     index 4815be26b15f..b8046182efb0 100644
3139     --- a/fs/ext4/inode.c
3140     +++ b/fs/ext4/inode.c
3141     @@ -5223,7 +5223,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr)
3142     up_write(&EXT4_I(inode)->i_data_sem);
3143     ext4_journal_stop(handle);
3144     if (error) {
3145     - if (orphan)
3146     + if (orphan && inode->i_nlink)
3147     ext4_orphan_del(NULL, inode);
3148     goto err_out;
3149     }
3150     diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
3151     index 7a8b1d72e3d9..efd44d5645d8 100644
3152     --- a/fs/gfs2/glock.c
3153     +++ b/fs/gfs2/glock.c
3154     @@ -136,22 +136,26 @@ static int demote_ok(const struct gfs2_glock *gl)
3155    
3156     void gfs2_glock_add_to_lru(struct gfs2_glock *gl)
3157     {
3158     + if (!(gl->gl_ops->go_flags & GLOF_LRU))
3159     + return;
3160     +
3161     spin_lock(&lru_lock);
3162    
3163     - if (!list_empty(&gl->gl_lru))
3164     - list_del_init(&gl->gl_lru);
3165     - else
3166     + list_del(&gl->gl_lru);
3167     + list_add_tail(&gl->gl_lru, &lru_list);
3168     +
3169     + if (!test_bit(GLF_LRU, &gl->gl_flags)) {
3170     + set_bit(GLF_LRU, &gl->gl_flags);
3171     atomic_inc(&lru_count);
3172     + }
3173    
3174     - list_add_tail(&gl->gl_lru, &lru_list);
3175     - set_bit(GLF_LRU, &gl->gl_flags);
3176     spin_unlock(&lru_lock);
3177     }
3178    
3179     static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl)
3180     {
3181     spin_lock(&lru_lock);
3182     - if (!list_empty(&gl->gl_lru)) {
3183     + if (test_bit(GLF_LRU, &gl->gl_flags)) {
3184     list_del_init(&gl->gl_lru);
3185     atomic_dec(&lru_count);
3186     clear_bit(GLF_LRU, &gl->gl_flags);
3187     @@ -1048,8 +1052,7 @@ void gfs2_glock_dq(struct gfs2_holder *gh)
3188     !test_bit(GLF_DEMOTE, &gl->gl_flags))
3189     fast_path = 1;
3190     }
3191     - if (!test_bit(GLF_LFLUSH, &gl->gl_flags) && demote_ok(gl) &&
3192     - (glops->go_flags & GLOF_LRU))
3193     + if (!test_bit(GLF_LFLUSH, &gl->gl_flags) && demote_ok(gl))
3194     gfs2_glock_add_to_lru(gl);
3195    
3196     trace_gfs2_glock_queue(gh, 0);
3197     @@ -1349,6 +1352,7 @@ __acquires(&lru_lock)
3198     if (!spin_trylock(&gl->gl_lockref.lock)) {
3199     add_back_to_lru:
3200     list_add(&gl->gl_lru, &lru_list);
3201     + set_bit(GLF_LRU, &gl->gl_flags);
3202     atomic_inc(&lru_count);
3203     continue;
3204     }
3205     @@ -1356,7 +1360,6 @@ add_back_to_lru:
3206     spin_unlock(&gl->gl_lockref.lock);
3207     goto add_back_to_lru;
3208     }
3209     - clear_bit(GLF_LRU, &gl->gl_flags);
3210     gl->gl_lockref.count++;
3211     if (demote_ok(gl))
3212     handle_callback(gl, LM_ST_UNLOCKED, 0, false);
3213     @@ -1392,6 +1395,7 @@ static long gfs2_scan_glock_lru(int nr)
3214     if (!test_bit(GLF_LOCK, &gl->gl_flags)) {
3215     list_move(&gl->gl_lru, &dispose);
3216     atomic_dec(&lru_count);
3217     + clear_bit(GLF_LRU, &gl->gl_flags);
3218     freed++;
3219     continue;
3220     }
3221     diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c
3222     index 8b907c5cc913..3c3d037df824 100644
3223     --- a/fs/gfs2/lock_dlm.c
3224     +++ b/fs/gfs2/lock_dlm.c
3225     @@ -32,9 +32,10 @@ extern struct workqueue_struct *gfs2_control_wq;
3226     * @delta is the difference between the current rtt sample and the
3227     * running average srtt. We add 1/8 of that to the srtt in order to
3228     * update the current srtt estimate. The variance estimate is a bit
3229     - * more complicated. We subtract the abs value of the @delta from
3230     - * the current variance estimate and add 1/4 of that to the running
3231     - * total.
3232     + * more complicated. We subtract the current variance estimate from
3233     + * the abs value of the @delta and add 1/4 of that to the running
3234     + * total. That's equivalent to 3/4 of the current variance
3235     + * estimate plus 1/4 of the abs of @delta.
3236     *
3237     * Note that the index points at the array entry containing the smoothed
3238     * mean value, and the variance is always in the following entry
3239     @@ -50,7 +51,7 @@ static inline void gfs2_update_stats(struct gfs2_lkstats *s, unsigned index,
3240     s64 delta = sample - s->stats[index];
3241     s->stats[index] += (delta >> 3);
3242     index++;
3243     - s->stats[index] += ((abs(delta) - s->stats[index]) >> 2);
3244     + s->stats[index] += (s64)(abs(delta) - s->stats[index]) >> 2;
3245     }
3246    
3247     /**
3248     diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
3249     index 4acc677ac8fb..253b03451b72 100644
3250     --- a/fs/hugetlbfs/inode.c
3251     +++ b/fs/hugetlbfs/inode.c
3252     @@ -451,9 +451,7 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart,
3253     if (next >= end)
3254     break;
3255    
3256     - hash = hugetlb_fault_mutex_hash(h, current->mm,
3257     - &pseudo_vma,
3258     - mapping, next, 0);
3259     + hash = hugetlb_fault_mutex_hash(h, mapping, next, 0);
3260     mutex_lock(&hugetlb_fault_mutex_table[hash]);
3261    
3262     /*
3263     @@ -573,7 +571,6 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,
3264     struct address_space *mapping = inode->i_mapping;
3265     struct hstate *h = hstate_inode(inode);
3266     struct vm_area_struct pseudo_vma;
3267     - struct mm_struct *mm = current->mm;
3268     loff_t hpage_size = huge_page_size(h);
3269     unsigned long hpage_shift = huge_page_shift(h);
3270     pgoff_t start, index, end;
3271     @@ -637,8 +634,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,
3272     addr = index * hpage_size;
3273    
3274     /* mutex taken here, fault path and hole punch */
3275     - hash = hugetlb_fault_mutex_hash(h, mm, &pseudo_vma, mapping,
3276     - index, addr);
3277     + hash = hugetlb_fault_mutex_hash(h, mapping, index, addr);
3278     mutex_lock(&hugetlb_fault_mutex_table[hash]);
3279    
3280     /* See if already present in mapping to avoid alloc/free */
3281     diff --git a/include/linux/bio.h b/include/linux/bio.h
3282     index 97cb48f03dc7..a5ca6f199b88 100644
3283     --- a/include/linux/bio.h
3284     +++ b/include/linux/bio.h
3285     @@ -237,7 +237,7 @@ static inline void bio_cnt_set(struct bio *bio, unsigned int count)
3286     {
3287     if (count != 1) {
3288     bio->bi_flags |= (1 << BIO_REFFED);
3289     - smp_mb__before_atomic();
3290     + smp_mb();
3291     }
3292     atomic_set(&bio->__bi_cnt, count);
3293     }
3294     diff --git a/include/linux/hid.h b/include/linux/hid.h
3295     index fab65b61d6d4..04bdf5477ec5 100644
3296     --- a/include/linux/hid.h
3297     +++ b/include/linux/hid.h
3298     @@ -374,6 +374,7 @@ struct hid_global {
3299    
3300     struct hid_local {
3301     unsigned usage[HID_MAX_USAGES]; /* usage array */
3302     + u8 usage_size[HID_MAX_USAGES]; /* usage size array */
3303     unsigned collection_index[HID_MAX_USAGES]; /* collection index array */
3304     unsigned usage_index;
3305     unsigned usage_minimum;
3306     diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
3307     index b699d59d0f4f..6b8a7b654771 100644
3308     --- a/include/linux/hugetlb.h
3309     +++ b/include/linux/hugetlb.h
3310     @@ -92,9 +92,7 @@ void putback_active_hugepage(struct page *page);
3311     void free_huge_page(struct page *page);
3312     void hugetlb_fix_reserve_counts(struct inode *inode);
3313     extern struct mutex *hugetlb_fault_mutex_table;
3314     -u32 hugetlb_fault_mutex_hash(struct hstate *h, struct mm_struct *mm,
3315     - struct vm_area_struct *vma,
3316     - struct address_space *mapping,
3317     +u32 hugetlb_fault_mutex_hash(struct hstate *h, struct address_space *mapping,
3318     pgoff_t idx, unsigned long address);
3319    
3320     pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud);
3321     diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc/ad_sigma_delta.h
3322     index 6cc48ac55fd2..40b14736c73d 100644
3323     --- a/include/linux/iio/adc/ad_sigma_delta.h
3324     +++ b/include/linux/iio/adc/ad_sigma_delta.h
3325     @@ -66,6 +66,7 @@ struct ad_sigma_delta {
3326     bool irq_dis;
3327    
3328     bool bus_locked;
3329     + bool keep_cs_asserted;
3330    
3331     uint8_t comm;
3332    
3333     diff --git a/include/linux/smpboot.h b/include/linux/smpboot.h
3334     index 12910cf19869..12a4b09f4d08 100644
3335     --- a/include/linux/smpboot.h
3336     +++ b/include/linux/smpboot.h
3337     @@ -30,7 +30,7 @@ struct smpboot_thread_data;
3338     * @thread_comm: The base name of the thread
3339     */
3340     struct smp_hotplug_thread {
3341     - struct task_struct __percpu **store;
3342     + struct task_struct * __percpu *store;
3343     struct list_head list;
3344     int (*thread_should_run)(unsigned int cpu);
3345     void (*thread_fn)(unsigned int cpu);
3346     diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
3347     index cd4f41397c7e..42b7251c597f 100644
3348     --- a/kernel/auditfilter.c
3349     +++ b/kernel/auditfilter.c
3350     @@ -1095,22 +1095,24 @@ int audit_rule_change(int type, __u32 portid, int seq, void *data,
3351     int err = 0;
3352     struct audit_entry *entry;
3353    
3354     - entry = audit_data_to_entry(data, datasz);
3355     - if (IS_ERR(entry))
3356     - return PTR_ERR(entry);
3357     -
3358     switch (type) {
3359     case AUDIT_ADD_RULE:
3360     + entry = audit_data_to_entry(data, datasz);
3361     + if (IS_ERR(entry))
3362     + return PTR_ERR(entry);
3363     err = audit_add_rule(entry);
3364     audit_log_rule_change("add_rule", &entry->rule, !err);
3365     break;
3366     case AUDIT_DEL_RULE:
3367     + entry = audit_data_to_entry(data, datasz);
3368     + if (IS_ERR(entry))
3369     + return PTR_ERR(entry);
3370     err = audit_del_rule(entry);
3371     audit_log_rule_change("remove_rule", &entry->rule, !err);
3372     break;
3373     default:
3374     - err = -EINVAL;
3375     WARN_ON(1);
3376     + return -EINVAL;
3377     }
3378    
3379     if (err || type == AUDIT_DEL_RULE) {
3380     diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c
3381     index 123ccbd22449..2b8579d5a544 100644
3382     --- a/kernel/rcu/rcuperf.c
3383     +++ b/kernel/rcu/rcuperf.c
3384     @@ -453,6 +453,10 @@ rcu_perf_cleanup(void)
3385    
3386     if (torture_cleanup_begin())
3387     return;
3388     + if (!cur_ops) {
3389     + torture_cleanup_end();
3390     + return;
3391     + }
3392    
3393     if (reader_tasks) {
3394     for (i = 0; i < nrealreaders; i++)
3395     @@ -574,6 +578,7 @@ rcu_perf_init(void)
3396     pr_alert(" %s", perf_ops[i]->name);
3397     pr_alert("\n");
3398     firsterr = -EINVAL;
3399     + cur_ops = NULL;
3400     goto unwind;
3401     }
3402     if (cur_ops->init)
3403     diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
3404     index bf08fee53dc7..5393bbcf3c1a 100644
3405     --- a/kernel/rcu/rcutorture.c
3406     +++ b/kernel/rcu/rcutorture.c
3407     @@ -1595,6 +1595,10 @@ rcu_torture_cleanup(void)
3408     cur_ops->cb_barrier();
3409     return;
3410     }
3411     + if (!cur_ops) {
3412     + torture_cleanup_end();
3413     + return;
3414     + }
3415    
3416     rcu_torture_barrier_cleanup();
3417     torture_stop_kthread(rcu_torture_stall, stall_task);
3418     @@ -1730,6 +1734,7 @@ rcu_torture_init(void)
3419     pr_alert(" %s", torture_ops[i]->name);
3420     pr_alert("\n");
3421     firsterr = -EINVAL;
3422     + cur_ops = NULL;
3423     goto unwind;
3424     }
3425     if (cur_ops->fqs == NULL && fqs_duration != 0) {
3426     diff --git a/kernel/sched/core.c b/kernel/sched/core.c
3427     index 50e80b1be2c8..3861dd6da91e 100644
3428     --- a/kernel/sched/core.c
3429     +++ b/kernel/sched/core.c
3430     @@ -8512,6 +8512,8 @@ static void cpu_cgroup_attach(struct cgroup_taskset *tset)
3431     static int cpu_shares_write_u64(struct cgroup_subsys_state *css,
3432     struct cftype *cftype, u64 shareval)
3433     {
3434     + if (shareval > scale_load_down(ULONG_MAX))
3435     + shareval = MAX_SHARES;
3436     return sched_group_set_shares(css_tg(css), scale_load(shareval));
3437     }
3438    
3439     @@ -8611,8 +8613,10 @@ int tg_set_cfs_quota(struct task_group *tg, long cfs_quota_us)
3440     period = ktime_to_ns(tg->cfs_bandwidth.period);
3441     if (cfs_quota_us < 0)
3442     quota = RUNTIME_INF;
3443     - else
3444     + else if ((u64)cfs_quota_us <= U64_MAX / NSEC_PER_USEC)
3445     quota = (u64)cfs_quota_us * NSEC_PER_USEC;
3446     + else
3447     + return -EINVAL;
3448    
3449     return tg_set_cfs_bandwidth(tg, period, quota);
3450     }
3451     @@ -8634,6 +8638,9 @@ int tg_set_cfs_period(struct task_group *tg, long cfs_period_us)
3452     {
3453     u64 quota, period;
3454    
3455     + if ((u64)cfs_period_us > U64_MAX / NSEC_PER_USEC)
3456     + return -EINVAL;
3457     +
3458     period = (u64)cfs_period_us * NSEC_PER_USEC;
3459     quota = tg->cfs_bandwidth.quota;
3460    
3461     diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c
3462     index 7e35fc450c5b..5a07f19059c3 100644
3463     --- a/lib/strncpy_from_user.c
3464     +++ b/lib/strncpy_from_user.c
3465     @@ -22,10 +22,11 @@
3466     * hit it), 'max' is the address space maximum (and we return
3467     * -EFAULT if we hit it).
3468     */
3469     -static inline long do_strncpy_from_user(char *dst, const char __user *src, long count, unsigned long max)
3470     +static inline long do_strncpy_from_user(char *dst, const char __user *src,
3471     + unsigned long count, unsigned long max)
3472     {
3473     const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
3474     - long res = 0;
3475     + unsigned long res = 0;
3476    
3477     /*
3478     * Truncate 'max' to the user-specified limit, so that
3479     diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c
3480     index 8e105ed4df12..9ff4f3bbb1aa 100644
3481     --- a/lib/strnlen_user.c
3482     +++ b/lib/strnlen_user.c
3483     @@ -27,7 +27,7 @@
3484     static inline long do_strnlen_user(const char __user *src, unsigned long count, unsigned long max)
3485     {
3486     const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS;
3487     - long align, res = 0;
3488     + unsigned long align, res = 0;
3489     unsigned long c;
3490    
3491     /*
3492     @@ -41,7 +41,7 @@ static inline long do_strnlen_user(const char __user *src, unsigned long count,
3493     * Do everything aligned. But that means that we
3494     * need to also expand the maximum..
3495     */
3496     - align = (sizeof(long) - 1) & (unsigned long)src;
3497     + align = (sizeof(unsigned long) - 1) & (unsigned long)src;
3498     src -= align;
3499     max += align;
3500    
3501     diff --git a/mm/hugetlb.c b/mm/hugetlb.c
3502     index 8b682da98d95..75d8bd7e8798 100644
3503     --- a/mm/hugetlb.c
3504     +++ b/mm/hugetlb.c
3505     @@ -3812,21 +3812,14 @@ backout_unlocked:
3506     }
3507    
3508     #ifdef CONFIG_SMP
3509     -u32 hugetlb_fault_mutex_hash(struct hstate *h, struct mm_struct *mm,
3510     - struct vm_area_struct *vma,
3511     - struct address_space *mapping,
3512     +u32 hugetlb_fault_mutex_hash(struct hstate *h, struct address_space *mapping,
3513     pgoff_t idx, unsigned long address)
3514     {
3515     unsigned long key[2];
3516     u32 hash;
3517    
3518     - if (vma->vm_flags & VM_SHARED) {
3519     - key[0] = (unsigned long) mapping;
3520     - key[1] = idx;
3521     - } else {
3522     - key[0] = (unsigned long) mm;
3523     - key[1] = address >> huge_page_shift(h);
3524     - }
3525     + key[0] = (unsigned long) mapping;
3526     + key[1] = idx;
3527    
3528     hash = jhash2((u32 *)&key, sizeof(key)/sizeof(u32), 0);
3529    
3530     @@ -3837,9 +3830,7 @@ u32 hugetlb_fault_mutex_hash(struct hstate *h, struct mm_struct *mm,
3531     * For uniprocesor systems we always use a single mutex, so just
3532     * return 0 and avoid the hashing overhead.
3533     */
3534     -u32 hugetlb_fault_mutex_hash(struct hstate *h, struct mm_struct *mm,
3535     - struct vm_area_struct *vma,
3536     - struct address_space *mapping,
3537     +u32 hugetlb_fault_mutex_hash(struct hstate *h, struct address_space *mapping,
3538     pgoff_t idx, unsigned long address)
3539     {
3540     return 0;
3541     @@ -3885,7 +3876,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
3542     * get spurious allocation failures if two CPUs race to instantiate
3543     * the same page in the page cache.
3544     */
3545     - hash = hugetlb_fault_mutex_hash(h, mm, vma, mapping, idx, address);
3546     + hash = hugetlb_fault_mutex_hash(h, mapping, idx, address);
3547     mutex_lock(&hugetlb_fault_mutex_table[hash]);
3548    
3549     entry = huge_ptep_get(ptep);
3550     diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
3551     index 6e0aa296f134..d787717140e5 100644
3552     --- a/net/mac80211/mlme.c
3553     +++ b/net/mac80211/mlme.c
3554     @@ -1072,9 +1072,6 @@ static void ieee80211_chswitch_work(struct work_struct *work)
3555     goto out;
3556     }
3557    
3558     - /* XXX: shouldn't really modify cfg80211-owned data! */
3559     - ifmgd->associated->channel = sdata->csa_chandef.chan;
3560     -
3561     ifmgd->csa_waiting_bcn = true;
3562    
3563     ieee80211_sta_reset_beacon_monitor(sdata);
3564     diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
3565     index 09a353c6373a..d6e629315771 100644
3566     --- a/net/wireless/nl80211.c
3567     +++ b/net/wireless/nl80211.c
3568     @@ -14014,6 +14014,11 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
3569    
3570     wdev->chandef = *chandef;
3571     wdev->preset_chandef = *chandef;
3572     +
3573     + if (wdev->iftype == NL80211_IFTYPE_STATION &&
3574     + !WARN_ON(!wdev->current_bss))
3575     + wdev->current_bss->pub.channel = chandef->chan;
3576     +
3577     nl80211_ch_switch_notify(rdev, dev, chandef, GFP_KERNEL,
3578     NL80211_CMD_CH_SWITCH_NOTIFY, 0);
3579     }
3580     diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
3581     index 90b5948e0ff3..cba5b5a29da0 100644
3582     --- a/sound/soc/codecs/hdmi-codec.c
3583     +++ b/sound/soc/codecs/hdmi-codec.c
3584     @@ -137,8 +137,12 @@ static int hdmi_codec_startup(struct snd_pcm_substream *substream,
3585     if (!ret) {
3586     ret = snd_pcm_hw_constraint_eld(substream->runtime,
3587     hcp->eld);
3588     - if (ret)
3589     + if (ret) {
3590     + mutex_lock(&hcp->current_stream_lock);
3591     + hcp->current_stream = NULL;
3592     + mutex_unlock(&hcp->current_stream_lock);
3593     return ret;
3594     + }
3595     }
3596     }
3597     return 0;
3598     diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
3599     index 3c5a9804d3f5..5a0b17ebfc02 100644
3600     --- a/sound/soc/davinci/davinci-mcasp.c
3601     +++ b/sound/soc/davinci/davinci-mcasp.c
3602     @@ -43,6 +43,7 @@
3603    
3604     #define MCASP_MAX_AFIFO_DEPTH 64
3605    
3606     +#ifdef CONFIG_PM
3607     static u32 context_regs[] = {
3608     DAVINCI_MCASP_TXFMCTL_REG,
3609     DAVINCI_MCASP_RXFMCTL_REG,
3610     @@ -65,6 +66,7 @@ struct davinci_mcasp_context {
3611     u32 *xrsr_regs; /* for serializer configuration */
3612     bool pm_state;
3613     };
3614     +#endif
3615    
3616     struct davinci_mcasp_ruledata {
3617     struct davinci_mcasp *mcasp;
3618     diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
3619     index a732b3a065c9..8a2873a7899a 100644
3620     --- a/sound/soc/fsl/Kconfig
3621     +++ b/sound/soc/fsl/Kconfig
3622     @@ -172,16 +172,17 @@ config SND_MPC52xx_SOC_EFIKA
3623    
3624     endif # SND_POWERPC_SOC
3625    
3626     +config SND_SOC_IMX_PCM_FIQ
3627     + tristate
3628     + default y if SND_SOC_IMX_SSI=y && (SND_SOC_FSL_SSI=m || SND_SOC_FSL_SPDIF=m) && (MXC_TZIC || MXC_AVIC)
3629     + select FIQ
3630     +
3631     if SND_IMX_SOC
3632    
3633     config SND_SOC_IMX_SSI
3634     tristate
3635     select SND_SOC_FSL_UTILS
3636    
3637     -config SND_SOC_IMX_PCM_FIQ
3638     - tristate
3639     - select FIQ
3640     -
3641     comment "SoC Audio support for Freescale i.MX boards:"
3642    
3643     config SND_MXC_SOC_WM1133_EV1
3644     diff --git a/sound/soc/fsl/eukrea-tlv320.c b/sound/soc/fsl/eukrea-tlv320.c
3645     index 883087f2b092..38132143b7d5 100644
3646     --- a/sound/soc/fsl/eukrea-tlv320.c
3647     +++ b/sound/soc/fsl/eukrea-tlv320.c
3648     @@ -119,13 +119,13 @@ static int eukrea_tlv320_probe(struct platform_device *pdev)
3649     if (ret) {
3650     dev_err(&pdev->dev,
3651     "fsl,mux-int-port node missing or invalid.\n");
3652     - return ret;
3653     + goto err;
3654     }
3655     ret = of_property_read_u32(np, "fsl,mux-ext-port", &ext_port);
3656     if (ret) {
3657     dev_err(&pdev->dev,
3658     "fsl,mux-ext-port node missing or invalid.\n");
3659     - return ret;
3660     + goto err;
3661     }
3662    
3663     /*
3664     diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
3665     index 9fadf7e31c5f..cb43f57f978b 100644
3666     --- a/sound/soc/fsl/fsl_sai.c
3667     +++ b/sound/soc/fsl/fsl_sai.c
3668     @@ -274,12 +274,14 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai *cpu_dai,
3669     case SND_SOC_DAIFMT_CBS_CFS:
3670     val_cr2 |= FSL_SAI_CR2_BCD_MSTR;
3671     val_cr4 |= FSL_SAI_CR4_FSD_MSTR;
3672     + sai->is_slave_mode = false;
3673     break;
3674     case SND_SOC_DAIFMT_CBM_CFM:
3675     sai->is_slave_mode = true;
3676     break;
3677     case SND_SOC_DAIFMT_CBS_CFM:
3678     val_cr2 |= FSL_SAI_CR2_BCD_MSTR;
3679     + sai->is_slave_mode = false;
3680     break;
3681     case SND_SOC_DAIFMT_CBM_CFS:
3682     val_cr4 |= FSL_SAI_CR4_FSD_MSTR;
3683     diff --git a/sound/soc/fsl/fsl_utils.c b/sound/soc/fsl/fsl_utils.c
3684     index b9e42b503a37..4f8bdb7650e8 100644
3685     --- a/sound/soc/fsl/fsl_utils.c
3686     +++ b/sound/soc/fsl/fsl_utils.c
3687     @@ -75,6 +75,7 @@ int fsl_asoc_get_dma_channel(struct device_node *ssi_np,
3688     iprop = of_get_property(dma_np, "cell-index", NULL);
3689     if (!iprop) {
3690     of_node_put(dma_np);
3691     + of_node_put(dma_channel_np);
3692     return -EINVAL;
3693     }
3694     *dma_id = be32_to_cpup(iprop);
3695     diff --git a/tools/include/linux/bitops.h b/tools/include/linux/bitops.h
3696     index fc446343ff41..7e3b87a77334 100644
3697     --- a/tools/include/linux/bitops.h
3698     +++ b/tools/include/linux/bitops.h
3699     @@ -3,8 +3,6 @@
3700    
3701     #include <asm/types.h>
3702     #include <linux/kernel.h>
3703     -#include <linux/compiler.h>
3704     -
3705     #ifndef __WORDSIZE
3706     #define __WORDSIZE (__SIZEOF_LONG__ * 8)
3707     #endif
3708     @@ -12,10 +10,9 @@
3709     #ifndef BITS_PER_LONG
3710     # define BITS_PER_LONG __WORDSIZE
3711     #endif
3712     +#include <linux/bits.h>
3713     +#include <linux/compiler.h>
3714    
3715     -#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
3716     -#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
3717     -#define BITS_PER_BYTE 8
3718     #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
3719     #define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64))
3720     #define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))
3721     diff --git a/tools/include/linux/bits.h b/tools/include/linux/bits.h
3722     new file mode 100644
3723     index 000000000000..2b7b532c1d51
3724     --- /dev/null
3725     +++ b/tools/include/linux/bits.h
3726     @@ -0,0 +1,26 @@
3727     +/* SPDX-License-Identifier: GPL-2.0 */
3728     +#ifndef __LINUX_BITS_H
3729     +#define __LINUX_BITS_H
3730     +#include <asm/bitsperlong.h>
3731     +
3732     +#define BIT(nr) (1UL << (nr))
3733     +#define BIT_ULL(nr) (1ULL << (nr))
3734     +#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
3735     +#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
3736     +#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG))
3737     +#define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG)
3738     +#define BITS_PER_BYTE 8
3739     +
3740     +/*
3741     + * Create a contiguous bitmask starting at bit position @l and ending at
3742     + * position @h. For example
3743     + * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
3744     + */
3745     +#define GENMASK(h, l) \
3746     + (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
3747     +
3748     +#define GENMASK_ULL(h, l) \
3749     + (((~0ULL) - (1ULL << (l)) + 1) & \
3750     + (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
3751     +
3752     +#endif /* __LINUX_BITS_H */
3753     diff --git a/tools/perf/check-headers.sh b/tools/perf/check-headers.sh
3754     index 83fe2202382e..ff38fc63bceb 100755
3755     --- a/tools/perf/check-headers.sh
3756     +++ b/tools/perf/check-headers.sh
3757     @@ -4,6 +4,7 @@ HEADERS='
3758     include/uapi/linux/fcntl.h
3759     include/uapi/linux/perf_event.h
3760     include/uapi/linux/stat.h
3761     +include/linux/bits.h
3762     include/linux/hash.h
3763     include/uapi/linux/hw_breakpoint.h
3764     arch/x86/include/asm/disabled-features.h
3765     diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
3766     index e72d370889f8..8b39e8086c2d 100644
3767     --- a/tools/perf/util/util.h
3768     +++ b/tools/perf/util/util.h
3769     @@ -74,7 +74,6 @@
3770     #include <sys/ttydefaults.h>
3771     #include <api/fs/tracing_path.h>
3772     #include <termios.h>
3773     -#include <linux/bitops.h>
3774     #include <termios.h>
3775     #include "strlist.h"
3776