Magellan Linux

Contents of /trunk/kernel-alx/patches-3.10/0159-3.10.60-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2647 - (show annotations) (download)
Tue Jul 21 16:20:21 2015 UTC (8 years, 9 months ago) by niro
File size: 144980 byte(s)
-linux-3.10.60
1 diff --git a/Makefile b/Makefile
2 index 7baf27f5cf0f..9d4f30d0d201 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 3
7 PATCHLEVEL = 10
8 -SUBLEVEL = 59
9 +SUBLEVEL = 60
10 EXTRAVERSION =
11 NAME = TOSSUG Baby Fish
12
13 diff --git a/arch/arc/boot/dts/nsimosci.dts b/arch/arc/boot/dts/nsimosci.dts
14 index 4f31b2eb5cdf..398064cef746 100644
15 --- a/arch/arc/boot/dts/nsimosci.dts
16 +++ b/arch/arc/boot/dts/nsimosci.dts
17 @@ -20,7 +20,7 @@
18 /* this is for console on PGU */
19 /* bootargs = "console=tty0 consoleblank=0"; */
20 /* this is for console on serial */
21 - bootargs = "earlycon=uart8250,mmio32,0xc0000000,115200n8 console=ttyS0,115200n8 consoleblank=0 debug";
22 + bootargs = "earlycon=uart8250,mmio32,0xc0000000,115200n8 console=tty0 console=ttyS0,115200n8 consoleblank=0 debug";
23 };
24
25 aliases {
26 diff --git a/arch/arc/include/asm/kgdb.h b/arch/arc/include/asm/kgdb.h
27 index 4930957ca3d3..e897610c657a 100644
28 --- a/arch/arc/include/asm/kgdb.h
29 +++ b/arch/arc/include/asm/kgdb.h
30 @@ -19,7 +19,7 @@
31 * register API yet */
32 #undef DBG_MAX_REG_NUM
33
34 -#define GDB_MAX_REGS 39
35 +#define GDB_MAX_REGS 87
36
37 #define BREAK_INSTR_SIZE 2
38 #define CACHE_FLUSH_IS_SAFE 1
39 @@ -33,23 +33,27 @@ static inline void arch_kgdb_breakpoint(void)
40
41 extern void kgdb_trap(struct pt_regs *regs, int param);
42
43 -enum arc700_linux_regnums {
44 +/* This is the numbering of registers according to the GDB. See GDB's
45 + * arc-tdep.h for details.
46 + *
47 + * Registers are ordered for GDB 7.5. It is incompatible with GDB 6.8. */
48 +enum arc_linux_regnums {
49 _R0 = 0,
50 _R1, _R2, _R3, _R4, _R5, _R6, _R7, _R8, _R9, _R10, _R11, _R12, _R13,
51 _R14, _R15, _R16, _R17, _R18, _R19, _R20, _R21, _R22, _R23, _R24,
52 _R25, _R26,
53 - _BTA = 27,
54 - _LP_START = 28,
55 - _LP_END = 29,
56 - _LP_COUNT = 30,
57 - _STATUS32 = 31,
58 - _BLINK = 32,
59 - _FP = 33,
60 - __SP = 34,
61 - _EFA = 35,
62 - _RET = 36,
63 - _ORIG_R8 = 37,
64 - _STOP_PC = 38
65 + _FP = 27,
66 + __SP = 28,
67 + _R30 = 30,
68 + _BLINK = 31,
69 + _LP_COUNT = 60,
70 + _STOP_PC = 64,
71 + _RET = 64,
72 + _LP_START = 65,
73 + _LP_END = 66,
74 + _STATUS32 = 67,
75 + _ECR = 76,
76 + _BTA = 82,
77 };
78
79 #else
80 diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
81 index 0e17e1352718..a91a7a99f70f 100644
82 --- a/arch/mips/mm/tlbex.c
83 +++ b/arch/mips/mm/tlbex.c
84 @@ -1091,6 +1091,7 @@ static void __cpuinit build_update_entries(u32 **p, unsigned int tmp,
85 struct mips_huge_tlb_info {
86 int huge_pte;
87 int restore_scratch;
88 + bool need_reload_pte;
89 };
90
91 static struct mips_huge_tlb_info __cpuinit
92 @@ -1105,6 +1106,7 @@ build_fast_tlb_refill_handler (u32 **p, struct uasm_label **l,
93
94 rv.huge_pte = scratch;
95 rv.restore_scratch = 0;
96 + rv.need_reload_pte = false;
97
98 if (check_for_high_segbits) {
99 UASM_i_MFC0(p, tmp, C0_BADVADDR);
100 @@ -1293,6 +1295,7 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
101 } else {
102 htlb_info.huge_pte = K0;
103 htlb_info.restore_scratch = 0;
104 + htlb_info.need_reload_pte = true;
105 vmalloc_mode = refill_noscratch;
106 /*
107 * create the plain linear handler
108 @@ -1329,7 +1332,8 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
109 }
110 #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
111 uasm_l_tlb_huge_update(&l, p);
112 - UASM_i_LW(&p, K0, 0, K1);
113 + if (htlb_info.need_reload_pte)
114 + UASM_i_LW(&p, htlb_info.huge_pte, 0, K1);
115 build_huge_update_entries(&p, htlb_info.huge_pte, K1);
116 build_huge_tlb_write_entry(&p, &l, &r, K0, tlb_random,
117 htlb_info.restore_scratch);
118 diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S
119 index 474dc1b59f72..c9305ef1d411 100644
120 --- a/arch/x86/ia32/ia32entry.S
121 +++ b/arch/x86/ia32/ia32entry.S
122 @@ -151,6 +151,16 @@ ENTRY(ia32_sysenter_target)
123 1: movl (%rbp),%ebp
124 _ASM_EXTABLE(1b,ia32_badarg)
125 ASM_CLAC
126 +
127 + /*
128 + * Sysenter doesn't filter flags, so we need to clear NT
129 + * ourselves. To save a few cycles, we can check whether
130 + * NT was set instead of doing an unconditional popfq.
131 + */
132 + testl $X86_EFLAGS_NT,EFLAGS-ARGOFFSET(%rsp)
133 + jnz sysenter_fix_flags
134 +sysenter_flags_fixed:
135 +
136 orl $TS_COMPAT,TI_status+THREAD_INFO(%rsp,RIP-ARGOFFSET)
137 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
138 CFI_REMEMBER_STATE
139 @@ -184,6 +194,8 @@ sysexit_from_sys_call:
140 TRACE_IRQS_ON
141 ENABLE_INTERRUPTS_SYSEXIT32
142
143 + CFI_RESTORE_STATE
144 +
145 #ifdef CONFIG_AUDITSYSCALL
146 .macro auditsys_entry_common
147 movl %esi,%r9d /* 6th arg: 4th syscall arg */
148 @@ -226,7 +238,6 @@ sysexit_from_sys_call:
149 .endm
150
151 sysenter_auditsys:
152 - CFI_RESTORE_STATE
153 auditsys_entry_common
154 movl %ebp,%r9d /* reload 6th syscall arg */
155 jmp sysenter_dispatch
156 @@ -235,6 +246,11 @@ sysexit_audit:
157 auditsys_exit sysexit_from_sys_call
158 #endif
159
160 +sysenter_fix_flags:
161 + pushq_cfi $(X86_EFLAGS_IF|X86_EFLAGS_FIXED)
162 + popfq_cfi
163 + jmp sysenter_flags_fixed
164 +
165 sysenter_tracesys:
166 #ifdef CONFIG_AUDITSYSCALL
167 testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
168 diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
169 index 9c999c1674fa..01f15b227d7e 100644
170 --- a/arch/x86/include/asm/elf.h
171 +++ b/arch/x86/include/asm/elf.h
172 @@ -155,8 +155,9 @@ do { \
173 #define elf_check_arch(x) \
174 ((x)->e_machine == EM_X86_64)
175
176 -#define compat_elf_check_arch(x) \
177 - (elf_check_arch_ia32(x) || (x)->e_machine == EM_X86_64)
178 +#define compat_elf_check_arch(x) \
179 + (elf_check_arch_ia32(x) || \
180 + (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
181
182 #if __USER32_DS != __USER_DS
183 # error "The following code assumes __USER32_DS == __USER_DS"
184 diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
185 index 373058c9b75d..4c481e751e8e 100644
186 --- a/arch/x86/include/asm/kvm_host.h
187 +++ b/arch/x86/include/asm/kvm_host.h
188 @@ -953,6 +953,20 @@ static inline void kvm_inject_gp(struct kvm_vcpu *vcpu, u32 error_code)
189 kvm_queue_exception_e(vcpu, GP_VECTOR, error_code);
190 }
191
192 +static inline u64 get_canonical(u64 la)
193 +{
194 + return ((int64_t)la << 16) >> 16;
195 +}
196 +
197 +static inline bool is_noncanonical_address(u64 la)
198 +{
199 +#ifdef CONFIG_X86_64
200 + return get_canonical(la) != la;
201 +#else
202 + return false;
203 +#endif
204 +}
205 +
206 #define TSS_IOPB_BASE_OFFSET 0x66
207 #define TSS_BASE_SIZE 0x68
208 #define TSS_IOPB_SIZE (65536 / 8)
209 @@ -1011,7 +1025,7 @@ int kvm_cpu_get_interrupt(struct kvm_vcpu *v);
210 void kvm_vcpu_reset(struct kvm_vcpu *vcpu);
211
212 void kvm_define_shared_msr(unsigned index, u32 msr);
213 -void kvm_set_shared_msr(unsigned index, u64 val, u64 mask);
214 +int kvm_set_shared_msr(unsigned index, u64 val, u64 mask);
215
216 bool kvm_is_linear_rip(struct kvm_vcpu *vcpu, unsigned long linear_rip);
217
218 diff --git a/arch/x86/include/uapi/asm/processor-flags.h b/arch/x86/include/uapi/asm/processor-flags.h
219 index 54991a746043..b16e6d28f149 100644
220 --- a/arch/x86/include/uapi/asm/processor-flags.h
221 +++ b/arch/x86/include/uapi/asm/processor-flags.h
222 @@ -6,7 +6,7 @@
223 * EFLAGS bits
224 */
225 #define X86_EFLAGS_CF 0x00000001 /* Carry Flag */
226 -#define X86_EFLAGS_BIT1 0x00000002 /* Bit 1 - always on */
227 +#define X86_EFLAGS_FIXED 0x00000002 /* Bit 1 - always on */
228 #define X86_EFLAGS_PF 0x00000004 /* Parity Flag */
229 #define X86_EFLAGS_AF 0x00000010 /* Auxiliary carry Flag */
230 #define X86_EFLAGS_ZF 0x00000040 /* Zero Flag */
231 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
232 index 904611bf0e5a..033eb44dc661 100644
233 --- a/arch/x86/kernel/apic/apic.c
234 +++ b/arch/x86/kernel/apic/apic.c
235 @@ -1263,7 +1263,7 @@ void __cpuinit setup_local_APIC(void)
236 unsigned int value, queued;
237 int i, j, acked = 0;
238 unsigned long long tsc = 0, ntsc;
239 - long long max_loops = cpu_khz;
240 + long long max_loops = cpu_khz ? cpu_khz : 1000000;
241
242 if (cpu_has_tsc)
243 rdtscll(tsc);
244 @@ -1360,7 +1360,7 @@ void __cpuinit setup_local_APIC(void)
245 break;
246 }
247 if (queued) {
248 - if (cpu_has_tsc) {
249 + if (cpu_has_tsc && cpu_khz) {
250 rdtscll(ntsc);
251 max_loops = (cpu_khz << 10) - (ntsc - tsc);
252 } else
253 diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
254 index deeb48d9459b..6a7e3e9cffc3 100644
255 --- a/arch/x86/kernel/cpu/common.c
256 +++ b/arch/x86/kernel/cpu/common.c
257 @@ -1134,7 +1134,7 @@ void syscall_init(void)
258 /* Flags to clear on syscall */
259 wrmsrl(MSR_SYSCALL_MASK,
260 X86_EFLAGS_TF|X86_EFLAGS_DF|X86_EFLAGS_IF|
261 - X86_EFLAGS_IOPL|X86_EFLAGS_AC);
262 + X86_EFLAGS_IOPL|X86_EFLAGS_AC|X86_EFLAGS_NT);
263 }
264
265 /*
266 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
267 index 39ba6914bbc6..8c6b5c2284c7 100644
268 --- a/arch/x86/kernel/entry_64.S
269 +++ b/arch/x86/kernel/entry_64.S
270 @@ -366,7 +366,7 @@ ENDPROC(native_usergs_sysret64)
271 /*CFI_REL_OFFSET ss,0*/
272 pushq_cfi %rax /* rsp */
273 CFI_REL_OFFSET rsp,0
274 - pushq_cfi $(X86_EFLAGS_IF|X86_EFLAGS_BIT1) /* eflags - interrupts on */
275 + pushq_cfi $(X86_EFLAGS_IF|X86_EFLAGS_FIXED) /* eflags - interrupts on */
276 /*CFI_REL_OFFSET rflags,0*/
277 pushq_cfi $__KERNEL_CS /* cs */
278 /*CFI_REL_OFFSET cs,0*/
279 diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
280 index 7305f7dfc7ab..0339f5c14bf9 100644
281 --- a/arch/x86/kernel/process_32.c
282 +++ b/arch/x86/kernel/process_32.c
283 @@ -147,7 +147,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
284 childregs->bp = arg;
285 childregs->orig_ax = -1;
286 childregs->cs = __KERNEL_CS | get_kernel_rpl();
287 - childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_BIT1;
288 + childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_FIXED;
289 p->fpu_counter = 0;
290 p->thread.io_bitmap_ptr = NULL;
291 memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps));
292 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
293 index 355ae06dbf94..f99a242730e9 100644
294 --- a/arch/x86/kernel/process_64.c
295 +++ b/arch/x86/kernel/process_64.c
296 @@ -176,7 +176,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
297 childregs->bp = arg;
298 childregs->orig_ax = -1;
299 childregs->cs = __KERNEL_CS | get_kernel_rpl();
300 - childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_BIT1;
301 + childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_FIXED;
302 return 0;
303 }
304 *childregs = *current_pt_regs();
305 diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
306 index 087ab2af381a..66deef41512f 100644
307 --- a/arch/x86/kernel/signal.c
308 +++ b/arch/x86/kernel/signal.c
309 @@ -677,6 +677,11 @@ handle_signal(struct ksignal *ksig, struct pt_regs *regs)
310 * handler too.
311 */
312 regs->flags &= ~X86_EFLAGS_TF;
313 + /*
314 + * Ensure the signal handler starts with the new fpu state.
315 + */
316 + if (used_math())
317 + drop_init_fpu(current);
318 }
319 signal_setup_done(failed, ksig, test_thread_flag(TIF_SINGLESTEP));
320 }
321 diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
322 index 098b3cfda72e..4e27ba53c40c 100644
323 --- a/arch/x86/kernel/tsc.c
324 +++ b/arch/x86/kernel/tsc.c
325 @@ -968,14 +968,17 @@ void __init tsc_init(void)
326
327 x86_init.timers.tsc_pre_init();
328
329 - if (!cpu_has_tsc)
330 + if (!cpu_has_tsc) {
331 + setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER);
332 return;
333 + }
334
335 tsc_khz = x86_platform.calibrate_tsc();
336 cpu_khz = tsc_khz;
337
338 if (!tsc_khz) {
339 mark_tsc_unstable("could not calculate TSC khz");
340 + setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER);
341 return;
342 }
343
344 diff --git a/arch/x86/kernel/xsave.c b/arch/x86/kernel/xsave.c
345 index ada87a329edc..1ee723298e90 100644
346 --- a/arch/x86/kernel/xsave.c
347 +++ b/arch/x86/kernel/xsave.c
348 @@ -268,8 +268,6 @@ int save_xstate_sig(void __user *buf, void __user *buf_fx, int size)
349 if (use_fxsr() && save_xstate_epilog(buf_fx, ia32_fxstate))
350 return -1;
351
352 - drop_init_fpu(tsk); /* trigger finit */
353 -
354 return 0;
355 }
356
357 @@ -400,8 +398,11 @@ int __restore_xstate_sig(void __user *buf, void __user *buf_fx, int size)
358 set_used_math();
359 }
360
361 - if (use_eager_fpu())
362 + if (use_eager_fpu()) {
363 + preempt_disable();
364 math_state_restore();
365 + preempt_enable();
366 + }
367
368 return err;
369 } else {
370 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
371 index fb3fddc322f8..4c01f022c6ac 100644
372 --- a/arch/x86/kvm/emulate.c
373 +++ b/arch/x86/kvm/emulate.c
374 @@ -663,11 +663,6 @@ static void rsp_increment(struct x86_emulate_ctxt *ctxt, int inc)
375 masked_increment(reg_rmw(ctxt, VCPU_REGS_RSP), stack_mask(ctxt), inc);
376 }
377
378 -static inline void jmp_rel(struct x86_emulate_ctxt *ctxt, int rel)
379 -{
380 - register_address_increment(ctxt, &ctxt->_eip, rel);
381 -}
382 -
383 static u32 desc_limit_scaled(struct desc_struct *desc)
384 {
385 u32 limit = get_desc_limit(desc);
386 @@ -741,6 +736,38 @@ static int emulate_nm(struct x86_emulate_ctxt *ctxt)
387 return emulate_exception(ctxt, NM_VECTOR, 0, false);
388 }
389
390 +static inline int assign_eip_far(struct x86_emulate_ctxt *ctxt, ulong dst,
391 + int cs_l)
392 +{
393 + switch (ctxt->op_bytes) {
394 + case 2:
395 + ctxt->_eip = (u16)dst;
396 + break;
397 + case 4:
398 + ctxt->_eip = (u32)dst;
399 + break;
400 + case 8:
401 + if ((cs_l && is_noncanonical_address(dst)) ||
402 + (!cs_l && (dst & ~(u32)-1)))
403 + return emulate_gp(ctxt, 0);
404 + ctxt->_eip = dst;
405 + break;
406 + default:
407 + WARN(1, "unsupported eip assignment size\n");
408 + }
409 + return X86EMUL_CONTINUE;
410 +}
411 +
412 +static inline int assign_eip_near(struct x86_emulate_ctxt *ctxt, ulong dst)
413 +{
414 + return assign_eip_far(ctxt, dst, ctxt->mode == X86EMUL_MODE_PROT64);
415 +}
416 +
417 +static inline int jmp_rel(struct x86_emulate_ctxt *ctxt, int rel)
418 +{
419 + return assign_eip_near(ctxt, ctxt->_eip + rel);
420 +}
421 +
422 static u16 get_segment_selector(struct x86_emulate_ctxt *ctxt, unsigned seg)
423 {
424 u16 selector;
425 @@ -2161,13 +2188,15 @@ static int em_grp45(struct x86_emulate_ctxt *ctxt)
426 case 2: /* call near abs */ {
427 long int old_eip;
428 old_eip = ctxt->_eip;
429 - ctxt->_eip = ctxt->src.val;
430 + rc = assign_eip_near(ctxt, ctxt->src.val);
431 + if (rc != X86EMUL_CONTINUE)
432 + break;
433 ctxt->src.val = old_eip;
434 rc = em_push(ctxt);
435 break;
436 }
437 case 4: /* jmp abs */
438 - ctxt->_eip = ctxt->src.val;
439 + rc = assign_eip_near(ctxt, ctxt->src.val);
440 break;
441 case 5: /* jmp far */
442 rc = em_jmp_far(ctxt);
443 @@ -2199,10 +2228,14 @@ static int em_cmpxchg8b(struct x86_emulate_ctxt *ctxt)
444
445 static int em_ret(struct x86_emulate_ctxt *ctxt)
446 {
447 - ctxt->dst.type = OP_REG;
448 - ctxt->dst.addr.reg = &ctxt->_eip;
449 - ctxt->dst.bytes = ctxt->op_bytes;
450 - return em_pop(ctxt);
451 + int rc;
452 + unsigned long eip;
453 +
454 + rc = emulate_pop(ctxt, &eip, ctxt->op_bytes);
455 + if (rc != X86EMUL_CONTINUE)
456 + return rc;
457 +
458 + return assign_eip_near(ctxt, eip);
459 }
460
461 static int em_ret_far(struct x86_emulate_ctxt *ctxt)
462 @@ -2469,7 +2502,7 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt)
463 {
464 const struct x86_emulate_ops *ops = ctxt->ops;
465 struct desc_struct cs, ss;
466 - u64 msr_data;
467 + u64 msr_data, rcx, rdx;
468 int usermode;
469 u16 cs_sel = 0, ss_sel = 0;
470
471 @@ -2485,6 +2518,9 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt)
472 else
473 usermode = X86EMUL_MODE_PROT32;
474
475 + rcx = reg_read(ctxt, VCPU_REGS_RCX);
476 + rdx = reg_read(ctxt, VCPU_REGS_RDX);
477 +
478 cs.dpl = 3;
479 ss.dpl = 3;
480 ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data);
481 @@ -2502,6 +2538,9 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt)
482 ss_sel = cs_sel + 8;
483 cs.d = 0;
484 cs.l = 1;
485 + if (is_noncanonical_address(rcx) ||
486 + is_noncanonical_address(rdx))
487 + return emulate_gp(ctxt, 0);
488 break;
489 }
490 cs_sel |= SELECTOR_RPL_MASK;
491 @@ -2510,8 +2549,8 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt)
492 ops->set_segment(ctxt, cs_sel, &cs, 0, VCPU_SREG_CS);
493 ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS);
494
495 - ctxt->_eip = reg_read(ctxt, VCPU_REGS_RDX);
496 - *reg_write(ctxt, VCPU_REGS_RSP) = reg_read(ctxt, VCPU_REGS_RCX);
497 + ctxt->_eip = rdx;
498 + *reg_write(ctxt, VCPU_REGS_RSP) = rcx;
499
500 return X86EMUL_CONTINUE;
501 }
502 @@ -3050,10 +3089,13 @@ static int em_aad(struct x86_emulate_ctxt *ctxt)
503
504 static int em_call(struct x86_emulate_ctxt *ctxt)
505 {
506 + int rc;
507 long rel = ctxt->src.val;
508
509 ctxt->src.val = (unsigned long)ctxt->_eip;
510 - jmp_rel(ctxt, rel);
511 + rc = jmp_rel(ctxt, rel);
512 + if (rc != X86EMUL_CONTINUE)
513 + return rc;
514 return em_push(ctxt);
515 }
516
517 @@ -3085,11 +3127,12 @@ static int em_call_far(struct x86_emulate_ctxt *ctxt)
518 static int em_ret_near_imm(struct x86_emulate_ctxt *ctxt)
519 {
520 int rc;
521 + unsigned long eip;
522
523 - ctxt->dst.type = OP_REG;
524 - ctxt->dst.addr.reg = &ctxt->_eip;
525 - ctxt->dst.bytes = ctxt->op_bytes;
526 - rc = emulate_pop(ctxt, &ctxt->dst.val, ctxt->op_bytes);
527 + rc = emulate_pop(ctxt, &eip, ctxt->op_bytes);
528 + if (rc != X86EMUL_CONTINUE)
529 + return rc;
530 + rc = assign_eip_near(ctxt, eip);
531 if (rc != X86EMUL_CONTINUE)
532 return rc;
533 rsp_increment(ctxt, ctxt->src.val);
534 @@ -3379,20 +3422,24 @@ static int em_lmsw(struct x86_emulate_ctxt *ctxt)
535
536 static int em_loop(struct x86_emulate_ctxt *ctxt)
537 {
538 + int rc = X86EMUL_CONTINUE;
539 +
540 register_address_increment(ctxt, reg_rmw(ctxt, VCPU_REGS_RCX), -1);
541 if ((address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) != 0) &&
542 (ctxt->b == 0xe2 || test_cc(ctxt->b ^ 0x5, ctxt->eflags)))
543 - jmp_rel(ctxt, ctxt->src.val);
544 + rc = jmp_rel(ctxt, ctxt->src.val);
545
546 - return X86EMUL_CONTINUE;
547 + return rc;
548 }
549
550 static int em_jcxz(struct x86_emulate_ctxt *ctxt)
551 {
552 + int rc = X86EMUL_CONTINUE;
553 +
554 if (address_mask(ctxt, reg_read(ctxt, VCPU_REGS_RCX)) == 0)
555 - jmp_rel(ctxt, ctxt->src.val);
556 + rc = jmp_rel(ctxt, ctxt->src.val);
557
558 - return X86EMUL_CONTINUE;
559 + return rc;
560 }
561
562 static int em_in(struct x86_emulate_ctxt *ctxt)
563 @@ -4721,7 +4768,7 @@ special_insn:
564 break;
565 case 0x70 ... 0x7f: /* jcc (short) */
566 if (test_cc(ctxt->b, ctxt->eflags))
567 - jmp_rel(ctxt, ctxt->src.val);
568 + rc = jmp_rel(ctxt, ctxt->src.val);
569 break;
570 case 0x8d: /* lea r16/r32, m */
571 ctxt->dst.val = ctxt->src.addr.mem.ea;
572 @@ -4750,7 +4797,7 @@ special_insn:
573 break;
574 case 0xe9: /* jmp rel */
575 case 0xeb: /* jmp rel short */
576 - jmp_rel(ctxt, ctxt->src.val);
577 + rc = jmp_rel(ctxt, ctxt->src.val);
578 ctxt->dst.type = OP_NONE; /* Disable writeback. */
579 break;
580 case 0xf4: /* hlt */
581 @@ -4862,7 +4909,7 @@ twobyte_insn:
582 break;
583 case 0x80 ... 0x8f: /* jnz rel, etc*/
584 if (test_cc(ctxt->b, ctxt->eflags))
585 - jmp_rel(ctxt, ctxt->src.val);
586 + rc = jmp_rel(ctxt, ctxt->src.val);
587 break;
588 case 0x90 ... 0x9f: /* setcc r/m8 */
589 ctxt->dst.val = test_cc(ctxt->b, ctxt->eflags);
590 diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c
591 index 518d86471b76..298781d4cfb4 100644
592 --- a/arch/x86/kvm/i8254.c
593 +++ b/arch/x86/kvm/i8254.c
594 @@ -262,8 +262,10 @@ void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu)
595 return;
596
597 timer = &pit->pit_state.timer;
598 + mutex_lock(&pit->pit_state.lock);
599 if (hrtimer_cancel(timer))
600 hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
601 + mutex_unlock(&pit->pit_state.lock);
602 }
603
604 static void destroy_pit_timer(struct kvm_pit *pit)
605 diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
606 index 765210d4d925..8bf40a243d75 100644
607 --- a/arch/x86/kvm/svm.c
608 +++ b/arch/x86/kvm/svm.c
609 @@ -3196,7 +3196,7 @@ static int wrmsr_interception(struct vcpu_svm *svm)
610 msr.host_initiated = false;
611
612 svm->next_rip = kvm_rip_read(&svm->vcpu) + 2;
613 - if (svm_set_msr(&svm->vcpu, &msr)) {
614 + if (kvm_set_msr(&svm->vcpu, &msr)) {
615 trace_kvm_msr_write_ex(ecx, data);
616 kvm_inject_gp(&svm->vcpu, 0);
617 } else {
618 @@ -3478,9 +3478,9 @@ static int handle_exit(struct kvm_vcpu *vcpu)
619
620 if (exit_code >= ARRAY_SIZE(svm_exit_handlers)
621 || !svm_exit_handlers[exit_code]) {
622 - kvm_run->exit_reason = KVM_EXIT_UNKNOWN;
623 - kvm_run->hw.hardware_exit_reason = exit_code;
624 - return 0;
625 + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_code);
626 + kvm_queue_exception(vcpu, UD_VECTOR);
627 + return 1;
628 }
629
630 return svm_exit_handlers[exit_code](svm);
631 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
632 index 7cdafb6dc705..51139ff34917 100644
633 --- a/arch/x86/kvm/vmx.c
634 +++ b/arch/x86/kvm/vmx.c
635 @@ -2493,12 +2493,15 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
636 break;
637 msr = find_msr_entry(vmx, msr_index);
638 if (msr) {
639 + u64 old_msr_data = msr->data;
640 msr->data = data;
641 if (msr - vmx->guest_msrs < vmx->save_nmsrs) {
642 preempt_disable();
643 - kvm_set_shared_msr(msr->index, msr->data,
644 - msr->mask);
645 + ret = kvm_set_shared_msr(msr->index, msr->data,
646 + msr->mask);
647 preempt_enable();
648 + if (ret)
649 + msr->data = old_msr_data;
650 }
651 break;
652 }
653 @@ -5062,7 +5065,7 @@ static int handle_wrmsr(struct kvm_vcpu *vcpu)
654 msr.data = data;
655 msr.index = ecx;
656 msr.host_initiated = false;
657 - if (vmx_set_msr(vcpu, &msr) != 0) {
658 + if (kvm_set_msr(vcpu, &msr) != 0) {
659 trace_kvm_msr_write_ex(ecx, data);
660 kvm_inject_gp(vcpu, 0);
661 return 1;
662 @@ -6651,10 +6654,10 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
663 && kvm_vmx_exit_handlers[exit_reason])
664 return kvm_vmx_exit_handlers[exit_reason](vcpu);
665 else {
666 - vcpu->run->exit_reason = KVM_EXIT_UNKNOWN;
667 - vcpu->run->hw.hardware_exit_reason = exit_reason;
668 + WARN_ONCE(1, "vmx: unexpected exit reason 0x%x\n", exit_reason);
669 + kvm_queue_exception(vcpu, UD_VECTOR);
670 + return 1;
671 }
672 - return 0;
673 }
674
675 static void update_cr8_intercept(struct kvm_vcpu *vcpu, int tpr, int irr)
676 @@ -7949,7 +7952,7 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
677
678 kvm_register_write(vcpu, VCPU_REGS_RSP, vmcs12->host_rsp);
679 kvm_register_write(vcpu, VCPU_REGS_RIP, vmcs12->host_rip);
680 - vmx_set_rflags(vcpu, X86_EFLAGS_BIT1);
681 + vmx_set_rflags(vcpu, X86_EFLAGS_FIXED);
682 /*
683 * Note that calling vmx_set_cr0 is important, even if cr0 hasn't
684 * actually changed, because it depends on the current state of
685 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
686 index e8753555f144..684f46dc87de 100644
687 --- a/arch/x86/kvm/x86.c
688 +++ b/arch/x86/kvm/x86.c
689 @@ -225,20 +225,25 @@ static void kvm_shared_msr_cpu_online(void)
690 shared_msr_update(i, shared_msrs_global.msrs[i]);
691 }
692
693 -void kvm_set_shared_msr(unsigned slot, u64 value, u64 mask)
694 +int kvm_set_shared_msr(unsigned slot, u64 value, u64 mask)
695 {
696 unsigned int cpu = smp_processor_id();
697 struct kvm_shared_msrs *smsr = per_cpu_ptr(shared_msrs, cpu);
698 + int err;
699
700 if (((value ^ smsr->values[slot].curr) & mask) == 0)
701 - return;
702 + return 0;
703 smsr->values[slot].curr = value;
704 - wrmsrl(shared_msrs_global.msrs[slot], value);
705 + err = wrmsrl_safe(shared_msrs_global.msrs[slot], value);
706 + if (err)
707 + return 1;
708 +
709 if (!smsr->registered) {
710 smsr->urn.on_user_return = kvm_on_user_return;
711 user_return_notifier_register(&smsr->urn);
712 smsr->registered = true;
713 }
714 + return 0;
715 }
716 EXPORT_SYMBOL_GPL(kvm_set_shared_msr);
717
718 @@ -920,7 +925,6 @@ void kvm_enable_efer_bits(u64 mask)
719 }
720 EXPORT_SYMBOL_GPL(kvm_enable_efer_bits);
721
722 -
723 /*
724 * Writes msr value into into the appropriate "register".
725 * Returns 0 on success, non-0 otherwise.
726 @@ -928,8 +932,34 @@ EXPORT_SYMBOL_GPL(kvm_enable_efer_bits);
727 */
728 int kvm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)
729 {
730 + switch (msr->index) {
731 + case MSR_FS_BASE:
732 + case MSR_GS_BASE:
733 + case MSR_KERNEL_GS_BASE:
734 + case MSR_CSTAR:
735 + case MSR_LSTAR:
736 + if (is_noncanonical_address(msr->data))
737 + return 1;
738 + break;
739 + case MSR_IA32_SYSENTER_EIP:
740 + case MSR_IA32_SYSENTER_ESP:
741 + /*
742 + * IA32_SYSENTER_ESP and IA32_SYSENTER_EIP cause #GP if
743 + * non-canonical address is written on Intel but not on
744 + * AMD (which ignores the top 32-bits, because it does
745 + * not implement 64-bit SYSENTER).
746 + *
747 + * 64-bit code should hence be able to write a non-canonical
748 + * value on AMD. Making the address canonical ensures that
749 + * vmentry does not fail on Intel after writing a non-canonical
750 + * value, and that something deterministic happens if the guest
751 + * invokes 64-bit SYSENTER.
752 + */
753 + msr->data = get_canonical(msr->data);
754 + }
755 return kvm_x86_ops->set_msr(vcpu, msr);
756 }
757 +EXPORT_SYMBOL_GPL(kvm_set_msr);
758
759 /*
760 * Adapt set_msr() to msr_io()'s calling convention
761 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
762 index bb32480c2d71..aabdf762f592 100644
763 --- a/arch/x86/mm/pageattr.c
764 +++ b/arch/x86/mm/pageattr.c
765 @@ -389,7 +389,7 @@ phys_addr_t slow_virt_to_phys(void *__virt_addr)
766 psize = page_level_size(level);
767 pmask = page_level_mask(level);
768 offset = virt_addr & ~pmask;
769 - phys_addr = pte_pfn(*pte) << PAGE_SHIFT;
770 + phys_addr = (phys_addr_t)pte_pfn(*pte) << PAGE_SHIFT;
771 return (phys_addr | offset);
772 }
773 EXPORT_SYMBOL_GPL(slow_virt_to_phys);
774 diff --git a/block/blk-settings.c b/block/blk-settings.c
775 index 53309333c2f0..ec00a0f75212 100644
776 --- a/block/blk-settings.c
777 +++ b/block/blk-settings.c
778 @@ -553,7 +553,7 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
779 bottom = max(b->physical_block_size, b->io_min) + alignment;
780
781 /* Verify that top and bottom intervals line up */
782 - if (max(top, bottom) & (min(top, bottom) - 1)) {
783 + if (max(top, bottom) % min(top, bottom)) {
784 t->misaligned = 1;
785 ret = -1;
786 }
787 @@ -594,7 +594,7 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
788
789 /* Find lowest common alignment_offset */
790 t->alignment_offset = lcm(t->alignment_offset, alignment)
791 - & (max(t->physical_block_size, t->io_min) - 1);
792 + % max(t->physical_block_size, t->io_min);
793
794 /* Verify that new alignment_offset is on a logical block boundary */
795 if (t->alignment_offset & (t->logical_block_size - 1)) {
796 diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
797 index a5ffcc988f0b..1b4988b4bc11 100644
798 --- a/block/scsi_ioctl.c
799 +++ b/block/scsi_ioctl.c
800 @@ -506,7 +506,7 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
801
802 if (bytes && blk_rq_map_kern(q, rq, buffer, bytes, __GFP_WAIT)) {
803 err = DRIVER_ERROR << 24;
804 - goto out;
805 + goto error;
806 }
807
808 memset(sense, 0, sizeof(sense));
809 @@ -516,7 +516,6 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk *disk, fmode_t mode,
810
811 blk_execute_rq(q, disk, rq, 0);
812
813 -out:
814 err = rq->errors & 0xff; /* only 8 bit SCSI status */
815 if (err) {
816 if (rq->sense_len && rq->sense) {
817 diff --git a/crypto/algif_skcipher.c b/crypto/algif_skcipher.c
818 index a19c027b29bd..83187f497c7c 100644
819 --- a/crypto/algif_skcipher.c
820 +++ b/crypto/algif_skcipher.c
821 @@ -49,7 +49,7 @@ struct skcipher_ctx {
822 struct ablkcipher_request req;
823 };
824
825 -#define MAX_SGL_ENTS ((PAGE_SIZE - sizeof(struct skcipher_sg_list)) / \
826 +#define MAX_SGL_ENTS ((4096 - sizeof(struct skcipher_sg_list)) / \
827 sizeof(struct scatterlist) - 1)
828
829 static inline int skcipher_sndbuf(struct sock *sk)
830 diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
831 index b603720b877d..37acda6fa7e4 100644
832 --- a/drivers/ata/libata-sff.c
833 +++ b/drivers/ata/libata-sff.c
834 @@ -2008,13 +2008,15 @@ static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask,
835
836 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id);
837
838 - /* software reset. causes dev0 to be selected */
839 - iowrite8(ap->ctl, ioaddr->ctl_addr);
840 - udelay(20); /* FIXME: flush */
841 - iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
842 - udelay(20); /* FIXME: flush */
843 - iowrite8(ap->ctl, ioaddr->ctl_addr);
844 - ap->last_ctl = ap->ctl;
845 + if (ap->ioaddr.ctl_addr) {
846 + /* software reset. causes dev0 to be selected */
847 + iowrite8(ap->ctl, ioaddr->ctl_addr);
848 + udelay(20); /* FIXME: flush */
849 + iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
850 + udelay(20); /* FIXME: flush */
851 + iowrite8(ap->ctl, ioaddr->ctl_addr);
852 + ap->last_ctl = ap->ctl;
853 + }
854
855 /* wait the port to become ready */
856 return ata_sff_wait_after_reset(&ap->link, devmask, deadline);
857 @@ -2215,10 +2217,6 @@ void ata_sff_error_handler(struct ata_port *ap)
858
859 spin_unlock_irqrestore(ap->lock, flags);
860
861 - /* ignore ata_sff_softreset if ctl isn't accessible */
862 - if (softreset == ata_sff_softreset && !ap->ioaddr.ctl_addr)
863 - softreset = NULL;
864 -
865 /* ignore built-in hardresets if SCR access is not available */
866 if ((hardreset == sata_std_hardreset ||
867 hardreset == sata_sff_hardreset) && !sata_scr_valid(&ap->link))
868 diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c
869 index f3febbce6c46..34c91ac3a814 100644
870 --- a/drivers/ata/pata_serverworks.c
871 +++ b/drivers/ata/pata_serverworks.c
872 @@ -252,12 +252,18 @@ static void serverworks_set_dmamode(struct ata_port *ap, struct ata_device *adev
873 pci_write_config_byte(pdev, 0x54, ultra_cfg);
874 }
875
876 -static struct scsi_host_template serverworks_sht = {
877 +static struct scsi_host_template serverworks_osb4_sht = {
878 + ATA_BMDMA_SHT(DRV_NAME),
879 + .sg_tablesize = LIBATA_DUMB_MAX_PRD,
880 +};
881 +
882 +static struct scsi_host_template serverworks_csb_sht = {
883 ATA_BMDMA_SHT(DRV_NAME),
884 };
885
886 static struct ata_port_operations serverworks_osb4_port_ops = {
887 .inherits = &ata_bmdma_port_ops,
888 + .qc_prep = ata_bmdma_dumb_qc_prep,
889 .cable_detect = serverworks_cable_detect,
890 .mode_filter = serverworks_osb4_filter,
891 .set_piomode = serverworks_set_piomode,
892 @@ -266,6 +272,7 @@ static struct ata_port_operations serverworks_osb4_port_ops = {
893
894 static struct ata_port_operations serverworks_csb_port_ops = {
895 .inherits = &serverworks_osb4_port_ops,
896 + .qc_prep = ata_bmdma_qc_prep,
897 .mode_filter = serverworks_csb_filter,
898 };
899
900 @@ -405,6 +412,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id
901 }
902 };
903 const struct ata_port_info *ppi[] = { &info[id->driver_data], NULL };
904 + struct scsi_host_template *sht = &serverworks_csb_sht;
905 int rc;
906
907 rc = pcim_enable_device(pdev);
908 @@ -418,6 +426,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id
909 /* Select non UDMA capable OSB4 if we can't do fixups */
910 if (rc < 0)
911 ppi[0] = &info[1];
912 + sht = &serverworks_osb4_sht;
913 }
914 /* setup CSB5/CSB6 : South Bridge and IDE option RAID */
915 else if ((pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) ||
916 @@ -434,7 +443,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id
917 ppi[1] = &ata_dummy_port_info;
918 }
919
920 - return ata_pci_bmdma_init_one(pdev, ppi, &serverworks_sht, NULL, 0);
921 + return ata_pci_bmdma_init_one(pdev, ppi, sht, NULL, 0);
922 }
923
924 #ifdef CONFIG_PM
925 diff --git a/drivers/base/core.c b/drivers/base/core.c
926 index ca4bcb8b3938..2a19097a7cb1 100644
927 --- a/drivers/base/core.c
928 +++ b/drivers/base/core.c
929 @@ -765,12 +765,12 @@ class_dir_create_and_add(struct class *class, struct kobject *parent_kobj)
930 return &dir->kobj;
931 }
932
933 +static DEFINE_MUTEX(gdp_mutex);
934
935 static struct kobject *get_device_parent(struct device *dev,
936 struct device *parent)
937 {
938 if (dev->class) {
939 - static DEFINE_MUTEX(gdp_mutex);
940 struct kobject *kobj = NULL;
941 struct kobject *parent_kobj;
942 struct kobject *k;
943 @@ -834,7 +834,9 @@ static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir)
944 glue_dir->kset != &dev->class->p->glue_dirs)
945 return;
946
947 + mutex_lock(&gdp_mutex);
948 kobject_put(glue_dir);
949 + mutex_unlock(&gdp_mutex);
950 }
951
952 static void cleanup_device_parent(struct device *dev)
953 diff --git a/drivers/block/drbd/drbd_interval.c b/drivers/block/drbd/drbd_interval.c
954 index 89c497c630b4..04a14e0f8878 100644
955 --- a/drivers/block/drbd/drbd_interval.c
956 +++ b/drivers/block/drbd/drbd_interval.c
957 @@ -79,6 +79,7 @@ bool
958 drbd_insert_interval(struct rb_root *root, struct drbd_interval *this)
959 {
960 struct rb_node **new = &root->rb_node, *parent = NULL;
961 + sector_t this_end = this->sector + (this->size >> 9);
962
963 BUG_ON(!IS_ALIGNED(this->size, 512));
964
965 @@ -87,6 +88,8 @@ drbd_insert_interval(struct rb_root *root, struct drbd_interval *this)
966 rb_entry(*new, struct drbd_interval, rb);
967
968 parent = *new;
969 + if (here->end < this_end)
970 + here->end = this_end;
971 if (this->sector < here->sector)
972 new = &(*new)->rb_left;
973 else if (this->sector > here->sector)
974 @@ -99,6 +102,7 @@ drbd_insert_interval(struct rb_root *root, struct drbd_interval *this)
975 return false;
976 }
977
978 + this->end = this_end;
979 rb_link_node(&this->rb, parent, new);
980 rb_insert_augmented(&this->rb, root, &augment_callbacks);
981 return true;
982 diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
983 index 07caf44d5755..9951e66b8502 100644
984 --- a/drivers/block/rbd.c
985 +++ b/drivers/block/rbd.c
986 @@ -3227,7 +3227,7 @@ static int rbd_obj_read_sync(struct rbd_device *rbd_dev,
987 page_count = (u32) calc_pages_for(offset, length);
988 pages = ceph_alloc_page_vector(page_count, GFP_KERNEL);
989 if (IS_ERR(pages))
990 - ret = PTR_ERR(pages);
991 + return PTR_ERR(pages);
992
993 ret = -ENOMEM;
994 obj_request = rbd_obj_request_create(object_name, offset, length,
995 diff --git a/drivers/char/random.c b/drivers/char/random.c
996 index 81eefa1c0d3f..aee3464a5bdc 100644
997 --- a/drivers/char/random.c
998 +++ b/drivers/char/random.c
999 @@ -933,8 +933,8 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
1000 * pool while mixing, and hash one final time.
1001 */
1002 sha_transform(hash.w, extract, workspace);
1003 - memset(extract, 0, sizeof(extract));
1004 - memset(workspace, 0, sizeof(workspace));
1005 + memzero_explicit(extract, sizeof(extract));
1006 + memzero_explicit(workspace, sizeof(workspace));
1007
1008 /*
1009 * In case the hash function has some recognizable output
1010 @@ -957,7 +957,7 @@ static void extract_buf(struct entropy_store *r, __u8 *out)
1011 }
1012
1013 memcpy(out, &hash, EXTRACT_SIZE);
1014 - memset(&hash, 0, sizeof(hash));
1015 + memzero_explicit(&hash, sizeof(hash));
1016 }
1017
1018 static ssize_t extract_entropy(struct entropy_store *r, void *buf,
1019 @@ -1005,7 +1005,7 @@ static ssize_t extract_entropy(struct entropy_store *r, void *buf,
1020 }
1021
1022 /* Wipe data just returned from memory */
1023 - memset(tmp, 0, sizeof(tmp));
1024 + memzero_explicit(tmp, sizeof(tmp));
1025
1026 return ret;
1027 }
1028 @@ -1043,7 +1043,7 @@ static ssize_t extract_entropy_user(struct entropy_store *r, void __user *buf,
1029 }
1030
1031 /* Wipe data just returned from memory */
1032 - memset(tmp, 0, sizeof(tmp));
1033 + memzero_explicit(tmp, sizeof(tmp));
1034
1035 return ret;
1036 }
1037 diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
1038 index 34d19b1984a1..decf84e71943 100644
1039 --- a/drivers/cpufreq/intel_pstate.c
1040 +++ b/drivers/cpufreq/intel_pstate.c
1041 @@ -599,6 +599,7 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
1042 if (policy->policy == CPUFREQ_POLICY_PERFORMANCE) {
1043 limits.min_perf_pct = 100;
1044 limits.min_perf = int_tofp(1);
1045 + limits.max_policy_pct = 100;
1046 limits.max_perf_pct = 100;
1047 limits.max_perf = int_tofp(1);
1048 limits.no_turbo = 0;
1049 diff --git a/drivers/edac/cpc925_edac.c b/drivers/edac/cpc925_edac.c
1050 index 7f3c57113ba1..1e08ce765f0c 100644
1051 --- a/drivers/edac/cpc925_edac.c
1052 +++ b/drivers/edac/cpc925_edac.c
1053 @@ -562,7 +562,7 @@ static void cpc925_mc_check(struct mem_ctl_info *mci)
1054
1055 if (apiexcp & UECC_EXCP_DETECTED) {
1056 cpc925_mc_printk(mci, KERN_INFO, "DRAM UECC Fault\n");
1057 - edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
1058 + edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
1059 pfn, offset, 0,
1060 csrow, -1, -1,
1061 mci->ctl_name, "");
1062 diff --git a/drivers/edac/e7xxx_edac.c b/drivers/edac/e7xxx_edac.c
1063 index 1c4056a50383..2697deae3ab7 100644
1064 --- a/drivers/edac/e7xxx_edac.c
1065 +++ b/drivers/edac/e7xxx_edac.c
1066 @@ -226,7 +226,7 @@ static void process_ce(struct mem_ctl_info *mci, struct e7xxx_error_info *info)
1067 static void process_ce_no_info(struct mem_ctl_info *mci)
1068 {
1069 edac_dbg(3, "\n");
1070 - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, 0, 0, 0, -1, -1, -1,
1071 + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, 0, 0, 0, -1, -1, -1,
1072 "e7xxx CE log register overflow", "");
1073 }
1074
1075 diff --git a/drivers/edac/i3200_edac.c b/drivers/edac/i3200_edac.c
1076 index aa44c1718f50..71b26513b93b 100644
1077 --- a/drivers/edac/i3200_edac.c
1078 +++ b/drivers/edac/i3200_edac.c
1079 @@ -242,11 +242,11 @@ static void i3200_process_error_info(struct mem_ctl_info *mci,
1080 -1, -1,
1081 "i3000 UE", "");
1082 } else if (log & I3200_ECCERRLOG_CE) {
1083 - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
1084 + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
1085 0, 0, eccerrlog_syndrome(log),
1086 eccerrlog_row(channel, log),
1087 -1, -1,
1088 - "i3000 UE", "");
1089 + "i3000 CE", "");
1090 }
1091 }
1092 }
1093 diff --git a/drivers/edac/i82860_edac.c b/drivers/edac/i82860_edac.c
1094 index 3e3e431c8301..b93b0d006ebb 100644
1095 --- a/drivers/edac/i82860_edac.c
1096 +++ b/drivers/edac/i82860_edac.c
1097 @@ -124,7 +124,7 @@ static int i82860_process_error_info(struct mem_ctl_info *mci,
1098 dimm->location[0], dimm->location[1], -1,
1099 "i82860 UE", "");
1100 else
1101 - edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
1102 + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
1103 info->eap, 0, info->derrsyn,
1104 dimm->location[0], dimm->location[1], -1,
1105 "i82860 CE", "");
1106 diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
1107 index 7fc9f7272b56..e8f6418b6dec 100644
1108 --- a/drivers/gpu/drm/ast/ast_mode.c
1109 +++ b/drivers/gpu/drm/ast/ast_mode.c
1110 @@ -1012,8 +1012,8 @@ static u32 copy_cursor_image(u8 *src, u8 *dst, int width, int height)
1111 srcdata32[1].ul = *((u32 *)(srcxor + 4)) & 0xf0f0f0f0;
1112 data32.b[0] = srcdata32[0].b[1] | (srcdata32[0].b[0] >> 4);
1113 data32.b[1] = srcdata32[0].b[3] | (srcdata32[0].b[2] >> 4);
1114 - data32.b[2] = srcdata32[0].b[1] | (srcdata32[1].b[0] >> 4);
1115 - data32.b[3] = srcdata32[0].b[3] | (srcdata32[1].b[2] >> 4);
1116 + data32.b[2] = srcdata32[1].b[1] | (srcdata32[1].b[0] >> 4);
1117 + data32.b[3] = srcdata32[1].b[3] | (srcdata32[1].b[2] >> 4);
1118
1119 writel(data32.ul, dstxor);
1120 csum += data32.ul;
1121 diff --git a/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c b/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c
1122 index 2d9b9d7a7992..f3edd2841f2d 100644
1123 --- a/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c
1124 +++ b/drivers/gpu/drm/nouveau/core/subdev/bios/dcb.c
1125 @@ -124,6 +124,7 @@ dcb_outp_parse(struct nouveau_bios *bios, u8 idx, u8 *ver, u8 *len,
1126 struct dcb_output *outp)
1127 {
1128 u16 dcb = dcb_outp(bios, idx, ver, len);
1129 + memset(outp, 0x00, sizeof(*outp));
1130 if (dcb) {
1131 if (*ver >= 0x20) {
1132 u32 conn = nv_ro32(bios, dcb + 0x00);
1133 diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
1134 index f060b7487c34..f5ddd3550796 100644
1135 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
1136 +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
1137 @@ -78,6 +78,7 @@ static int modeset_init(struct drm_device *dev)
1138 if ((priv->num_encoders == 0) || (priv->num_connectors == 0)) {
1139 /* oh nos! */
1140 dev_err(dev->dev, "no encoders/connectors found\n");
1141 + drm_mode_config_cleanup(dev);
1142 return -ENXIO;
1143 }
1144
1145 @@ -170,33 +171,37 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
1146 dev->dev_private = priv;
1147
1148 priv->wq = alloc_ordered_workqueue("tilcdc", 0);
1149 + if (!priv->wq) {
1150 + ret = -ENOMEM;
1151 + goto fail_free_priv;
1152 + }
1153
1154 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1155 if (!res) {
1156 dev_err(dev->dev, "failed to get memory resource\n");
1157 ret = -EINVAL;
1158 - goto fail;
1159 + goto fail_free_wq;
1160 }
1161
1162 priv->mmio = ioremap_nocache(res->start, resource_size(res));
1163 if (!priv->mmio) {
1164 dev_err(dev->dev, "failed to ioremap\n");
1165 ret = -ENOMEM;
1166 - goto fail;
1167 + goto fail_free_wq;
1168 }
1169
1170 priv->clk = clk_get(dev->dev, "fck");
1171 if (IS_ERR(priv->clk)) {
1172 dev_err(dev->dev, "failed to get functional clock\n");
1173 ret = -ENODEV;
1174 - goto fail;
1175 + goto fail_iounmap;
1176 }
1177
1178 priv->disp_clk = clk_get(dev->dev, "dpll_disp_ck");
1179 if (IS_ERR(priv->clk)) {
1180 dev_err(dev->dev, "failed to get display clock\n");
1181 ret = -ENODEV;
1182 - goto fail;
1183 + goto fail_put_clk;
1184 }
1185
1186 #ifdef CONFIG_CPU_FREQ
1187 @@ -206,7 +211,7 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
1188 CPUFREQ_TRANSITION_NOTIFIER);
1189 if (ret) {
1190 dev_err(dev->dev, "failed to register cpufreq notifier\n");
1191 - goto fail;
1192 + goto fail_put_disp_clk;
1193 }
1194 #endif
1195
1196 @@ -238,13 +243,13 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
1197 ret = modeset_init(dev);
1198 if (ret < 0) {
1199 dev_err(dev->dev, "failed to initialize mode setting\n");
1200 - goto fail;
1201 + goto fail_cpufreq_unregister;
1202 }
1203
1204 ret = drm_vblank_init(dev, 1);
1205 if (ret < 0) {
1206 dev_err(dev->dev, "failed to initialize vblank\n");
1207 - goto fail;
1208 + goto fail_mode_config_cleanup;
1209 }
1210
1211 pm_runtime_get_sync(dev->dev);
1212 @@ -252,7 +257,7 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
1213 pm_runtime_put_sync(dev->dev);
1214 if (ret < 0) {
1215 dev_err(dev->dev, "failed to install IRQ handler\n");
1216 - goto fail;
1217 + goto fail_vblank_cleanup;
1218 }
1219
1220 platform_set_drvdata(pdev, dev);
1221 @@ -260,13 +265,48 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags)
1222 priv->fbdev = drm_fbdev_cma_init(dev, 16,
1223 dev->mode_config.num_crtc,
1224 dev->mode_config.num_connector);
1225 + if (IS_ERR(priv->fbdev)) {
1226 + ret = PTR_ERR(priv->fbdev);
1227 + goto fail_irq_uninstall;
1228 + }
1229
1230 drm_kms_helper_poll_init(dev);
1231
1232 return 0;
1233
1234 -fail:
1235 - tilcdc_unload(dev);
1236 +fail_irq_uninstall:
1237 + pm_runtime_get_sync(dev->dev);
1238 + drm_irq_uninstall(dev);
1239 + pm_runtime_put_sync(dev->dev);
1240 +
1241 +fail_vblank_cleanup:
1242 + drm_vblank_cleanup(dev);
1243 +
1244 +fail_mode_config_cleanup:
1245 + drm_mode_config_cleanup(dev);
1246 +
1247 +fail_cpufreq_unregister:
1248 + pm_runtime_disable(dev->dev);
1249 +#ifdef CONFIG_CPU_FREQ
1250 + cpufreq_unregister_notifier(&priv->freq_transition,
1251 + CPUFREQ_TRANSITION_NOTIFIER);
1252 +fail_put_disp_clk:
1253 + clk_put(priv->disp_clk);
1254 +#endif
1255 +
1256 +fail_put_clk:
1257 + clk_put(priv->clk);
1258 +
1259 +fail_iounmap:
1260 + iounmap(priv->mmio);
1261 +
1262 +fail_free_wq:
1263 + flush_workqueue(priv->wq);
1264 + destroy_workqueue(priv->wq);
1265 +
1266 +fail_free_priv:
1267 + dev->dev_private = NULL;
1268 + kfree(priv);
1269 return ret;
1270 }
1271
1272 diff --git a/drivers/i2c/busses/i2c-at91.c b/drivers/i2c/busses/i2c-at91.c
1273 index b1240a250149..09324d0178d5 100644
1274 --- a/drivers/i2c/busses/i2c-at91.c
1275 +++ b/drivers/i2c/busses/i2c-at91.c
1276 @@ -435,7 +435,7 @@ static int at91_do_twi_transfer(struct at91_twi_dev *dev)
1277 }
1278 }
1279
1280 - ret = wait_for_completion_io_timeout(&dev->cmd_complete,
1281 + ret = wait_for_completion_timeout(&dev->cmd_complete,
1282 dev->adapter.timeout);
1283 if (ret == 0) {
1284 dev_err(dev->dev, "controller timed out\n");
1285 diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
1286 index 1291673bd57e..ce715b1bee46 100644
1287 --- a/drivers/input/serio/i8042-x86ia64io.h
1288 +++ b/drivers/input/serio/i8042-x86ia64io.h
1289 @@ -101,6 +101,12 @@ static const struct dmi_system_id __initconst i8042_dmi_noloop_table[] = {
1290 },
1291 {
1292 .matches = {
1293 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
1294 + DMI_MATCH(DMI_PRODUCT_NAME, "X750LN"),
1295 + },
1296 + },
1297 + {
1298 + .matches = {
1299 DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
1300 DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
1301 DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
1302 @@ -609,6 +615,22 @@ static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
1303 },
1304 },
1305 {
1306 + /* Fujitsu A544 laptop */
1307 + /* https://bugzilla.redhat.com/show_bug.cgi?id=1111138 */
1308 + .matches = {
1309 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
1310 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK A544"),
1311 + },
1312 + },
1313 + {
1314 + /* Fujitsu AH544 laptop */
1315 + /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
1316 + .matches = {
1317 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
1318 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
1319 + },
1320 + },
1321 + {
1322 /* Fujitsu U574 laptop */
1323 /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
1324 .matches = {
1325 diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c
1326 index f0a3347b6441..516923926335 100644
1327 --- a/drivers/lguest/x86/core.c
1328 +++ b/drivers/lguest/x86/core.c
1329 @@ -700,7 +700,7 @@ void lguest_arch_setup_regs(struct lg_cpu *cpu, unsigned long start)
1330 * interrupts are enabled. We always leave interrupts enabled while
1331 * running the Guest.
1332 */
1333 - regs->eflags = X86_EFLAGS_IF | X86_EFLAGS_BIT1;
1334 + regs->eflags = X86_EFLAGS_IF | X86_EFLAGS_FIXED;
1335
1336 /*
1337 * The "Extended Instruction Pointer" register says where the Guest is
1338 diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
1339 index a6e985fcceb8..c9b4ca9e0696 100644
1340 --- a/drivers/md/dm-bufio.c
1341 +++ b/drivers/md/dm-bufio.c
1342 @@ -462,6 +462,7 @@ static void __relink_lru(struct dm_buffer *b, int dirty)
1343 c->n_buffers[dirty]++;
1344 b->list_mode = dirty;
1345 list_move(&b->lru_list, &c->lru[dirty]);
1346 + b->last_accessed = jiffies;
1347 }
1348
1349 /*----------------------------------------------------------------
1350 diff --git a/drivers/md/dm-log-userspace-transfer.c b/drivers/md/dm-log-userspace-transfer.c
1351 index 08d9a207259a..c69d0b787746 100644
1352 --- a/drivers/md/dm-log-userspace-transfer.c
1353 +++ b/drivers/md/dm-log-userspace-transfer.c
1354 @@ -272,7 +272,7 @@ int dm_ulog_tfr_init(void)
1355
1356 r = cn_add_callback(&ulog_cn_id, "dmlogusr", cn_ulog_callback);
1357 if (r) {
1358 - cn_del_callback(&ulog_cn_id);
1359 + kfree(prealloced_cn_msg);
1360 return r;
1361 }
1362
1363 diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c
1364 index 1e344b033277..22e8c2032f6d 100644
1365 --- a/drivers/media/dvb-frontends/ds3000.c
1366 +++ b/drivers/media/dvb-frontends/ds3000.c
1367 @@ -864,6 +864,13 @@ struct dvb_frontend *ds3000_attach(const struct ds3000_config *config,
1368 memcpy(&state->frontend.ops, &ds3000_ops,
1369 sizeof(struct dvb_frontend_ops));
1370 state->frontend.demodulator_priv = state;
1371 +
1372 + /*
1373 + * Some devices like T480 starts with voltage on. Be sure
1374 + * to turn voltage off during init, as this can otherwise
1375 + * interfere with Unicable SCR systems.
1376 + */
1377 + ds3000_set_voltage(&state->frontend, SEC_VOLTAGE_OFF);
1378 return &state->frontend;
1379
1380 error3:
1381 diff --git a/drivers/media/i2c/tda7432.c b/drivers/media/i2c/tda7432.c
1382 index 28b5121881f5..09f4387dbc49 100644
1383 --- a/drivers/media/i2c/tda7432.c
1384 +++ b/drivers/media/i2c/tda7432.c
1385 @@ -293,7 +293,7 @@ static int tda7432_s_ctrl(struct v4l2_ctrl *ctrl)
1386 if (t->mute->val) {
1387 lf |= TDA7432_MUTE;
1388 lr |= TDA7432_MUTE;
1389 - lf |= TDA7432_MUTE;
1390 + rf |= TDA7432_MUTE;
1391 rr |= TDA7432_MUTE;
1392 }
1393 /* Mute & update balance*/
1394 diff --git a/drivers/media/usb/em28xx/em28xx-video.c b/drivers/media/usb/em28xx/em28xx-video.c
1395 index 32d60e5546bc..a2737b4b090b 100644
1396 --- a/drivers/media/usb/em28xx/em28xx-video.c
1397 +++ b/drivers/media/usb/em28xx/em28xx-video.c
1398 @@ -696,13 +696,16 @@ static int em28xx_stop_streaming(struct vb2_queue *vq)
1399 }
1400
1401 spin_lock_irqsave(&dev->slock, flags);
1402 + if (dev->usb_ctl.vid_buf != NULL) {
1403 + vb2_buffer_done(&dev->usb_ctl.vid_buf->vb, VB2_BUF_STATE_ERROR);
1404 + dev->usb_ctl.vid_buf = NULL;
1405 + }
1406 while (!list_empty(&vidq->active)) {
1407 struct em28xx_buffer *buf;
1408 buf = list_entry(vidq->active.next, struct em28xx_buffer, list);
1409 list_del(&buf->list);
1410 vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR);
1411 }
1412 - dev->usb_ctl.vid_buf = NULL;
1413 spin_unlock_irqrestore(&dev->slock, flags);
1414
1415 return 0;
1416 @@ -724,13 +727,16 @@ int em28xx_stop_vbi_streaming(struct vb2_queue *vq)
1417 }
1418
1419 spin_lock_irqsave(&dev->slock, flags);
1420 + if (dev->usb_ctl.vbi_buf != NULL) {
1421 + vb2_buffer_done(&dev->usb_ctl.vbi_buf->vb, VB2_BUF_STATE_ERROR);
1422 + dev->usb_ctl.vbi_buf = NULL;
1423 + }
1424 while (!list_empty(&vbiq->active)) {
1425 struct em28xx_buffer *buf;
1426 buf = list_entry(vbiq->active.next, struct em28xx_buffer, list);
1427 list_del(&buf->list);
1428 vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR);
1429 }
1430 - dev->usb_ctl.vbi_buf = NULL;
1431 spin_unlock_irqrestore(&dev->slock, flags);
1432
1433 return 0;
1434 diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
1435 index 3fed63f4e026..ec9a4fa3bc86 100644
1436 --- a/drivers/media/v4l2-core/v4l2-common.c
1437 +++ b/drivers/media/v4l2-core/v4l2-common.c
1438 @@ -485,16 +485,13 @@ static unsigned int clamp_align(unsigned int x, unsigned int min,
1439 /* Bits that must be zero to be aligned */
1440 unsigned int mask = ~((1 << align) - 1);
1441
1442 + /* Clamp to aligned min and max */
1443 + x = clamp(x, (min + ~mask) & mask, max & mask);
1444 +
1445 /* Round to nearest aligned value */
1446 if (align)
1447 x = (x + (1 << (align - 1))) & mask;
1448
1449 - /* Clamp to aligned value of min and max */
1450 - if (x < min)
1451 - x = (min + ~mask) & mask;
1452 - else if (x > max)
1453 - x = max & mask;
1454 -
1455 return x;
1456 }
1457
1458 diff --git a/drivers/mfd/rtsx_pcr.c b/drivers/mfd/rtsx_pcr.c
1459 index 45f26be359ea..7e28bd0de554 100644
1460 --- a/drivers/mfd/rtsx_pcr.c
1461 +++ b/drivers/mfd/rtsx_pcr.c
1462 @@ -1137,7 +1137,7 @@ static int rtsx_pci_probe(struct pci_dev *pcidev,
1463 pcr->msi_en = msi_en;
1464 if (pcr->msi_en) {
1465 ret = pci_enable_msi(pcidev);
1466 - if (ret < 0)
1467 + if (ret)
1468 pcr->msi_en = false;
1469 }
1470
1471 diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
1472 index 7ffb5cba30a9..4c65a5a4d8f4 100644
1473 --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
1474 +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
1475 @@ -341,6 +341,13 @@ static void sd_send_cmd_get_rsp(struct realtek_pci_sdmmc *host,
1476 }
1477
1478 if (rsp_type == SD_RSP_TYPE_R2) {
1479 + /*
1480 + * The controller offloads the last byte {CRC-7, end bit 1'b1}
1481 + * of response type R2. Assign dummy CRC, 0, and end bit to the
1482 + * byte(ptr[16], goes into the LSB of resp[3] later).
1483 + */
1484 + ptr[16] = 1;
1485 +
1486 for (i = 0; i < 4; i++) {
1487 cmd->resp[i] = get_unaligned_be32(ptr + 1 + i * 4);
1488 dev_dbg(sdmmc_dev(host), "cmd->resp[%d] = 0x%08x\n",
1489 diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
1490 index 0648c6996d43..bf8108d65b73 100644
1491 --- a/drivers/mtd/ubi/fastmap.c
1492 +++ b/drivers/mtd/ubi/fastmap.c
1493 @@ -330,6 +330,7 @@ static int process_pool_aeb(struct ubi_device *ubi, struct ubi_attach_info *ai,
1494 av = tmp_av;
1495 else {
1496 ubi_err("orphaned volume in fastmap pool!");
1497 + kmem_cache_free(ai->aeb_slab_cache, new_aeb);
1498 return UBI_BAD_FASTMAP;
1499 }
1500
1501 diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
1502 index 3835321b8cf3..3bc3ebc0882f 100644
1503 --- a/drivers/net/Kconfig
1504 +++ b/drivers/net/Kconfig
1505 @@ -139,6 +139,7 @@ config MACVLAN
1506 config MACVTAP
1507 tristate "MAC-VLAN based tap driver"
1508 depends on MACVLAN
1509 + depends on INET
1510 help
1511 This adds a specialized tap character device driver that is based
1512 on the MAC-VLAN network interface, called macvtap. A macvtap device
1513 @@ -209,6 +210,7 @@ config RIONET_RX_SIZE
1514
1515 config TUN
1516 tristate "Universal TUN/TAP device driver support"
1517 + depends on INET
1518 select CRC32
1519 ---help---
1520 TUN/TAP provides packet reception and transmission for user space
1521 diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
1522 index 72ff14b811c6..5a1897d86e94 100644
1523 --- a/drivers/net/ppp/ppp_generic.c
1524 +++ b/drivers/net/ppp/ppp_generic.c
1525 @@ -601,7 +601,7 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
1526 if (file == ppp->owner)
1527 ppp_shutdown_interface(ppp);
1528 }
1529 - if (atomic_long_read(&file->f_count) <= 2) {
1530 + if (atomic_long_read(&file->f_count) < 2) {
1531 ppp_release(NULL, file);
1532 err = 0;
1533 } else
1534 diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
1535 index d33c3ae2fcea..3b449c4ecf72 100644
1536 --- a/drivers/net/usb/ax88179_178a.c
1537 +++ b/drivers/net/usb/ax88179_178a.c
1538 @@ -695,6 +695,7 @@ static int ax88179_set_mac_addr(struct net_device *net, void *p)
1539 {
1540 struct usbnet *dev = netdev_priv(net);
1541 struct sockaddr *addr = p;
1542 + int ret;
1543
1544 if (netif_running(net))
1545 return -EBUSY;
1546 @@ -704,8 +705,12 @@ static int ax88179_set_mac_addr(struct net_device *net, void *p)
1547 memcpy(net->dev_addr, addr->sa_data, ETH_ALEN);
1548
1549 /* Set the MAC address */
1550 - return ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN,
1551 + ret = ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_NODE_ID, ETH_ALEN,
1552 ETH_ALEN, net->dev_addr);
1553 + if (ret < 0)
1554 + return ret;
1555 +
1556 + return 0;
1557 }
1558
1559 static const struct net_device_ops ax88179_netdev_ops = {
1560 diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
1561 index 9ef0711a5cc1..400b8679796a 100644
1562 --- a/drivers/net/wireless/rt2x00/rt2800usb.c
1563 +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
1564 @@ -1091,6 +1091,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
1565 /* Ovislink */
1566 { USB_DEVICE(0x1b75, 0x3071) },
1567 { USB_DEVICE(0x1b75, 0x3072) },
1568 + { USB_DEVICE(0x1b75, 0xa200) },
1569 /* Para */
1570 { USB_DEVICE(0x20b8, 0x8888) },
1571 /* Pegatron */
1572 diff --git a/drivers/of/base.c b/drivers/of/base.c
1573 index 1d10b4ec6814..b60f9a77ab03 100644
1574 --- a/drivers/of/base.c
1575 +++ b/drivers/of/base.c
1576 @@ -963,52 +963,6 @@ int of_property_read_string(struct device_node *np, const char *propname,
1577 EXPORT_SYMBOL_GPL(of_property_read_string);
1578
1579 /**
1580 - * of_property_read_string_index - Find and read a string from a multiple
1581 - * strings property.
1582 - * @np: device node from which the property value is to be read.
1583 - * @propname: name of the property to be searched.
1584 - * @index: index of the string in the list of strings
1585 - * @out_string: pointer to null terminated return string, modified only if
1586 - * return value is 0.
1587 - *
1588 - * Search for a property in a device tree node and retrieve a null
1589 - * terminated string value (pointer to data, not a copy) in the list of strings
1590 - * contained in that property.
1591 - * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if
1592 - * property does not have a value, and -EILSEQ if the string is not
1593 - * null-terminated within the length of the property data.
1594 - *
1595 - * The out_string pointer is modified only if a valid string can be decoded.
1596 - */
1597 -int of_property_read_string_index(struct device_node *np, const char *propname,
1598 - int index, const char **output)
1599 -{
1600 - struct property *prop = of_find_property(np, propname, NULL);
1601 - int i = 0;
1602 - size_t l = 0, total = 0;
1603 - const char *p;
1604 -
1605 - if (!prop)
1606 - return -EINVAL;
1607 - if (!prop->value)
1608 - return -ENODATA;
1609 - if (strnlen(prop->value, prop->length) >= prop->length)
1610 - return -EILSEQ;
1611 -
1612 - p = prop->value;
1613 -
1614 - for (i = 0; total < prop->length; total += l, p += l) {
1615 - l = strlen(p) + 1;
1616 - if (i++ == index) {
1617 - *output = p;
1618 - return 0;
1619 - }
1620 - }
1621 - return -ENODATA;
1622 -}
1623 -EXPORT_SYMBOL_GPL(of_property_read_string_index);
1624 -
1625 -/**
1626 * of_property_match_string() - Find string in a list and return index
1627 * @np: pointer to node containing string list property
1628 * @propname: string list property name
1629 @@ -1034,7 +988,7 @@ int of_property_match_string(struct device_node *np, const char *propname,
1630 end = p + prop->length;
1631
1632 for (i = 0; p < end; i++, p += l) {
1633 - l = strlen(p) + 1;
1634 + l = strnlen(p, end - p) + 1;
1635 if (p + l > end)
1636 return -EILSEQ;
1637 pr_debug("comparing %s with %s\n", string, p);
1638 @@ -1046,39 +1000,41 @@ int of_property_match_string(struct device_node *np, const char *propname,
1639 EXPORT_SYMBOL_GPL(of_property_match_string);
1640
1641 /**
1642 - * of_property_count_strings - Find and return the number of strings from a
1643 - * multiple strings property.
1644 + * of_property_read_string_util() - Utility helper for parsing string properties
1645 * @np: device node from which the property value is to be read.
1646 * @propname: name of the property to be searched.
1647 + * @out_strs: output array of string pointers.
1648 + * @sz: number of array elements to read.
1649 + * @skip: Number of strings to skip over at beginning of list.
1650 *
1651 - * Search for a property in a device tree node and retrieve the number of null
1652 - * terminated string contain in it. Returns the number of strings on
1653 - * success, -EINVAL if the property does not exist, -ENODATA if property
1654 - * does not have a value, and -EILSEQ if the string is not null-terminated
1655 - * within the length of the property data.
1656 + * Don't call this function directly. It is a utility helper for the
1657 + * of_property_read_string*() family of functions.
1658 */
1659 -int of_property_count_strings(struct device_node *np, const char *propname)
1660 +int of_property_read_string_helper(struct device_node *np, const char *propname,
1661 + const char **out_strs, size_t sz, int skip)
1662 {
1663 struct property *prop = of_find_property(np, propname, NULL);
1664 - int i = 0;
1665 - size_t l = 0, total = 0;
1666 - const char *p;
1667 + int l = 0, i = 0;
1668 + const char *p, *end;
1669
1670 if (!prop)
1671 return -EINVAL;
1672 if (!prop->value)
1673 return -ENODATA;
1674 - if (strnlen(prop->value, prop->length) >= prop->length)
1675 - return -EILSEQ;
1676 -
1677 p = prop->value;
1678 + end = p + prop->length;
1679
1680 - for (i = 0; total < prop->length; total += l, p += l, i++)
1681 - l = strlen(p) + 1;
1682 -
1683 - return i;
1684 + for (i = 0; p < end && (!out_strs || i < skip + sz); i++, p += l) {
1685 + l = strnlen(p, end - p) + 1;
1686 + if (p + l > end)
1687 + return -EILSEQ;
1688 + if (out_strs && i >= skip)
1689 + *out_strs++ = p;
1690 + }
1691 + i -= skip;
1692 + return i <= 0 ? -ENODATA : i;
1693 }
1694 -EXPORT_SYMBOL_GPL(of_property_count_strings);
1695 +EXPORT_SYMBOL_GPL(of_property_read_string_helper);
1696
1697 /**
1698 * of_parse_phandle - Resolve a phandle property to a device_node pointer
1699 diff --git a/drivers/of/selftest.c b/drivers/of/selftest.c
1700 index 0eb5c38b4e07..f5e8dc7a725c 100644
1701 --- a/drivers/of/selftest.c
1702 +++ b/drivers/of/selftest.c
1703 @@ -126,8 +126,9 @@ static void __init of_selftest_parse_phandle_with_args(void)
1704 selftest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
1705 }
1706
1707 -static void __init of_selftest_property_match_string(void)
1708 +static void __init of_selftest_property_string(void)
1709 {
1710 + const char *strings[4];
1711 struct device_node *np;
1712 int rc;
1713
1714 @@ -145,13 +146,66 @@ static void __init of_selftest_property_match_string(void)
1715 rc = of_property_match_string(np, "phandle-list-names", "third");
1716 selftest(rc == 2, "third expected:0 got:%i\n", rc);
1717 rc = of_property_match_string(np, "phandle-list-names", "fourth");
1718 - selftest(rc == -ENODATA, "unmatched string; rc=%i", rc);
1719 + selftest(rc == -ENODATA, "unmatched string; rc=%i\n", rc);
1720 rc = of_property_match_string(np, "missing-property", "blah");
1721 - selftest(rc == -EINVAL, "missing property; rc=%i", rc);
1722 + selftest(rc == -EINVAL, "missing property; rc=%i\n", rc);
1723 rc = of_property_match_string(np, "empty-property", "blah");
1724 - selftest(rc == -ENODATA, "empty property; rc=%i", rc);
1725 + selftest(rc == -ENODATA, "empty property; rc=%i\n", rc);
1726 rc = of_property_match_string(np, "unterminated-string", "blah");
1727 - selftest(rc == -EILSEQ, "unterminated string; rc=%i", rc);
1728 + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc);
1729 +
1730 + /* of_property_count_strings() tests */
1731 + rc = of_property_count_strings(np, "string-property");
1732 + selftest(rc == 1, "Incorrect string count; rc=%i\n", rc);
1733 + rc = of_property_count_strings(np, "phandle-list-names");
1734 + selftest(rc == 3, "Incorrect string count; rc=%i\n", rc);
1735 + rc = of_property_count_strings(np, "unterminated-string");
1736 + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc);
1737 + rc = of_property_count_strings(np, "unterminated-string-list");
1738 + selftest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc);
1739 +
1740 + /* of_property_read_string_index() tests */
1741 + rc = of_property_read_string_index(np, "string-property", 0, strings);
1742 + selftest(rc == 0 && !strcmp(strings[0], "foobar"), "of_property_read_string_index() failure; rc=%i\n", rc);
1743 + strings[0] = NULL;
1744 + rc = of_property_read_string_index(np, "string-property", 1, strings);
1745 + selftest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc);
1746 + rc = of_property_read_string_index(np, "phandle-list-names", 0, strings);
1747 + selftest(rc == 0 && !strcmp(strings[0], "first"), "of_property_read_string_index() failure; rc=%i\n", rc);
1748 + rc = of_property_read_string_index(np, "phandle-list-names", 1, strings);
1749 + selftest(rc == 0 && !strcmp(strings[0], "second"), "of_property_read_string_index() failure; rc=%i\n", rc);
1750 + rc = of_property_read_string_index(np, "phandle-list-names", 2, strings);
1751 + selftest(rc == 0 && !strcmp(strings[0], "third"), "of_property_read_string_index() failure; rc=%i\n", rc);
1752 + strings[0] = NULL;
1753 + rc = of_property_read_string_index(np, "phandle-list-names", 3, strings);
1754 + selftest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc);
1755 + strings[0] = NULL;
1756 + rc = of_property_read_string_index(np, "unterminated-string", 0, strings);
1757 + selftest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc);
1758 + rc = of_property_read_string_index(np, "unterminated-string-list", 0, strings);
1759 + selftest(rc == 0 && !strcmp(strings[0], "first"), "of_property_read_string_index() failure; rc=%i\n", rc);
1760 + strings[0] = NULL;
1761 + rc = of_property_read_string_index(np, "unterminated-string-list", 2, strings); /* should fail */
1762 + selftest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", rc);
1763 + strings[1] = NULL;
1764 +
1765 + /* of_property_read_string_array() tests */
1766 + rc = of_property_read_string_array(np, "string-property", strings, 4);
1767 + selftest(rc == 1, "Incorrect string count; rc=%i\n", rc);
1768 + rc = of_property_read_string_array(np, "phandle-list-names", strings, 4);
1769 + selftest(rc == 3, "Incorrect string count; rc=%i\n", rc);
1770 + rc = of_property_read_string_array(np, "unterminated-string", strings, 4);
1771 + selftest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc);
1772 + /* -- An incorrectly formed string should cause a failure */
1773 + rc = of_property_read_string_array(np, "unterminated-string-list", strings, 4);
1774 + selftest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc);
1775 + /* -- parsing the correctly formed strings should still work: */
1776 + strings[2] = NULL;
1777 + rc = of_property_read_string_array(np, "unterminated-string-list", strings, 2);
1778 + selftest(rc == 2 && strings[2] == NULL, "of_property_read_string_array() failure; rc=%i\n", rc);
1779 + strings[1] = NULL;
1780 + rc = of_property_read_string_array(np, "phandle-list-names", strings, 1);
1781 + selftest(rc == 1 && strings[1] == NULL, "Overwrote end of string array; rc=%i, str='%s'\n", rc, strings[1]);
1782 }
1783
1784 static int __init of_selftest(void)
1785 @@ -167,7 +221,7 @@ static int __init of_selftest(void)
1786
1787 pr_info("start of selftest - you will see error messages\n");
1788 of_selftest_parse_phandle_with_args();
1789 - of_selftest_property_match_string();
1790 + of_selftest_property_string();
1791 pr_info("end of selftest - %s\n", selftest_passed ? "PASS" : "FAIL");
1792 return 0;
1793 }
1794 diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
1795 index c9076bdaf2c1..59a8d325a697 100644
1796 --- a/drivers/platform/x86/acer-wmi.c
1797 +++ b/drivers/platform/x86/acer-wmi.c
1798 @@ -572,6 +572,17 @@ static const struct dmi_system_id video_vendor_dmi_table[] = {
1799 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750"),
1800 },
1801 },
1802 + {
1803 + /*
1804 + * Note no video_set_backlight_video_vendor, we must use the
1805 + * acer interface, as there is no native backlight interface.
1806 + */
1807 + .ident = "Acer KAV80",
1808 + .matches = {
1809 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
1810 + DMI_MATCH(DMI_PRODUCT_NAME, "KAV80"),
1811 + },
1812 + },
1813 {}
1814 };
1815
1816 diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
1817 index 66b0b26a1381..cfd49eca67aa 100644
1818 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
1819 +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
1820 @@ -762,7 +762,16 @@ static void tcm_qla2xxx_clear_nacl_from_fcport_map(struct qla_tgt_sess *sess)
1821 pr_debug("fc_rport domain: port_id 0x%06x\n", nacl->nport_id);
1822
1823 node = btree_remove32(&lport->lport_fcport_map, nacl->nport_id);
1824 - WARN_ON(node && (node != se_nacl));
1825 + if (WARN_ON(node && (node != se_nacl))) {
1826 + /*
1827 + * The nacl no longer matches what we think it should be.
1828 + * Most likely a new dynamic acl has been added while
1829 + * someone dropped the hardware lock. It clearly is a
1830 + * bug elsewhere, but this bit can't make things worse.
1831 + */
1832 + btree_insert32(&lport->lport_fcport_map, nacl->nport_id,
1833 + node, GFP_ATOMIC);
1834 + }
1835
1836 pr_debug("Removed from fcport_map: %p for WWNN: 0x%016LX, port_id: 0x%06x\n",
1837 se_nacl, nacl->nport_wwnn, nacl->nport_id);
1838 diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
1839 index 371cc66f1a0e..5266c89fc989 100644
1840 --- a/drivers/spi/spi-pl022.c
1841 +++ b/drivers/spi/spi-pl022.c
1842 @@ -1080,7 +1080,7 @@ err_rxdesc:
1843 pl022->sgt_tx.nents, DMA_TO_DEVICE);
1844 err_tx_sgmap:
1845 dma_unmap_sg(rxchan->device->dev, pl022->sgt_rx.sgl,
1846 - pl022->sgt_tx.nents, DMA_FROM_DEVICE);
1847 + pl022->sgt_rx.nents, DMA_FROM_DEVICE);
1848 err_rx_sgmap:
1849 sg_free_table(&pl022->sgt_tx);
1850 err_alloc_tx_sg:
1851 diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
1852 index 48b396fced0a..d26a2d195d21 100644
1853 --- a/drivers/spi/spi-pxa2xx.c
1854 +++ b/drivers/spi/spi-pxa2xx.c
1855 @@ -1324,7 +1324,9 @@ static int pxa2xx_spi_suspend(struct device *dev)
1856 if (status != 0)
1857 return status;
1858 write_SSCR0(0, drv_data->ioaddr);
1859 - clk_disable_unprepare(ssp->clk);
1860 +
1861 + if (!pm_runtime_suspended(dev))
1862 + clk_disable_unprepare(ssp->clk);
1863
1864 return 0;
1865 }
1866 @@ -1338,7 +1340,8 @@ static int pxa2xx_spi_resume(struct device *dev)
1867 pxa2xx_spi_dma_resume(drv_data);
1868
1869 /* Enable the SSP clock */
1870 - clk_prepare_enable(ssp->clk);
1871 + if (!pm_runtime_suspended(dev))
1872 + clk_prepare_enable(ssp->clk);
1873
1874 /* Start the queue running */
1875 status = spi_master_resume(drv_data->master);
1876 diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
1877 index 6330af656a0f..bc23d66a7a1e 100644
1878 --- a/drivers/staging/iio/impedance-analyzer/ad5933.c
1879 +++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
1880 @@ -115,6 +115,7 @@ static const struct iio_chan_spec ad5933_channels[] = {
1881 .channel = 0,
1882 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED),
1883 .address = AD5933_REG_TEMP_DATA,
1884 + .scan_index = -1,
1885 .scan_type = {
1886 .sign = 's',
1887 .realbits = 14,
1888 @@ -124,9 +125,7 @@ static const struct iio_chan_spec ad5933_channels[] = {
1889 .type = IIO_VOLTAGE,
1890 .indexed = 1,
1891 .channel = 0,
1892 - .extend_name = "real_raw",
1893 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
1894 - BIT(IIO_CHAN_INFO_SCALE),
1895 + .extend_name = "real",
1896 .address = AD5933_REG_REAL_DATA,
1897 .scan_index = 0,
1898 .scan_type = {
1899 @@ -138,9 +137,7 @@ static const struct iio_chan_spec ad5933_channels[] = {
1900 .type = IIO_VOLTAGE,
1901 .indexed = 1,
1902 .channel = 0,
1903 - .extend_name = "imag_raw",
1904 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
1905 - BIT(IIO_CHAN_INFO_SCALE),
1906 + .extend_name = "imag",
1907 .address = AD5933_REG_IMAG_DATA,
1908 .scan_index = 1,
1909 .scan_type = {
1910 @@ -746,14 +743,14 @@ static int ad5933_probe(struct i2c_client *client,
1911 indio_dev->name = id->name;
1912 indio_dev->modes = INDIO_DIRECT_MODE;
1913 indio_dev->channels = ad5933_channels;
1914 - indio_dev->num_channels = 1; /* only register temp0_input */
1915 + indio_dev->num_channels = ARRAY_SIZE(ad5933_channels);
1916
1917 ret = ad5933_register_ring_funcs_and_init(indio_dev);
1918 if (ret)
1919 goto error_disable_reg;
1920
1921 - /* skip temp0_input, register in0_(real|imag)_raw */
1922 - ret = iio_buffer_register(indio_dev, &ad5933_channels[1], 2);
1923 + ret = iio_buffer_register(indio_dev, ad5933_channels,
1924 + ARRAY_SIZE(ad5933_channels));
1925 if (ret)
1926 goto error_unreg_ring;
1927
1928 diff --git a/drivers/staging/iio/meter/ade7758.h b/drivers/staging/iio/meter/ade7758.h
1929 index 07318203a836..e8c98cf57070 100644
1930 --- a/drivers/staging/iio/meter/ade7758.h
1931 +++ b/drivers/staging/iio/meter/ade7758.h
1932 @@ -119,7 +119,6 @@ struct ade7758_state {
1933 u8 *tx;
1934 u8 *rx;
1935 struct mutex buf_lock;
1936 - const struct iio_chan_spec *ade7758_ring_channels;
1937 struct spi_transfer ring_xfer[4];
1938 struct spi_message ring_msg;
1939 /*
1940 diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c
1941 index 8f5bcfab3563..75d9fe6a1bc1 100644
1942 --- a/drivers/staging/iio/meter/ade7758_core.c
1943 +++ b/drivers/staging/iio/meter/ade7758_core.c
1944 @@ -648,9 +648,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
1945 .type = IIO_VOLTAGE,
1946 .indexed = 1,
1947 .channel = 0,
1948 - .extend_name = "raw",
1949 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
1950 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
1951 .address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE),
1952 .scan_index = 0,
1953 .scan_type = {
1954 @@ -662,9 +659,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
1955 .type = IIO_CURRENT,
1956 .indexed = 1,
1957 .channel = 0,
1958 - .extend_name = "raw",
1959 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
1960 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
1961 .address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT),
1962 .scan_index = 1,
1963 .scan_type = {
1964 @@ -676,9 +670,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
1965 .type = IIO_POWER,
1966 .indexed = 1,
1967 .channel = 0,
1968 - .extend_name = "apparent_raw",
1969 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
1970 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
1971 + .extend_name = "apparent",
1972 .address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR),
1973 .scan_index = 2,
1974 .scan_type = {
1975 @@ -690,9 +682,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
1976 .type = IIO_POWER,
1977 .indexed = 1,
1978 .channel = 0,
1979 - .extend_name = "active_raw",
1980 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
1981 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
1982 + .extend_name = "active",
1983 .address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR),
1984 .scan_index = 3,
1985 .scan_type = {
1986 @@ -704,9 +694,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
1987 .type = IIO_POWER,
1988 .indexed = 1,
1989 .channel = 0,
1990 - .extend_name = "reactive_raw",
1991 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
1992 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
1993 + .extend_name = "reactive",
1994 .address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR),
1995 .scan_index = 4,
1996 .scan_type = {
1997 @@ -718,9 +706,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
1998 .type = IIO_VOLTAGE,
1999 .indexed = 1,
2000 .channel = 1,
2001 - .extend_name = "raw",
2002 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2003 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2004 .address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE),
2005 .scan_index = 5,
2006 .scan_type = {
2007 @@ -732,9 +717,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
2008 .type = IIO_CURRENT,
2009 .indexed = 1,
2010 .channel = 1,
2011 - .extend_name = "raw",
2012 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2013 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2014 .address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT),
2015 .scan_index = 6,
2016 .scan_type = {
2017 @@ -746,9 +728,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2018 .type = IIO_POWER,
2019 .indexed = 1,
2020 .channel = 1,
2021 - .extend_name = "apparent_raw",
2022 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2023 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2024 + .extend_name = "apparent",
2025 .address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR),
2026 .scan_index = 7,
2027 .scan_type = {
2028 @@ -760,9 +740,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2029 .type = IIO_POWER,
2030 .indexed = 1,
2031 .channel = 1,
2032 - .extend_name = "active_raw",
2033 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2034 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2035 + .extend_name = "active",
2036 .address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR),
2037 .scan_index = 8,
2038 .scan_type = {
2039 @@ -774,9 +752,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2040 .type = IIO_POWER,
2041 .indexed = 1,
2042 .channel = 1,
2043 - .extend_name = "reactive_raw",
2044 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2045 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2046 + .extend_name = "reactive",
2047 .address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR),
2048 .scan_index = 9,
2049 .scan_type = {
2050 @@ -788,9 +764,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
2051 .type = IIO_VOLTAGE,
2052 .indexed = 1,
2053 .channel = 2,
2054 - .extend_name = "raw",
2055 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2056 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2057 .address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE),
2058 .scan_index = 10,
2059 .scan_type = {
2060 @@ -802,9 +775,6 @@ static const struct iio_chan_spec ade7758_channels[] = {
2061 .type = IIO_CURRENT,
2062 .indexed = 1,
2063 .channel = 2,
2064 - .extend_name = "raw",
2065 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2066 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2067 .address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT),
2068 .scan_index = 11,
2069 .scan_type = {
2070 @@ -816,9 +786,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2071 .type = IIO_POWER,
2072 .indexed = 1,
2073 .channel = 2,
2074 - .extend_name = "apparent_raw",
2075 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2076 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2077 + .extend_name = "apparent",
2078 .address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR),
2079 .scan_index = 12,
2080 .scan_type = {
2081 @@ -830,9 +798,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2082 .type = IIO_POWER,
2083 .indexed = 1,
2084 .channel = 2,
2085 - .extend_name = "active_raw",
2086 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2087 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2088 + .extend_name = "active",
2089 .address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR),
2090 .scan_index = 13,
2091 .scan_type = {
2092 @@ -844,9 +810,7 @@ static const struct iio_chan_spec ade7758_channels[] = {
2093 .type = IIO_POWER,
2094 .indexed = 1,
2095 .channel = 2,
2096 - .extend_name = "reactive_raw",
2097 - .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
2098 - .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
2099 + .extend_name = "reactive",
2100 .address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR),
2101 .scan_index = 14,
2102 .scan_type = {
2103 @@ -890,13 +854,14 @@ static int ade7758_probe(struct spi_device *spi)
2104 goto error_free_rx;
2105 }
2106 st->us = spi;
2107 - st->ade7758_ring_channels = &ade7758_channels[0];
2108 mutex_init(&st->buf_lock);
2109
2110 indio_dev->name = spi->dev.driver->name;
2111 indio_dev->dev.parent = &spi->dev;
2112 indio_dev->info = &ade7758_info;
2113 indio_dev->modes = INDIO_DIRECT_MODE;
2114 + indio_dev->channels = ade7758_channels;
2115 + indio_dev->num_channels = ARRAY_SIZE(ade7758_channels);
2116
2117 ret = ade7758_configure_ring(indio_dev);
2118 if (ret)
2119 diff --git a/drivers/staging/iio/meter/ade7758_ring.c b/drivers/staging/iio/meter/ade7758_ring.c
2120 index b29e2d5d9937..6a0ef97e9146 100644
2121 --- a/drivers/staging/iio/meter/ade7758_ring.c
2122 +++ b/drivers/staging/iio/meter/ade7758_ring.c
2123 @@ -89,11 +89,10 @@ static irqreturn_t ade7758_trigger_handler(int irq, void *p)
2124 **/
2125 static int ade7758_ring_preenable(struct iio_dev *indio_dev)
2126 {
2127 - struct ade7758_state *st = iio_priv(indio_dev);
2128 unsigned channel;
2129 int ret;
2130
2131 - if (!bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength))
2132 + if (bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength))
2133 return -EINVAL;
2134
2135 ret = iio_sw_buffer_preenable(indio_dev);
2136 @@ -104,7 +103,7 @@ static int ade7758_ring_preenable(struct iio_dev *indio_dev)
2137 indio_dev->masklength);
2138
2139 ade7758_write_waveform_type(&indio_dev->dev,
2140 - st->ade7758_ring_channels[channel].address);
2141 + indio_dev->channels[channel].address);
2142
2143 return 0;
2144 }
2145 diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
2146 index 68398753eb82..2be407e22eb4 100644
2147 --- a/drivers/target/target_core_device.c
2148 +++ b/drivers/target/target_core_device.c
2149 @@ -1293,7 +1293,8 @@ int core_dev_add_initiator_node_lun_acl(
2150 * Check to see if there are any existing persistent reservation APTPL
2151 * pre-registrations that need to be enabled for this LUN ACL..
2152 */
2153 - core_scsi3_check_aptpl_registration(lun->lun_se_dev, tpg, lun, lacl);
2154 + core_scsi3_check_aptpl_registration(lun->lun_se_dev, tpg, lun, nacl,
2155 + lacl->mapped_lun);
2156 return 0;
2157 }
2158
2159 diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
2160 index 04a74938bb43..27ec6e4d1c7c 100644
2161 --- a/drivers/target/target_core_pr.c
2162 +++ b/drivers/target/target_core_pr.c
2163 @@ -945,10 +945,10 @@ int core_scsi3_check_aptpl_registration(
2164 struct se_device *dev,
2165 struct se_portal_group *tpg,
2166 struct se_lun *lun,
2167 - struct se_lun_acl *lun_acl)
2168 + struct se_node_acl *nacl,
2169 + u32 mapped_lun)
2170 {
2171 - struct se_node_acl *nacl = lun_acl->se_lun_nacl;
2172 - struct se_dev_entry *deve = nacl->device_list[lun_acl->mapped_lun];
2173 + struct se_dev_entry *deve = nacl->device_list[mapped_lun];
2174
2175 if (dev->dev_reservation_flags & DRF_SPC2_RESERVATIONS)
2176 return 0;
2177 diff --git a/drivers/target/target_core_pr.h b/drivers/target/target_core_pr.h
2178 index b4a004247ab2..ea9220de1dff 100644
2179 --- a/drivers/target/target_core_pr.h
2180 +++ b/drivers/target/target_core_pr.h
2181 @@ -55,7 +55,7 @@ extern int core_scsi3_alloc_aptpl_registration(
2182 unsigned char *, u16, u32, int, int, u8);
2183 extern int core_scsi3_check_aptpl_registration(struct se_device *,
2184 struct se_portal_group *, struct se_lun *,
2185 - struct se_lun_acl *);
2186 + struct se_node_acl *, u32);
2187 extern void core_scsi3_free_pr_reg_from_nacl(struct se_device *,
2188 struct se_node_acl *);
2189 extern void core_scsi3_free_all_registrations(struct se_device *);
2190 diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
2191 index aac9d2727e3c..8572207e3d4d 100644
2192 --- a/drivers/target/target_core_tpg.c
2193 +++ b/drivers/target/target_core_tpg.c
2194 @@ -40,6 +40,7 @@
2195 #include <target/target_core_fabric.h>
2196
2197 #include "target_core_internal.h"
2198 +#include "target_core_pr.h"
2199
2200 extern struct se_device *g_lun0_dev;
2201
2202 @@ -165,6 +166,13 @@ void core_tpg_add_node_to_devs(
2203
2204 core_enable_device_list_for_node(lun, NULL, lun->unpacked_lun,
2205 lun_access, acl, tpg);
2206 + /*
2207 + * Check to see if there are any existing persistent reservation
2208 + * APTPL pre-registrations that need to be enabled for this dynamic
2209 + * LUN ACL now..
2210 + */
2211 + core_scsi3_check_aptpl_registration(dev, tpg, lun, acl,
2212 + lun->unpacked_lun);
2213 spin_lock(&tpg->tpg_lun_lock);
2214 }
2215 spin_unlock(&tpg->tpg_lun_lock);
2216 diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
2217 index 6866d86e8663..12342695ed79 100644
2218 --- a/drivers/target/target_core_transport.c
2219 +++ b/drivers/target/target_core_transport.c
2220 @@ -1788,8 +1788,7 @@ static void transport_complete_qf(struct se_cmd *cmd)
2221
2222 if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) {
2223 ret = cmd->se_tfo->queue_status(cmd);
2224 - if (ret)
2225 - goto out;
2226 + goto out;
2227 }
2228
2229 switch (cmd->data_direction) {
2230 diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
2231 index 0f1cc2c8c22a..1fabb22ae615 100644
2232 --- a/drivers/tty/serial/serial_core.c
2233 +++ b/drivers/tty/serial/serial_core.c
2234 @@ -359,7 +359,7 @@ uart_get_baud_rate(struct uart_port *port, struct ktermios *termios,
2235 * The spd_hi, spd_vhi, spd_shi, spd_warp kludge...
2236 * Die! Die! Die!
2237 */
2238 - if (baud == 38400)
2239 + if (try == 0 && baud == 38400)
2240 baud = altbaud;
2241
2242 /*
2243 diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
2244 index 3723c0ebb316..d35afccdb6c9 100644
2245 --- a/drivers/tty/tty_io.c
2246 +++ b/drivers/tty/tty_io.c
2247 @@ -1698,6 +1698,7 @@ int tty_release(struct inode *inode, struct file *filp)
2248 int pty_master, tty_closing, o_tty_closing, do_sleep;
2249 int idx;
2250 char buf[64];
2251 + long timeout = 0;
2252
2253 if (tty_paranoia_check(tty, inode, __func__))
2254 return 0;
2255 @@ -1782,7 +1783,11 @@ int tty_release(struct inode *inode, struct file *filp)
2256 __func__, tty_name(tty, buf));
2257 tty_unlock_pair(tty, o_tty);
2258 mutex_unlock(&tty_mutex);
2259 - schedule();
2260 + schedule_timeout_killable(timeout);
2261 + if (timeout < 120 * HZ)
2262 + timeout = 2 * timeout + 1;
2263 + else
2264 + timeout = MAX_SCHEDULE_TIMEOUT;
2265 }
2266
2267 /*
2268 diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
2269 index fbf3f11aed2c..1e71f918eb9f 100644
2270 --- a/drivers/usb/class/cdc-acm.c
2271 +++ b/drivers/usb/class/cdc-acm.c
2272 @@ -883,11 +883,12 @@ static void acm_tty_set_termios(struct tty_struct *tty,
2273 /* FIXME: Needs to clear unsupported bits in the termios */
2274 acm->clocal = ((termios->c_cflag & CLOCAL) != 0);
2275
2276 - if (!newline.dwDTERate) {
2277 + if (C_BAUD(tty) == B0) {
2278 newline.dwDTERate = acm->line.dwDTERate;
2279 newctrl &= ~ACM_CTRL_DTR;
2280 - } else
2281 + } else if (termios_old && (termios_old->c_cflag & CBAUD) == B0) {
2282 newctrl |= ACM_CTRL_DTR;
2283 + }
2284
2285 if (newctrl != acm->ctrlout)
2286 acm_set_control(acm, acm->ctrlout = newctrl);
2287 @@ -1588,6 +1589,7 @@ static const struct usb_device_id acm_ids[] = {
2288 { USB_DEVICE(0x0572, 0x1328), /* Shiro / Aztech USB MODEM UM-3100 */
2289 .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
2290 },
2291 + { USB_DEVICE(0x2184, 0x001c) }, /* GW Instek AFG-2225 */
2292 { USB_DEVICE(0x22b8, 0x6425), /* Motorola MOTOMAGX phones */
2293 },
2294 /* Motorola H24 HSPA module: */
2295 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
2296 index d53547d2e4c7..f6e5ceb03afb 100644
2297 --- a/drivers/usb/core/hcd.c
2298 +++ b/drivers/usb/core/hcd.c
2299 @@ -1947,6 +1947,8 @@ int usb_alloc_streams(struct usb_interface *interface,
2300 return -EINVAL;
2301 if (dev->speed != USB_SPEED_SUPER)
2302 return -EINVAL;
2303 + if (dev->state < USB_STATE_CONFIGURED)
2304 + return -ENODEV;
2305
2306 /* Streams only apply to bulk endpoints. */
2307 for (i = 0; i < num_eps; i++)
2308 diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c
2309 index 3cea676ba901..6cd418f6ac07 100644
2310 --- a/drivers/usb/dwc3/ep0.c
2311 +++ b/drivers/usb/dwc3/ep0.c
2312 @@ -270,7 +270,7 @@ static void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
2313
2314 /* stall is always issued on EP0 */
2315 dep = dwc->eps[0];
2316 - __dwc3_gadget_ep_set_halt(dep, 1);
2317 + __dwc3_gadget_ep_set_halt(dep, 1, false);
2318 dep->flags = DWC3_EP_ENABLED;
2319 dwc->delayed_status = false;
2320
2321 @@ -480,7 +480,7 @@ static int dwc3_ep0_handle_feature(struct dwc3 *dwc,
2322 return -EINVAL;
2323 if (set == 0 && (dep->flags & DWC3_EP_WEDGE))
2324 break;
2325 - ret = __dwc3_gadget_ep_set_halt(dep, set);
2326 + ret = __dwc3_gadget_ep_set_halt(dep, set, true);
2327 if (ret)
2328 return -EINVAL;
2329 break;
2330 diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
2331 index d868b62c1a16..8f8e75e392de 100644
2332 --- a/drivers/usb/dwc3/gadget.c
2333 +++ b/drivers/usb/dwc3/gadget.c
2334 @@ -550,12 +550,11 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
2335 if (!usb_endpoint_xfer_isoc(desc))
2336 return 0;
2337
2338 - memset(&trb_link, 0, sizeof(trb_link));
2339 -
2340 /* Link TRB for ISOC. The HWO bit is never reset */
2341 trb_st_hw = &dep->trb_pool[0];
2342
2343 trb_link = &dep->trb_pool[DWC3_TRB_NUM - 1];
2344 + memset(trb_link, 0, sizeof(*trb_link));
2345
2346 trb_link->bpl = lower_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw));
2347 trb_link->bph = upper_32_bits(dwc3_trb_dma_offset(dep, trb_st_hw));
2348 @@ -606,7 +605,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
2349
2350 /* make sure HW endpoint isn't stalled */
2351 if (dep->flags & DWC3_EP_STALL)
2352 - __dwc3_gadget_ep_set_halt(dep, 0);
2353 + __dwc3_gadget_ep_set_halt(dep, 0, false);
2354
2355 reg = dwc3_readl(dwc->regs, DWC3_DALEPENA);
2356 reg &= ~DWC3_DALEPENA_EP(dep->number);
2357 @@ -1206,7 +1205,7 @@ out0:
2358 return ret;
2359 }
2360
2361 -int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value)
2362 +int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol)
2363 {
2364 struct dwc3_gadget_ep_cmd_params params;
2365 struct dwc3 *dwc = dep->dwc;
2366 @@ -1215,6 +1214,14 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value)
2367 memset(&params, 0x00, sizeof(params));
2368
2369 if (value) {
2370 + if (!protocol && ((dep->direction && dep->flags & DWC3_EP_BUSY) ||
2371 + (!list_empty(&dep->req_queued) ||
2372 + !list_empty(&dep->request_list)))) {
2373 + dev_dbg(dwc->dev, "%s: pending request, cannot halt\n",
2374 + dep->name);
2375 + return -EAGAIN;
2376 + }
2377 +
2378 ret = dwc3_send_gadget_ep_cmd(dwc, dep->number,
2379 DWC3_DEPCMD_SETSTALL, &params);
2380 if (ret)
2381 @@ -1254,7 +1261,7 @@ static int dwc3_gadget_ep_set_halt(struct usb_ep *ep, int value)
2382 goto out;
2383 }
2384
2385 - ret = __dwc3_gadget_ep_set_halt(dep, value);
2386 + ret = __dwc3_gadget_ep_set_halt(dep, value, false);
2387 out:
2388 spin_unlock_irqrestore(&dwc->lock, flags);
2389
2390 @@ -1274,7 +1281,7 @@ static int dwc3_gadget_ep_set_wedge(struct usb_ep *ep)
2391 if (dep->number == 0 || dep->number == 1)
2392 return dwc3_gadget_ep0_set_halt(ep, 1);
2393 else
2394 - return dwc3_gadget_ep_set_halt(ep, 1);
2395 + return __dwc3_gadget_ep_set_halt(dep, 1, false);
2396 }
2397
2398 /* -------------------------------------------------------------------------- */
2399 diff --git a/drivers/usb/dwc3/gadget.h b/drivers/usb/dwc3/gadget.h
2400 index 99e6d7248820..b3f25c302e35 100644
2401 --- a/drivers/usb/dwc3/gadget.h
2402 +++ b/drivers/usb/dwc3/gadget.h
2403 @@ -114,7 +114,7 @@ void dwc3_ep0_out_start(struct dwc3 *dwc);
2404 int dwc3_gadget_ep0_set_halt(struct usb_ep *ep, int value);
2405 int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request,
2406 gfp_t gfp_flags);
2407 -int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value);
2408 +int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, int value, int protocol);
2409 int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep,
2410 unsigned cmd, struct dwc3_gadget_ep_cmd_params *params);
2411 int dwc3_send_gadget_generic_command(struct dwc3 *dwc, int cmd, u32 param);
2412 diff --git a/drivers/usb/gadget/f_acm.c b/drivers/usb/gadget/f_acm.c
2413 index ab1065afbbd0..3384486c2884 100644
2414 --- a/drivers/usb/gadget/f_acm.c
2415 +++ b/drivers/usb/gadget/f_acm.c
2416 @@ -430,11 +430,12 @@ static int acm_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
2417 if (acm->notify->driver_data) {
2418 VDBG(cdev, "reset acm control interface %d\n", intf);
2419 usb_ep_disable(acm->notify);
2420 - } else {
2421 - VDBG(cdev, "init acm ctrl interface %d\n", intf);
2422 + }
2423 +
2424 + if (!acm->notify->desc)
2425 if (config_ep_by_speed(cdev->gadget, f, acm->notify))
2426 return -EINVAL;
2427 - }
2428 +
2429 usb_ep_enable(acm->notify);
2430 acm->notify->driver_data = acm;
2431
2432 diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
2433 index 5514822114a5..817a26cbfab1 100644
2434 --- a/drivers/usb/gadget/udc-core.c
2435 +++ b/drivers/usb/gadget/udc-core.c
2436 @@ -439,6 +439,11 @@ static ssize_t usb_udc_softconn_store(struct device *dev,
2437 {
2438 struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
2439
2440 + if (!udc->driver) {
2441 + dev_err(dev, "soft-connect without a gadget driver\n");
2442 + return -EOPNOTSUPP;
2443 + }
2444 +
2445 if (sysfs_streq(buf, "connect")) {
2446 usb_gadget_udc_start(udc->gadget, udc->driver);
2447 usb_gadget_connect(udc->gadget);
2448 diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
2449 index b22a4bc308e2..e9183eda39e0 100644
2450 --- a/drivers/usb/serial/cp210x.c
2451 +++ b/drivers/usb/serial/cp210x.c
2452 @@ -155,6 +155,7 @@ static const struct usb_device_id id_table[] = {
2453 { USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
2454 { USB_DEVICE(0x1ADB, 0x0001) }, /* Schweitzer Engineering C662 Cable */
2455 { USB_DEVICE(0x1B1C, 0x1C00) }, /* Corsair USB Dongle */
2456 + { USB_DEVICE(0x1BA4, 0x0002) }, /* Silicon Labs 358x factory default */
2457 { USB_DEVICE(0x1BE3, 0x07A6) }, /* WAGO 750-923 USB Service Cable */
2458 { USB_DEVICE(0x1D6F, 0x0010) }, /* Seluxit ApS RF Dongle */
2459 { USB_DEVICE(0x1E29, 0x0102) }, /* Festo CPX-USB */
2460 diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
2461 index 4235693ba2f7..768c2b4722d1 100644
2462 --- a/drivers/usb/serial/ftdi_sio.c
2463 +++ b/drivers/usb/serial/ftdi_sio.c
2464 @@ -148,6 +148,7 @@ static struct ftdi_sio_quirk ftdi_8u2232c_quirk = {
2465 * /sys/bus/usb/ftdi_sio/new_id, then send patch/report!
2466 */
2467 static struct usb_device_id id_table_combined [] = {
2468 + { USB_DEVICE(FTDI_VID, FTDI_BRICK_PID) },
2469 { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) },
2470 { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) },
2471 { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) },
2472 @@ -677,6 +678,8 @@ static struct usb_device_id id_table_combined [] = {
2473 { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_5_PID) },
2474 { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_6_PID) },
2475 { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) },
2476 + { USB_DEVICE(XSENS_VID, XSENS_AWINDA_DONGLE_PID) },
2477 + { USB_DEVICE(XSENS_VID, XSENS_AWINDA_STATION_PID) },
2478 { USB_DEVICE(XSENS_VID, XSENS_CONVERTER_PID) },
2479 { USB_DEVICE(XSENS_VID, XSENS_MTW_PID) },
2480 { USB_DEVICE(FTDI_VID, FTDI_OMNI1509) },
2481 diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
2482 index 8927a5c39b00..302ab9a71f06 100644
2483 --- a/drivers/usb/serial/ftdi_sio_ids.h
2484 +++ b/drivers/usb/serial/ftdi_sio_ids.h
2485 @@ -30,6 +30,12 @@
2486
2487 /*** third-party PIDs (using FTDI_VID) ***/
2488
2489 +/*
2490 + * Certain versions of the official Windows FTDI driver reprogrammed
2491 + * counterfeit FTDI devices to PID 0. Support these devices anyway.
2492 + */
2493 +#define FTDI_BRICK_PID 0x0000
2494 +
2495 #define FTDI_LUMEL_PD12_PID 0x6002
2496
2497 /*
2498 @@ -143,8 +149,12 @@
2499 * Xsens Technologies BV products (http://www.xsens.com).
2500 */
2501 #define XSENS_VID 0x2639
2502 -#define XSENS_CONVERTER_PID 0xD00D /* Xsens USB-serial converter */
2503 +#define XSENS_AWINDA_STATION_PID 0x0101
2504 +#define XSENS_AWINDA_DONGLE_PID 0x0102
2505 #define XSENS_MTW_PID 0x0200 /* Xsens MTw */
2506 +#define XSENS_CONVERTER_PID 0xD00D /* Xsens USB-serial converter */
2507 +
2508 +/* Xsens devices using FTDI VID */
2509 #define XSENS_CONVERTER_0_PID 0xD388 /* Xsens USB converter */
2510 #define XSENS_CONVERTER_1_PID 0xD389 /* Xsens Wireless Receiver */
2511 #define XSENS_CONVERTER_2_PID 0xD38A
2512 diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
2513 index 5f4b0cd0f6e9..b0eb1dfc601a 100644
2514 --- a/drivers/usb/serial/opticon.c
2515 +++ b/drivers/usb/serial/opticon.c
2516 @@ -219,7 +219,7 @@ static int opticon_write(struct tty_struct *tty, struct usb_serial_port *port,
2517
2518 /* The conncected devices do not have a bulk write endpoint,
2519 * to transmit data to de barcode device the control endpoint is used */
2520 - dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_NOIO);
2521 + dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
2522 if (!dr) {
2523 dev_err(&port->dev, "out of memory\n");
2524 count = -ENOMEM;
2525 diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
2526 index e47aabe0c760..8b3484134ab0 100644
2527 --- a/drivers/usb/serial/option.c
2528 +++ b/drivers/usb/serial/option.c
2529 @@ -269,6 +269,7 @@ static void option_instat_callback(struct urb *urb);
2530 #define TELIT_PRODUCT_DE910_DUAL 0x1010
2531 #define TELIT_PRODUCT_UE910_V2 0x1012
2532 #define TELIT_PRODUCT_LE920 0x1200
2533 +#define TELIT_PRODUCT_LE910 0x1201
2534
2535 /* ZTE PRODUCTS */
2536 #define ZTE_VENDOR_ID 0x19d2
2537 @@ -361,6 +362,7 @@ static void option_instat_callback(struct urb *urb);
2538
2539 /* Haier products */
2540 #define HAIER_VENDOR_ID 0x201e
2541 +#define HAIER_PRODUCT_CE81B 0x10f8
2542 #define HAIER_PRODUCT_CE100 0x2009
2543
2544 /* Cinterion (formerly Siemens) products */
2545 @@ -588,6 +590,11 @@ static const struct option_blacklist_info zte_1255_blacklist = {
2546 .reserved = BIT(3) | BIT(4),
2547 };
2548
2549 +static const struct option_blacklist_info telit_le910_blacklist = {
2550 + .sendsetup = BIT(0),
2551 + .reserved = BIT(1) | BIT(2),
2552 +};
2553 +
2554 static const struct option_blacklist_info telit_le920_blacklist = {
2555 .sendsetup = BIT(0),
2556 .reserved = BIT(1) | BIT(5),
2557 @@ -1137,6 +1144,8 @@ static const struct usb_device_id option_ids[] = {
2558 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) },
2559 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) },
2560 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) },
2561 + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910),
2562 + .driver_info = (kernel_ulong_t)&telit_le910_blacklist },
2563 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920),
2564 .driver_info = (kernel_ulong_t)&telit_le920_blacklist },
2565 { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
2566 @@ -1612,6 +1621,7 @@ static const struct usb_device_id option_ids[] = {
2567 { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) },
2568 { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) },
2569 { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) },
2570 + { USB_DEVICE_AND_INTERFACE_INFO(HAIER_VENDOR_ID, HAIER_PRODUCT_CE81B, 0xff, 0xff, 0xff) },
2571 /* Pirelli */
2572 { USB_DEVICE_INTERFACE_CLASS(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_1, 0xff) },
2573 { USB_DEVICE_INTERFACE_CLASS(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_2, 0xff) },
2574 diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
2575 index 22c7d4360fa2..b1d815eb6d0b 100644
2576 --- a/drivers/usb/storage/transport.c
2577 +++ b/drivers/usb/storage/transport.c
2578 @@ -1118,6 +1118,31 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
2579 */
2580 if (result == USB_STOR_XFER_LONG)
2581 fake_sense = 1;
2582 +
2583 + /*
2584 + * Sometimes a device will mistakenly skip the data phase
2585 + * and go directly to the status phase without sending a
2586 + * zero-length packet. If we get a 13-byte response here,
2587 + * check whether it really is a CSW.
2588 + */
2589 + if (result == USB_STOR_XFER_SHORT &&
2590 + srb->sc_data_direction == DMA_FROM_DEVICE &&
2591 + transfer_length - scsi_get_resid(srb) ==
2592 + US_BULK_CS_WRAP_LEN) {
2593 + struct scatterlist *sg = NULL;
2594 + unsigned int offset = 0;
2595 +
2596 + if (usb_stor_access_xfer_buf((unsigned char *) bcs,
2597 + US_BULK_CS_WRAP_LEN, srb, &sg,
2598 + &offset, FROM_XFER_BUF) ==
2599 + US_BULK_CS_WRAP_LEN &&
2600 + bcs->Signature ==
2601 + cpu_to_le32(US_BULK_CS_SIGN)) {
2602 + usb_stor_dbg(us, "Device skipped data phase\n");
2603 + scsi_set_resid(srb, transfer_length);
2604 + goto skipped_data_phase;
2605 + }
2606 + }
2607 }
2608
2609 /* See flow chart on pg 15 of the Bulk Only Transport spec for
2610 @@ -1153,6 +1178,7 @@ int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
2611 if (result != USB_STOR_XFER_GOOD)
2612 return USB_STOR_TRANSPORT_ERROR;
2613
2614 + skipped_data_phase:
2615 /* check bulk status */
2616 residue = le32_to_cpu(bcs->Residue);
2617 usb_stor_dbg(us, "Bulk Status S 0x%x T 0x%x R %u Stat 0x%x\n",
2618 diff --git a/drivers/video/console/bitblit.c b/drivers/video/console/bitblit.c
2619 index 61b182bf32a2..dbfe4eecf12e 100644
2620 --- a/drivers/video/console/bitblit.c
2621 +++ b/drivers/video/console/bitblit.c
2622 @@ -205,7 +205,6 @@ static void bit_putcs(struct vc_data *vc, struct fb_info *info,
2623 static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
2624 int bottom_only)
2625 {
2626 - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
2627 unsigned int cw = vc->vc_font.width;
2628 unsigned int ch = vc->vc_font.height;
2629 unsigned int rw = info->var.xres - (vc->vc_cols*cw);
2630 @@ -214,7 +213,7 @@ static void bit_clear_margins(struct vc_data *vc, struct fb_info *info,
2631 unsigned int bs = info->var.yres - bh;
2632 struct fb_fillrect region;
2633
2634 - region.color = attr_bgcol_ec(bgshift, vc, info);
2635 + region.color = 0;
2636 region.rop = ROP_COPY;
2637
2638 if (rw && !bottom_only) {
2639 diff --git a/drivers/video/console/fbcon_ccw.c b/drivers/video/console/fbcon_ccw.c
2640 index 41b32ae23dac..5a3cbf6dff4d 100644
2641 --- a/drivers/video/console/fbcon_ccw.c
2642 +++ b/drivers/video/console/fbcon_ccw.c
2643 @@ -197,9 +197,8 @@ static void ccw_clear_margins(struct vc_data *vc, struct fb_info *info,
2644 unsigned int bh = info->var.xres - (vc->vc_rows*ch);
2645 unsigned int bs = vc->vc_rows*ch;
2646 struct fb_fillrect region;
2647 - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
2648
2649 - region.color = attr_bgcol_ec(bgshift,vc,info);
2650 + region.color = 0;
2651 region.rop = ROP_COPY;
2652
2653 if (rw && !bottom_only) {
2654 diff --git a/drivers/video/console/fbcon_cw.c b/drivers/video/console/fbcon_cw.c
2655 index a93670ef7f89..e7ee44db4e98 100644
2656 --- a/drivers/video/console/fbcon_cw.c
2657 +++ b/drivers/video/console/fbcon_cw.c
2658 @@ -180,9 +180,8 @@ static void cw_clear_margins(struct vc_data *vc, struct fb_info *info,
2659 unsigned int bh = info->var.xres - (vc->vc_rows*ch);
2660 unsigned int rs = info->var.yres - rw;
2661 struct fb_fillrect region;
2662 - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
2663
2664 - region.color = attr_bgcol_ec(bgshift,vc,info);
2665 + region.color = 0;
2666 region.rop = ROP_COPY;
2667
2668 if (rw && !bottom_only) {
2669 diff --git a/drivers/video/console/fbcon_ud.c b/drivers/video/console/fbcon_ud.c
2670 index ff0872c0498b..19e3714abfe8 100644
2671 --- a/drivers/video/console/fbcon_ud.c
2672 +++ b/drivers/video/console/fbcon_ud.c
2673 @@ -227,9 +227,8 @@ static void ud_clear_margins(struct vc_data *vc, struct fb_info *info,
2674 unsigned int rw = info->var.xres - (vc->vc_cols*cw);
2675 unsigned int bh = info->var.yres - (vc->vc_rows*ch);
2676 struct fb_fillrect region;
2677 - int bgshift = (vc->vc_hi_font_mask) ? 13 : 12;
2678
2679 - region.color = attr_bgcol_ec(bgshift,vc,info);
2680 + region.color = 0;
2681 region.rop = ROP_COPY;
2682
2683 if (rw && !bottom_only) {
2684 diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c
2685 index a7ce73029f59..933241a6ab10 100644
2686 --- a/drivers/virtio/virtio_pci.c
2687 +++ b/drivers/virtio/virtio_pci.c
2688 @@ -791,6 +791,7 @@ static int virtio_pci_restore(struct device *dev)
2689 struct pci_dev *pci_dev = to_pci_dev(dev);
2690 struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
2691 struct virtio_driver *drv;
2692 + unsigned status = 0;
2693 int ret;
2694
2695 drv = container_of(vp_dev->vdev.dev.driver,
2696 @@ -801,14 +802,40 @@ static int virtio_pci_restore(struct device *dev)
2697 return ret;
2698
2699 pci_set_master(pci_dev);
2700 + /* We always start by resetting the device, in case a previous
2701 + * driver messed it up. */
2702 + vp_reset(&vp_dev->vdev);
2703 +
2704 + /* Acknowledge that we've seen the device. */
2705 + status |= VIRTIO_CONFIG_S_ACKNOWLEDGE;
2706 + vp_set_status(&vp_dev->vdev, status);
2707 +
2708 + /* Maybe driver failed before freeze.
2709 + * Restore the failed status, for debugging. */
2710 + status |= vp_dev->saved_status & VIRTIO_CONFIG_S_FAILED;
2711 + vp_set_status(&vp_dev->vdev, status);
2712 +
2713 + if (!drv)
2714 + return 0;
2715 +
2716 + /* We have a driver! */
2717 + status |= VIRTIO_CONFIG_S_DRIVER;
2718 + vp_set_status(&vp_dev->vdev, status);
2719 +
2720 vp_finalize_features(&vp_dev->vdev);
2721
2722 - if (drv && drv->restore)
2723 + if (drv->restore) {
2724 ret = drv->restore(&vp_dev->vdev);
2725 + if (ret) {
2726 + status |= VIRTIO_CONFIG_S_FAILED;
2727 + vp_set_status(&vp_dev->vdev, status);
2728 + return ret;
2729 + }
2730 + }
2731
2732 /* Finally, tell the device we're all set */
2733 - if (!ret)
2734 - vp_set_status(&vp_dev->vdev, vp_dev->saved_status);
2735 + status |= VIRTIO_CONFIG_S_DRIVER_OK;
2736 + vp_set_status(&vp_dev->vdev, status);
2737
2738 return ret;
2739 }
2740 diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c
2741 index 3af77aa051d2..e4bcfec7787e 100644
2742 --- a/fs/btrfs/file-item.c
2743 +++ b/fs/btrfs/file-item.c
2744 @@ -403,7 +403,7 @@ int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
2745 ret = 0;
2746 fail:
2747 while (ret < 0 && !list_empty(&tmplist)) {
2748 - sums = list_entry(&tmplist, struct btrfs_ordered_sum, list);
2749 + sums = list_entry(tmplist.next, struct btrfs_ordered_sum, list);
2750 list_del(&sums->list);
2751 kfree(sums);
2752 }
2753 diff --git a/fs/buffer.c b/fs/buffer.c
2754 index 10fca21ee8aa..83fedaa53b55 100644
2755 --- a/fs/buffer.c
2756 +++ b/fs/buffer.c
2757 @@ -2018,6 +2018,7 @@ int generic_write_end(struct file *file, struct address_space *mapping,
2758 struct page *page, void *fsdata)
2759 {
2760 struct inode *inode = mapping->host;
2761 + loff_t old_size = inode->i_size;
2762 int i_size_changed = 0;
2763
2764 copied = block_write_end(file, mapping, pos, len, copied, page, fsdata);
2765 @@ -2037,6 +2038,8 @@ int generic_write_end(struct file *file, struct address_space *mapping,
2766 unlock_page(page);
2767 page_cache_release(page);
2768
2769 + if (old_size < pos)
2770 + pagecache_isize_extended(inode, old_size, pos);
2771 /*
2772 * Don't mark the inode dirty under page lock. First, it unnecessarily
2773 * makes the holding time of page lock longer. Second, it forces lock
2774 @@ -2254,6 +2257,11 @@ static int cont_expand_zero(struct file *file, struct address_space *mapping,
2775 err = 0;
2776
2777 balance_dirty_pages_ratelimited(mapping);
2778 +
2779 + if (unlikely(fatal_signal_pending(current))) {
2780 + err = -EINTR;
2781 + goto out;
2782 + }
2783 }
2784
2785 /* page covers the boundary, find the boundary offset */
2786 diff --git a/fs/ext3/super.c b/fs/ext3/super.c
2787 index 6356665a74bb..882d4bdfd428 100644
2788 --- a/fs/ext3/super.c
2789 +++ b/fs/ext3/super.c
2790 @@ -1300,13 +1300,6 @@ set_qf_format:
2791 "not specified.");
2792 return 0;
2793 }
2794 - } else {
2795 - if (sbi->s_jquota_fmt) {
2796 - ext3_msg(sb, KERN_ERR, "error: journaled quota format "
2797 - "specified with no journaling "
2798 - "enabled.");
2799 - return 0;
2800 - }
2801 }
2802 #endif
2803 return 1;
2804 diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
2805 index 790b14c5f262..e4c4ac07cc32 100644
2806 --- a/fs/ext4/ext4.h
2807 +++ b/fs/ext4/ext4.h
2808 @@ -2088,6 +2088,7 @@ int do_journal_get_write_access(handle_t *handle,
2809 #define CONVERT_INLINE_DATA 2
2810
2811 extern struct inode *ext4_iget(struct super_block *, unsigned long);
2812 +extern struct inode *ext4_iget_normal(struct super_block *, unsigned long);
2813 extern int ext4_write_inode(struct inode *, struct writeback_control *);
2814 extern int ext4_setattr(struct dentry *, struct iattr *);
2815 extern int ext4_getattr(struct vfsmount *mnt, struct dentry *dentry,
2816 @@ -2260,8 +2261,8 @@ extern int ext4_register_li_request(struct super_block *sb,
2817 static inline int ext4_has_group_desc_csum(struct super_block *sb)
2818 {
2819 return EXT4_HAS_RO_COMPAT_FEATURE(sb,
2820 - EXT4_FEATURE_RO_COMPAT_GDT_CSUM |
2821 - EXT4_FEATURE_RO_COMPAT_METADATA_CSUM);
2822 + EXT4_FEATURE_RO_COMPAT_GDT_CSUM) ||
2823 + (EXT4_SB(sb)->s_chksum_driver != NULL);
2824 }
2825
2826 static inline ext4_fsblk_t ext4_blocks_count(struct ext4_super_block *es)
2827 diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
2828 index 1ecd3a8c2444..4d4718cf25ab 100644
2829 --- a/fs/ext4/ialloc.c
2830 +++ b/fs/ext4/ialloc.c
2831 @@ -793,6 +793,10 @@ got:
2832 struct buffer_head *block_bitmap_bh;
2833
2834 block_bitmap_bh = ext4_read_block_bitmap(sb, group);
2835 + if (!block_bitmap_bh) {
2836 + err = -EIO;
2837 + goto out;
2838 + }
2839 BUFFER_TRACE(block_bitmap_bh, "get block bitmap access");
2840 err = ext4_journal_get_write_access(handle, block_bitmap_bh);
2841 if (err) {
2842 diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
2843 index f9e11df768d5..e48bd5a1814b 100644
2844 --- a/fs/ext4/inode.c
2845 +++ b/fs/ext4/inode.c
2846 @@ -2647,6 +2647,20 @@ static int ext4_nonda_switch(struct super_block *sb)
2847 return 0;
2848 }
2849
2850 +/* We always reserve for an inode update; the superblock could be there too */
2851 +static int ext4_da_write_credits(struct inode *inode, loff_t pos, unsigned len)
2852 +{
2853 + if (likely(EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb,
2854 + EXT4_FEATURE_RO_COMPAT_LARGE_FILE)))
2855 + return 1;
2856 +
2857 + if (pos + len <= 0x7fffffffULL)
2858 + return 1;
2859 +
2860 + /* We might need to update the superblock to set LARGE_FILE */
2861 + return 2;
2862 +}
2863 +
2864 static int ext4_da_write_begin(struct file *file, struct address_space *mapping,
2865 loff_t pos, unsigned len, unsigned flags,
2866 struct page **pagep, void **fsdata)
2867 @@ -2697,7 +2711,8 @@ retry_grab:
2868 * of file which has an already mapped buffer.
2869 */
2870 retry_journal:
2871 - handle = ext4_journal_start(inode, EXT4_HT_WRITE_PAGE, 1);
2872 + handle = ext4_journal_start(inode, EXT4_HT_WRITE_PAGE,
2873 + ext4_da_write_credits(inode, pos, len));
2874 if (IS_ERR(handle)) {
2875 page_cache_release(page);
2876 return PTR_ERR(handle);
2877 @@ -4351,6 +4366,13 @@ bad_inode:
2878 return ERR_PTR(ret);
2879 }
2880
2881 +struct inode *ext4_iget_normal(struct super_block *sb, unsigned long ino)
2882 +{
2883 + if (ino < EXT4_FIRST_INO(sb) && ino != EXT4_ROOT_INO)
2884 + return ERR_PTR(-EIO);
2885 + return ext4_iget(sb, ino);
2886 +}
2887 +
2888 static int ext4_inode_blocks_set(handle_t *handle,
2889 struct ext4_inode *raw_inode,
2890 struct ext4_inode_info *ei)
2891 diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
2892 index 42624a995b00..d4fd81c44f55 100644
2893 --- a/fs/ext4/ioctl.c
2894 +++ b/fs/ext4/ioctl.c
2895 @@ -549,9 +549,17 @@ group_add_out:
2896 }
2897
2898 case EXT4_IOC_SWAP_BOOT:
2899 + {
2900 + int err;
2901 if (!(filp->f_mode & FMODE_WRITE))
2902 return -EBADF;
2903 - return swap_inode_boot_loader(sb, inode);
2904 + err = mnt_want_write_file(filp);
2905 + if (err)
2906 + return err;
2907 + err = swap_inode_boot_loader(sb, inode);
2908 + mnt_drop_write_file(filp);
2909 + return err;
2910 + }
2911
2912 case EXT4_IOC_RESIZE_FS: {
2913 ext4_fsblk_t n_blocks_count;
2914 diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
2915 index ab2f6dc44b3a..f1312173fa90 100644
2916 --- a/fs/ext4/namei.c
2917 +++ b/fs/ext4/namei.c
2918 @@ -1430,7 +1430,7 @@ static struct dentry *ext4_lookup(struct inode *dir, struct dentry *dentry, unsi
2919 dentry->d_name.name);
2920 return ERR_PTR(-EIO);
2921 }
2922 - inode = ext4_iget(dir->i_sb, ino);
2923 + inode = ext4_iget_normal(dir->i_sb, ino);
2924 if (inode == ERR_PTR(-ESTALE)) {
2925 EXT4_ERROR_INODE(dir,
2926 "deleted inode referenced: %u",
2927 @@ -1461,7 +1461,7 @@ struct dentry *ext4_get_parent(struct dentry *child)
2928 return ERR_PTR(-EIO);
2929 }
2930
2931 - return d_obtain_alias(ext4_iget(child->d_inode->i_sb, ino));
2932 + return d_obtain_alias(ext4_iget_normal(child->d_inode->i_sb, ino));
2933 }
2934
2935 /*
2936 diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
2937 index c503850a61a8..a69bd74ed390 100644
2938 --- a/fs/ext4/resize.c
2939 +++ b/fs/ext4/resize.c
2940 @@ -1066,7 +1066,7 @@ static void update_backups(struct super_block *sb, int blk_off, char *data,
2941 break;
2942
2943 if (meta_bg == 0)
2944 - backup_block = group * bpg + blk_off;
2945 + backup_block = ((ext4_fsblk_t)group) * bpg + blk_off;
2946 else
2947 backup_block = (ext4_group_first_block_no(sb, group) +
2948 ext4_bg_has_super(sb, group));
2949 diff --git a/fs/ext4/super.c b/fs/ext4/super.c
2950 index 1fc14f7a08b2..21a0b43a7d31 100644
2951 --- a/fs/ext4/super.c
2952 +++ b/fs/ext4/super.c
2953 @@ -964,7 +964,7 @@ static struct inode *ext4_nfs_get_inode(struct super_block *sb,
2954 * Currently we don't know the generation for parent directory, so
2955 * a generation of 0 means "accept any"
2956 */
2957 - inode = ext4_iget(sb, ino);
2958 + inode = ext4_iget_normal(sb, ino);
2959 if (IS_ERR(inode))
2960 return ERR_CAST(inode);
2961 if (generation && inode->i_generation != generation) {
2962 @@ -1632,13 +1632,6 @@ static int parse_options(char *options, struct super_block *sb,
2963 "not specified");
2964 return 0;
2965 }
2966 - } else {
2967 - if (sbi->s_jquota_fmt) {
2968 - ext4_msg(sb, KERN_ERR, "journaled quota format "
2969 - "specified with no journaling "
2970 - "enabled");
2971 - return 0;
2972 - }
2973 }
2974 #endif
2975 if (test_opt(sb, DIOREAD_NOLOCK)) {
2976 @@ -1957,6 +1950,10 @@ static __le16 ext4_group_desc_csum(struct ext4_sb_info *sbi, __u32 block_group,
2977 }
2978
2979 /* old crc16 code */
2980 + if (!(sbi->s_es->s_feature_ro_compat &
2981 + cpu_to_le32(EXT4_FEATURE_RO_COMPAT_GDT_CSUM)))
2982 + return 0;
2983 +
2984 offset = offsetof(struct ext4_group_desc, bg_checksum);
2985
2986 crc = crc16(~0, sbi->s_es->s_uuid, sizeof(sbi->s_es->s_uuid));
2987 diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
2988 index 298e9c8da364..a20816e7eb3a 100644
2989 --- a/fs/ext4/xattr.c
2990 +++ b/fs/ext4/xattr.c
2991 @@ -189,14 +189,28 @@ ext4_listxattr(struct dentry *dentry, char *buffer, size_t size)
2992 }
2993
2994 static int
2995 -ext4_xattr_check_names(struct ext4_xattr_entry *entry, void *end)
2996 +ext4_xattr_check_names(struct ext4_xattr_entry *entry, void *end,
2997 + void *value_start)
2998 {
2999 - while (!IS_LAST_ENTRY(entry)) {
3000 - struct ext4_xattr_entry *next = EXT4_XATTR_NEXT(entry);
3001 + struct ext4_xattr_entry *e = entry;
3002 +
3003 + while (!IS_LAST_ENTRY(e)) {
3004 + struct ext4_xattr_entry *next = EXT4_XATTR_NEXT(e);
3005 if ((void *)next >= end)
3006 return -EIO;
3007 - entry = next;
3008 + e = next;
3009 }
3010 +
3011 + while (!IS_LAST_ENTRY(entry)) {
3012 + if (entry->e_value_size != 0 &&
3013 + (value_start + le16_to_cpu(entry->e_value_offs) <
3014 + (void *)e + sizeof(__u32) ||
3015 + value_start + le16_to_cpu(entry->e_value_offs) +
3016 + le32_to_cpu(entry->e_value_size) > end))
3017 + return -EIO;
3018 + entry = EXT4_XATTR_NEXT(entry);
3019 + }
3020 +
3021 return 0;
3022 }
3023
3024 @@ -213,7 +227,8 @@ ext4_xattr_check_block(struct inode *inode, struct buffer_head *bh)
3025 return -EIO;
3026 if (!ext4_xattr_block_csum_verify(inode, bh->b_blocknr, BHDR(bh)))
3027 return -EIO;
3028 - error = ext4_xattr_check_names(BFIRST(bh), bh->b_data + bh->b_size);
3029 + error = ext4_xattr_check_names(BFIRST(bh), bh->b_data + bh->b_size,
3030 + bh->b_data);
3031 if (!error)
3032 set_buffer_verified(bh);
3033 return error;
3034 @@ -329,7 +344,7 @@ ext4_xattr_ibody_get(struct inode *inode, int name_index, const char *name,
3035 header = IHDR(inode, raw_inode);
3036 entry = IFIRST(header);
3037 end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
3038 - error = ext4_xattr_check_names(entry, end);
3039 + error = ext4_xattr_check_names(entry, end, entry);
3040 if (error)
3041 goto cleanup;
3042 error = ext4_xattr_find_entry(&entry, name_index, name,
3043 @@ -457,7 +472,7 @@ ext4_xattr_ibody_list(struct dentry *dentry, char *buffer, size_t buffer_size)
3044 raw_inode = ext4_raw_inode(&iloc);
3045 header = IHDR(inode, raw_inode);
3046 end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
3047 - error = ext4_xattr_check_names(IFIRST(header), end);
3048 + error = ext4_xattr_check_names(IFIRST(header), end, IFIRST(header));
3049 if (error)
3050 goto cleanup;
3051 error = ext4_xattr_list_entries(dentry, IFIRST(header),
3052 @@ -972,7 +987,8 @@ int ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
3053 is->s.here = is->s.first;
3054 is->s.end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
3055 if (ext4_test_inode_state(inode, EXT4_STATE_XATTR)) {
3056 - error = ext4_xattr_check_names(IFIRST(header), is->s.end);
3057 + error = ext4_xattr_check_names(IFIRST(header), is->s.end,
3058 + IFIRST(header));
3059 if (error)
3060 return error;
3061 /* Find the named attribute. */
3062 diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
3063 index 3bacc1909ddb..6e2fb5cbacde 100644
3064 --- a/fs/jbd2/recovery.c
3065 +++ b/fs/jbd2/recovery.c
3066 @@ -522,6 +522,7 @@ static int do_one_pass(journal_t *journal,
3067 !jbd2_descr_block_csum_verify(journal,
3068 bh->b_data)) {
3069 err = -EIO;
3070 + brelse(bh);
3071 goto failed;
3072 }
3073
3074 diff --git a/fs/jffs2/jffs2_fs_sb.h b/fs/jffs2/jffs2_fs_sb.h
3075 index 413ef89c2d1b..046fee8b6e9b 100644
3076 --- a/fs/jffs2/jffs2_fs_sb.h
3077 +++ b/fs/jffs2/jffs2_fs_sb.h
3078 @@ -134,8 +134,6 @@ struct jffs2_sb_info {
3079 struct rw_semaphore wbuf_sem; /* Protects the write buffer */
3080
3081 struct delayed_work wbuf_dwork; /* write-buffer write-out work */
3082 - int wbuf_queued; /* non-zero delayed work is queued */
3083 - spinlock_t wbuf_dwork_lock; /* protects wbuf_dwork and and wbuf_queued */
3084
3085 unsigned char *oobbuf;
3086 int oobavail; /* How many bytes are available for JFFS2 in OOB */
3087 diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
3088 index a6597d60d76d..09ed55190ee2 100644
3089 --- a/fs/jffs2/wbuf.c
3090 +++ b/fs/jffs2/wbuf.c
3091 @@ -1162,10 +1162,6 @@ static void delayed_wbuf_sync(struct work_struct *work)
3092 struct jffs2_sb_info *c = work_to_sb(work);
3093 struct super_block *sb = OFNI_BS_2SFFJ(c);
3094
3095 - spin_lock(&c->wbuf_dwork_lock);
3096 - c->wbuf_queued = 0;
3097 - spin_unlock(&c->wbuf_dwork_lock);
3098 -
3099 if (!(sb->s_flags & MS_RDONLY)) {
3100 jffs2_dbg(1, "%s()\n", __func__);
3101 jffs2_flush_wbuf_gc(c, 0);
3102 @@ -1180,14 +1176,9 @@ void jffs2_dirty_trigger(struct jffs2_sb_info *c)
3103 if (sb->s_flags & MS_RDONLY)
3104 return;
3105
3106 - spin_lock(&c->wbuf_dwork_lock);
3107 - if (!c->wbuf_queued) {
3108 + delay = msecs_to_jiffies(dirty_writeback_interval * 10);
3109 + if (queue_delayed_work(system_long_wq, &c->wbuf_dwork, delay))
3110 jffs2_dbg(1, "%s()\n", __func__);
3111 - delay = msecs_to_jiffies(dirty_writeback_interval * 10);
3112 - queue_delayed_work(system_long_wq, &c->wbuf_dwork, delay);
3113 - c->wbuf_queued = 1;
3114 - }
3115 - spin_unlock(&c->wbuf_dwork_lock);
3116 }
3117
3118 int jffs2_nand_flash_setup(struct jffs2_sb_info *c)
3119 @@ -1211,7 +1202,6 @@ int jffs2_nand_flash_setup(struct jffs2_sb_info *c)
3120
3121 /* Initialise write buffer */
3122 init_rwsem(&c->wbuf_sem);
3123 - spin_lock_init(&c->wbuf_dwork_lock);
3124 INIT_DELAYED_WORK(&c->wbuf_dwork, delayed_wbuf_sync);
3125 c->wbuf_pagesize = c->mtd->writesize;
3126 c->wbuf_ofs = 0xFFFFFFFF;
3127 @@ -1251,7 +1241,6 @@ int jffs2_dataflash_setup(struct jffs2_sb_info *c) {
3128
3129 /* Initialize write buffer */
3130 init_rwsem(&c->wbuf_sem);
3131 - spin_lock_init(&c->wbuf_dwork_lock);
3132 INIT_DELAYED_WORK(&c->wbuf_dwork, delayed_wbuf_sync);
3133 c->wbuf_pagesize = c->mtd->erasesize;
3134
3135 @@ -1311,7 +1300,6 @@ int jffs2_nor_wbuf_flash_setup(struct jffs2_sb_info *c) {
3136
3137 /* Initialize write buffer */
3138 init_rwsem(&c->wbuf_sem);
3139 - spin_lock_init(&c->wbuf_dwork_lock);
3140 INIT_DELAYED_WORK(&c->wbuf_dwork, delayed_wbuf_sync);
3141
3142 c->wbuf_pagesize = c->mtd->writesize;
3143 @@ -1346,7 +1334,6 @@ int jffs2_ubivol_setup(struct jffs2_sb_info *c) {
3144 return 0;
3145
3146 init_rwsem(&c->wbuf_sem);
3147 - spin_lock_init(&c->wbuf_dwork_lock);
3148 INIT_DELAYED_WORK(&c->wbuf_dwork, delayed_wbuf_sync);
3149
3150 c->wbuf_pagesize = c->mtd->writesize;
3151 diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
3152 index 1812f026960c..6ae664b489af 100644
3153 --- a/fs/lockd/mon.c
3154 +++ b/fs/lockd/mon.c
3155 @@ -159,6 +159,12 @@ static int nsm_mon_unmon(struct nsm_handle *nsm, u32 proc, struct nsm_res *res,
3156
3157 msg.rpc_proc = &clnt->cl_procinfo[proc];
3158 status = rpc_call_sync(clnt, &msg, RPC_TASK_SOFTCONN);
3159 + if (status == -ECONNREFUSED) {
3160 + dprintk("lockd: NSM upcall RPC failed, status=%d, forcing rebind\n",
3161 + status);
3162 + rpc_force_rebind(clnt);
3163 + status = rpc_call_sync(clnt, &msg, RPC_TASK_SOFTCONN);
3164 + }
3165 if (status < 0)
3166 dprintk("lockd: NSM upcall RPC failed, status=%d\n",
3167 status);
3168 diff --git a/fs/namespace.c b/fs/namespace.c
3169 index 7f6a9348c589..154822397780 100644
3170 --- a/fs/namespace.c
3171 +++ b/fs/namespace.c
3172 @@ -2696,6 +2696,9 @@ SYSCALL_DEFINE2(pivot_root, const char __user *, new_root,
3173 /* make sure we can reach put_old from new_root */
3174 if (!is_path_reachable(old_mnt, old.dentry, &new))
3175 goto out4;
3176 + /* make certain new is below the root */
3177 + if (!is_path_reachable(new_mnt, new.dentry, &root))
3178 + goto out4;
3179 root_mp->m_count++; /* pin it so it won't go away */
3180 br_write_lock(&vfsmount_lock);
3181 detach_mnt(new_mnt, &parent_path);
3182 diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
3183 index 0f9ce13972d0..9240dd1678da 100644
3184 --- a/fs/nfsd/nfs4proc.c
3185 +++ b/fs/nfsd/nfs4proc.c
3186 @@ -1191,7 +1191,8 @@ static bool need_wrongsec_check(struct svc_rqst *rqstp)
3187 */
3188 if (argp->opcnt == resp->opcnt)
3189 return false;
3190 -
3191 + if (next->opnum == OP_ILLEGAL)
3192 + return false;
3193 nextd = OPDESC(next);
3194 /*
3195 * Rest of 2.6.3.1.1: certain operations will return WRONGSEC
3196 diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
3197 index e4bcb2cf055a..3ba30825f387 100644
3198 --- a/fs/pstore/inode.c
3199 +++ b/fs/pstore/inode.c
3200 @@ -316,10 +316,10 @@ int pstore_mkfile(enum pstore_type_id type, char *psname, u64 id, int count,
3201 sprintf(name, "dmesg-%s-%lld", psname, id);
3202 break;
3203 case PSTORE_TYPE_CONSOLE:
3204 - sprintf(name, "console-%s", psname);
3205 + sprintf(name, "console-%s-%lld", psname, id);
3206 break;
3207 case PSTORE_TYPE_FTRACE:
3208 - sprintf(name, "ftrace-%s", psname);
3209 + sprintf(name, "ftrace-%s-%lld", psname, id);
3210 break;
3211 case PSTORE_TYPE_MCE:
3212 sprintf(name, "mce-%s-%lld", psname, id);
3213 diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
3214 index 38802d683969..7a10e047bc33 100644
3215 --- a/fs/quota/dquot.c
3216 +++ b/fs/quota/dquot.c
3217 @@ -637,7 +637,7 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
3218 dqstats_inc(DQST_LOOKUPS);
3219 err = sb->dq_op->write_dquot(dquot);
3220 if (!ret && err)
3221 - err = ret;
3222 + ret = err;
3223 dqput(dquot);
3224 spin_lock(&dq_list_lock);
3225 }
3226 diff --git a/fs/super.c b/fs/super.c
3227 index 68307c029228..e028b508db25 100644
3228 --- a/fs/super.c
3229 +++ b/fs/super.c
3230 @@ -76,6 +76,8 @@ static int prune_super(struct shrinker *shrink, struct shrink_control *sc)
3231
3232 total_objects = sb->s_nr_dentry_unused +
3233 sb->s_nr_inodes_unused + fs_objects + 1;
3234 + if (!total_objects)
3235 + total_objects = 1;
3236
3237 if (sc->nr_to_scan) {
3238 int dentries;
3239 diff --git a/fs/ubifs/commit.c b/fs/ubifs/commit.c
3240 index ff8229340cd5..26b69b2d4a45 100644
3241 --- a/fs/ubifs/commit.c
3242 +++ b/fs/ubifs/commit.c
3243 @@ -166,15 +166,10 @@ static int do_commit(struct ubifs_info *c)
3244 err = ubifs_orphan_end_commit(c);
3245 if (err)
3246 goto out;
3247 - old_ltail_lnum = c->ltail_lnum;
3248 - err = ubifs_log_end_commit(c, new_ltail_lnum);
3249 - if (err)
3250 - goto out;
3251 err = dbg_check_old_index(c, &zroot);
3252 if (err)
3253 goto out;
3254
3255 - mutex_lock(&c->mst_mutex);
3256 c->mst_node->cmt_no = cpu_to_le64(c->cmt_no);
3257 c->mst_node->log_lnum = cpu_to_le32(new_ltail_lnum);
3258 c->mst_node->root_lnum = cpu_to_le32(zroot.lnum);
3259 @@ -203,8 +198,9 @@ static int do_commit(struct ubifs_info *c)
3260 c->mst_node->flags |= cpu_to_le32(UBIFS_MST_NO_ORPHS);
3261 else
3262 c->mst_node->flags &= ~cpu_to_le32(UBIFS_MST_NO_ORPHS);
3263 - err = ubifs_write_master(c);
3264 - mutex_unlock(&c->mst_mutex);
3265 +
3266 + old_ltail_lnum = c->ltail_lnum;
3267 + err = ubifs_log_end_commit(c, new_ltail_lnum);
3268 if (err)
3269 goto out;
3270
3271 diff --git a/fs/ubifs/log.c b/fs/ubifs/log.c
3272 index 36bd4efd0819..06649d21b056 100644
3273 --- a/fs/ubifs/log.c
3274 +++ b/fs/ubifs/log.c
3275 @@ -106,10 +106,14 @@ static inline long long empty_log_bytes(const struct ubifs_info *c)
3276 h = (long long)c->lhead_lnum * c->leb_size + c->lhead_offs;
3277 t = (long long)c->ltail_lnum * c->leb_size;
3278
3279 - if (h >= t)
3280 + if (h > t)
3281 return c->log_bytes - h + t;
3282 - else
3283 + else if (h != t)
3284 return t - h;
3285 + else if (c->lhead_lnum != c->ltail_lnum)
3286 + return 0;
3287 + else
3288 + return c->log_bytes;
3289 }
3290
3291 /**
3292 @@ -447,9 +451,9 @@ out:
3293 * @ltail_lnum: new log tail LEB number
3294 *
3295 * This function is called on when the commit operation was finished. It
3296 - * moves log tail to new position and unmaps LEBs which contain obsolete data.
3297 - * Returns zero in case of success and a negative error code in case of
3298 - * failure.
3299 + * moves log tail to new position and updates the master node so that it stores
3300 + * the new log tail LEB number. Returns zero in case of success and a negative
3301 + * error code in case of failure.
3302 */
3303 int ubifs_log_end_commit(struct ubifs_info *c, int ltail_lnum)
3304 {
3305 @@ -477,7 +481,12 @@ int ubifs_log_end_commit(struct ubifs_info *c, int ltail_lnum)
3306 spin_unlock(&c->buds_lock);
3307
3308 err = dbg_check_bud_bytes(c);
3309 + if (err)
3310 + goto out;
3311
3312 + err = ubifs_write_master(c);
3313 +
3314 +out:
3315 mutex_unlock(&c->log_mutex);
3316 return err;
3317 }
3318 diff --git a/fs/ubifs/master.c b/fs/ubifs/master.c
3319 index ab83ace9910a..1a4bb9e8b3b8 100644
3320 --- a/fs/ubifs/master.c
3321 +++ b/fs/ubifs/master.c
3322 @@ -352,10 +352,9 @@ int ubifs_read_master(struct ubifs_info *c)
3323 * ubifs_write_master - write master node.
3324 * @c: UBIFS file-system description object
3325 *
3326 - * This function writes the master node. The caller has to take the
3327 - * @c->mst_mutex lock before calling this function. Returns zero in case of
3328 - * success and a negative error code in case of failure. The master node is
3329 - * written twice to enable recovery.
3330 + * This function writes the master node. Returns zero in case of success and a
3331 + * negative error code in case of failure. The master node is written twice to
3332 + * enable recovery.
3333 */
3334 int ubifs_write_master(struct ubifs_info *c)
3335 {
3336 diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
3337 index 879b9976c12b..05115d719408 100644
3338 --- a/fs/ubifs/super.c
3339 +++ b/fs/ubifs/super.c
3340 @@ -1970,7 +1970,6 @@ static struct ubifs_info *alloc_ubifs_info(struct ubi_volume_desc *ubi)
3341 mutex_init(&c->lp_mutex);
3342 mutex_init(&c->tnc_mutex);
3343 mutex_init(&c->log_mutex);
3344 - mutex_init(&c->mst_mutex);
3345 mutex_init(&c->umount_mutex);
3346 mutex_init(&c->bu_mutex);
3347 mutex_init(&c->write_reserve_mutex);
3348 diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
3349 index b2babce4d70f..bd51277f6fe1 100644
3350 --- a/fs/ubifs/ubifs.h
3351 +++ b/fs/ubifs/ubifs.h
3352 @@ -1042,7 +1042,6 @@ struct ubifs_debug_info;
3353 *
3354 * @mst_node: master node
3355 * @mst_offs: offset of valid master node
3356 - * @mst_mutex: protects the master node area, @mst_node, and @mst_offs
3357 *
3358 * @max_bu_buf_len: maximum bulk-read buffer length
3359 * @bu_mutex: protects the pre-allocated bulk-read buffer and @c->bu
3360 @@ -1282,7 +1281,6 @@ struct ubifs_info {
3361
3362 struct ubifs_mst_node *mst_node;
3363 int mst_offs;
3364 - struct mutex mst_mutex;
3365
3366 int max_bu_buf_len;
3367 struct mutex bu_mutex;
3368 diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
3369 index 3a1cff56ef20..d7b717090f2f 100644
3370 --- a/include/drm/drm_pciids.h
3371 +++ b/include/drm/drm_pciids.h
3372 @@ -52,7 +52,6 @@
3373 {0x1002, 0x4C64, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
3374 {0x1002, 0x4C66, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
3375 {0x1002, 0x4C67, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
3376 - {0x1002, 0x4C6E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280|RADEON_IS_MOBILITY}, \
3377 {0x1002, 0x4E44, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
3378 {0x1002, 0x4E45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
3379 {0x1002, 0x4E46, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
3380 diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
3381 index 2fdb4a451b49..494d228a91dd 100644
3382 --- a/include/linux/blkdev.h
3383 +++ b/include/linux/blkdev.h
3384 @@ -1187,10 +1187,9 @@ static inline int queue_alignment_offset(struct request_queue *q)
3385 static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t sector)
3386 {
3387 unsigned int granularity = max(lim->physical_block_size, lim->io_min);
3388 - unsigned int alignment = (sector << 9) & (granularity - 1);
3389 + unsigned int alignment = sector_div(sector, granularity >> 9) << 9;
3390
3391 - return (granularity + lim->alignment_offset - alignment)
3392 - & (granularity - 1);
3393 + return (granularity + lim->alignment_offset - alignment) % granularity;
3394 }
3395
3396 static inline int bdev_alignment_offset(struct block_device *bdev)
3397 diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
3398 index 24545cd90a25..02ae99e8e6d3 100644
3399 --- a/include/linux/compiler-gcc.h
3400 +++ b/include/linux/compiler-gcc.h
3401 @@ -37,6 +37,9 @@
3402 __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
3403 (typeof(ptr)) (__ptr + (off)); })
3404
3405 +/* Make the optimizer believe the variable can be manipulated arbitrarily. */
3406 +#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var))
3407 +
3408 #ifdef __CHECKER__
3409 #define __must_be_array(arr) 0
3410 #else
3411 diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h
3412 index dc1bd3dcf11f..5529c5239421 100644
3413 --- a/include/linux/compiler-intel.h
3414 +++ b/include/linux/compiler-intel.h
3415 @@ -15,6 +15,7 @@
3416 */
3417 #undef barrier
3418 #undef RELOC_HIDE
3419 +#undef OPTIMIZER_HIDE_VAR
3420
3421 #define barrier() __memory_barrier()
3422
3423 @@ -23,6 +24,12 @@
3424 __ptr = (unsigned long) (ptr); \
3425 (typeof(ptr)) (__ptr + (off)); })
3426
3427 +/* This should act as an optimization barrier on var.
3428 + * Given that this compiler does not have inline assembly, a compiler barrier
3429 + * is the best we can do.
3430 + */
3431 +#define OPTIMIZER_HIDE_VAR(var) barrier()
3432 +
3433 /* Intel ECC compiler doesn't support __builtin_types_compatible_p() */
3434 #define __must_be_array(a) 0
3435
3436 diff --git a/include/linux/compiler.h b/include/linux/compiler.h
3437 index 92669cd182a6..a2329c5e6206 100644
3438 --- a/include/linux/compiler.h
3439 +++ b/include/linux/compiler.h
3440 @@ -170,6 +170,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
3441 (typeof(ptr)) (__ptr + (off)); })
3442 #endif
3443
3444 +#ifndef OPTIMIZER_HIDE_VAR
3445 +#define OPTIMIZER_HIDE_VAR(var) barrier()
3446 +#endif
3447 +
3448 /* Not-quite-unique ID. */
3449 #ifndef __UNIQUE_ID
3450 # define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__)
3451 diff --git a/include/linux/mm.h b/include/linux/mm.h
3452 index a9a48309f045..7da14357aa76 100644
3453 --- a/include/linux/mm.h
3454 +++ b/include/linux/mm.h
3455 @@ -1004,6 +1004,7 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
3456
3457 extern void truncate_pagecache(struct inode *inode, loff_t old, loff_t new);
3458 extern void truncate_setsize(struct inode *inode, loff_t newsize);
3459 +void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to);
3460 void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end);
3461 int truncate_inode_page(struct address_space *mapping, struct page *page);
3462 int generic_error_remove_page(struct address_space *mapping, struct page *page);
3463 diff --git a/include/linux/of.h b/include/linux/of.h
3464 index 1fd08ca23106..5e9d35233a65 100644
3465 --- a/include/linux/of.h
3466 +++ b/include/linux/of.h
3467 @@ -252,14 +252,12 @@ extern int of_property_read_u64(const struct device_node *np,
3468 extern int of_property_read_string(struct device_node *np,
3469 const char *propname,
3470 const char **out_string);
3471 -extern int of_property_read_string_index(struct device_node *np,
3472 - const char *propname,
3473 - int index, const char **output);
3474 extern int of_property_match_string(struct device_node *np,
3475 const char *propname,
3476 const char *string);
3477 -extern int of_property_count_strings(struct device_node *np,
3478 - const char *propname);
3479 +extern int of_property_read_string_helper(struct device_node *np,
3480 + const char *propname,
3481 + const char **out_strs, size_t sz, int index);
3482 extern int of_device_is_compatible(const struct device_node *device,
3483 const char *);
3484 extern int of_device_is_available(const struct device_node *device);
3485 @@ -439,15 +437,9 @@ static inline int of_property_read_string(struct device_node *np,
3486 return -ENOSYS;
3487 }
3488
3489 -static inline int of_property_read_string_index(struct device_node *np,
3490 - const char *propname, int index,
3491 - const char **out_string)
3492 -{
3493 - return -ENOSYS;
3494 -}
3495 -
3496 -static inline int of_property_count_strings(struct device_node *np,
3497 - const char *propname)
3498 +static inline int of_property_read_string_helper(struct device_node *np,
3499 + const char *propname,
3500 + const char **out_strs, size_t sz, int index)
3501 {
3502 return -ENOSYS;
3503 }
3504 @@ -523,6 +515,70 @@ static inline int of_node_to_nid(struct device_node *np)
3505 #endif
3506
3507 /**
3508 + * of_property_read_string_array() - Read an array of strings from a multiple
3509 + * strings property.
3510 + * @np: device node from which the property value is to be read.
3511 + * @propname: name of the property to be searched.
3512 + * @out_strs: output array of string pointers.
3513 + * @sz: number of array elements to read.
3514 + *
3515 + * Search for a property in a device tree node and retrieve a list of
3516 + * terminated string values (pointer to data, not a copy) in that property.
3517 + *
3518 + * If @out_strs is NULL, the number of strings in the property is returned.
3519 + */
3520 +static inline int of_property_read_string_array(struct device_node *np,
3521 + const char *propname, const char **out_strs,
3522 + size_t sz)
3523 +{
3524 + return of_property_read_string_helper(np, propname, out_strs, sz, 0);
3525 +}
3526 +
3527 +/**
3528 + * of_property_count_strings() - Find and return the number of strings from a
3529 + * multiple strings property.
3530 + * @np: device node from which the property value is to be read.
3531 + * @propname: name of the property to be searched.
3532 + *
3533 + * Search for a property in a device tree node and retrieve the number of null
3534 + * terminated string contain in it. Returns the number of strings on
3535 + * success, -EINVAL if the property does not exist, -ENODATA if property
3536 + * does not have a value, and -EILSEQ if the string is not null-terminated
3537 + * within the length of the property data.
3538 + */
3539 +static inline int of_property_count_strings(struct device_node *np,
3540 + const char *propname)
3541 +{
3542 + return of_property_read_string_helper(np, propname, NULL, 0, 0);
3543 +}
3544 +
3545 +/**
3546 + * of_property_read_string_index() - Find and read a string from a multiple
3547 + * strings property.
3548 + * @np: device node from which the property value is to be read.
3549 + * @propname: name of the property to be searched.
3550 + * @index: index of the string in the list of strings
3551 + * @out_string: pointer to null terminated return string, modified only if
3552 + * return value is 0.
3553 + *
3554 + * Search for a property in a device tree node and retrieve a null
3555 + * terminated string value (pointer to data, not a copy) in the list of strings
3556 + * contained in that property.
3557 + * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if
3558 + * property does not have a value, and -EILSEQ if the string is not
3559 + * null-terminated within the length of the property data.
3560 + *
3561 + * The out_string pointer is modified only if a valid string can be decoded.
3562 + */
3563 +static inline int of_property_read_string_index(struct device_node *np,
3564 + const char *propname,
3565 + int index, const char **output)
3566 +{
3567 + int rc = of_property_read_string_helper(np, propname, output, 1, index);
3568 + return rc < 0 ? rc : 0;
3569 +}
3570 +
3571 +/**
3572 * of_property_read_bool - Findfrom a property
3573 * @np: device node from which the property value is to be read.
3574 * @propname: name of the property to be searched.
3575 diff --git a/include/linux/oom.h b/include/linux/oom.h
3576 index da60007075b5..297cda528855 100644
3577 --- a/include/linux/oom.h
3578 +++ b/include/linux/oom.h
3579 @@ -50,6 +50,9 @@ static inline bool oom_task_origin(const struct task_struct *p)
3580 extern unsigned long oom_badness(struct task_struct *p,
3581 struct mem_cgroup *memcg, const nodemask_t *nodemask,
3582 unsigned long totalpages);
3583 +
3584 +extern int oom_kills_count(void);
3585 +extern void note_oom_kill(void);
3586 extern void oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order,
3587 unsigned int points, unsigned long totalpages,
3588 struct mem_cgroup *memcg, nodemask_t *nodemask,
3589 diff --git a/include/linux/string.h b/include/linux/string.h
3590 index ac889c5ea11b..0ed878d0465c 100644
3591 --- a/include/linux/string.h
3592 +++ b/include/linux/string.h
3593 @@ -129,7 +129,7 @@ int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __printf(3, 4);
3594 #endif
3595
3596 extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
3597 - const void *from, size_t available);
3598 + const void *from, size_t available);
3599
3600 /**
3601 * strstarts - does @str start with @prefix?
3602 @@ -141,7 +141,8 @@ static inline bool strstarts(const char *str, const char *prefix)
3603 return strncmp(str, prefix, strlen(prefix)) == 0;
3604 }
3605
3606 -extern size_t memweight(const void *ptr, size_t bytes);
3607 +size_t memweight(const void *ptr, size_t bytes);
3608 +void memzero_explicit(void *s, size_t count);
3609
3610 /**
3611 * kbasename - return the last part of a pathname.
3612 diff --git a/kernel/freezer.c b/kernel/freezer.c
3613 index 78758512b1e1..bd733f6e610d 100644
3614 --- a/kernel/freezer.c
3615 +++ b/kernel/freezer.c
3616 @@ -42,6 +42,9 @@ bool freezing_slow_path(struct task_struct *p)
3617 if (p->flags & PF_NOFREEZE)
3618 return false;
3619
3620 + if (test_thread_flag(TIF_MEMDIE))
3621 + return false;
3622 +
3623 if (pm_nosig_freezing || cgroup_freezing(p))
3624 return true;
3625
3626 diff --git a/kernel/module.c b/kernel/module.c
3627 index 10a3af821d28..61fb677211cb 100644
3628 --- a/kernel/module.c
3629 +++ b/kernel/module.c
3630 @@ -1866,7 +1866,9 @@ static void free_module(struct module *mod)
3631
3632 /* We leave it in list to prevent duplicate loads, but make sure
3633 * that noone uses it while it's being deconstructed. */
3634 + mutex_lock(&module_mutex);
3635 mod->state = MODULE_STATE_UNFORMED;
3636 + mutex_unlock(&module_mutex);
3637
3638 /* Remove dynamic debug info */
3639 ddebug_remove_module(mod->name);
3640 diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
3641 index 424c2d4265c9..77e6b83c0431 100644
3642 --- a/kernel/posix-timers.c
3643 +++ b/kernel/posix-timers.c
3644 @@ -634,6 +634,7 @@ SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock,
3645 goto out;
3646 }
3647 } else {
3648 + memset(&event.sigev_value, 0, sizeof(event.sigev_value));
3649 event.sigev_notify = SIGEV_SIGNAL;
3650 event.sigev_signo = SIGALRM;
3651 event.sigev_value.sival_int = new_timer->it_id;
3652 diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
3653 index b26f5f1e773e..1634dc6e2fe7 100644
3654 --- a/kernel/power/hibernate.c
3655 +++ b/kernel/power/hibernate.c
3656 @@ -491,8 +491,14 @@ int hibernation_restore(int platform_mode)
3657 error = dpm_suspend_start(PMSG_QUIESCE);
3658 if (!error) {
3659 error = resume_target_kernel(platform_mode);
3660 - dpm_resume_end(PMSG_RECOVER);
3661 + /*
3662 + * The above should either succeed and jump to the new kernel,
3663 + * or return with an error. Otherwise things are just
3664 + * undefined, so let's be paranoid.
3665 + */
3666 + BUG_ON(!error);
3667 }
3668 + dpm_resume_end(PMSG_RECOVER);
3669 pm_restore_gfp_mask();
3670 ftrace_start();
3671 resume_console();
3672 diff --git a/kernel/power/process.c b/kernel/power/process.c
3673 index 1b212bee1510..0695319b5fde 100644
3674 --- a/kernel/power/process.c
3675 +++ b/kernel/power/process.c
3676 @@ -103,6 +103,28 @@ static int try_to_freeze_tasks(bool user_only)
3677 return todo ? -EBUSY : 0;
3678 }
3679
3680 +/*
3681 + * Returns true if all freezable tasks (except for current) are frozen already
3682 + */
3683 +static bool check_frozen_processes(void)
3684 +{
3685 + struct task_struct *g, *p;
3686 + bool ret = true;
3687 +
3688 + read_lock(&tasklist_lock);
3689 + for_each_process_thread(g, p) {
3690 + if (p != current && !freezer_should_skip(p) &&
3691 + !frozen(p)) {
3692 + ret = false;
3693 + goto done;
3694 + }
3695 + }
3696 +done:
3697 + read_unlock(&tasklist_lock);
3698 +
3699 + return ret;
3700 +}
3701 +
3702 /**
3703 * freeze_processes - Signal user space processes to enter the refrigerator.
3704 *
3705 @@ -111,6 +133,7 @@ static int try_to_freeze_tasks(bool user_only)
3706 int freeze_processes(void)
3707 {
3708 int error;
3709 + int oom_kills_saved;
3710
3711 error = __usermodehelper_disable(UMH_FREEZING);
3712 if (error)
3713 @@ -121,12 +144,27 @@ int freeze_processes(void)
3714
3715 printk("Freezing user space processes ... ");
3716 pm_freezing = true;
3717 + oom_kills_saved = oom_kills_count();
3718 error = try_to_freeze_tasks(true);
3719 if (!error) {
3720 - printk("done.");
3721 __usermodehelper_set_disable_depth(UMH_DISABLED);
3722 oom_killer_disable();
3723 +
3724 + /*
3725 + * There might have been an OOM kill while we were
3726 + * freezing tasks and the killed task might be still
3727 + * on the way out so we have to double check for race.
3728 + */
3729 + if (oom_kills_count() != oom_kills_saved &&
3730 + !check_frozen_processes()) {
3731 + __usermodehelper_set_disable_depth(UMH_ENABLED);
3732 + printk("OOM in progress.");
3733 + error = -EBUSY;
3734 + goto done;
3735 + }
3736 + printk("done.");
3737 }
3738 +done:
3739 printk("\n");
3740 BUG_ON(in_atomic());
3741
3742 diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
3743 index 322e16461072..bdb9ee0af991 100644
3744 --- a/kernel/trace/trace_syscalls.c
3745 +++ b/kernel/trace/trace_syscalls.c
3746 @@ -312,7 +312,7 @@ static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
3747 int size;
3748
3749 syscall_nr = trace_get_syscall_nr(current, regs);
3750 - if (syscall_nr < 0)
3751 + if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
3752 return;
3753 if (!test_bit(syscall_nr, tr->enabled_enter_syscalls))
3754 return;
3755 @@ -354,7 +354,7 @@ static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
3756 int syscall_nr;
3757
3758 syscall_nr = trace_get_syscall_nr(current, regs);
3759 - if (syscall_nr < 0)
3760 + if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
3761 return;
3762 if (!test_bit(syscall_nr, tr->enabled_exit_syscalls))
3763 return;
3764 @@ -557,7 +557,7 @@ static void perf_syscall_enter(void *ignore, struct pt_regs *regs, long id)
3765 int size;
3766
3767 syscall_nr = trace_get_syscall_nr(current, regs);
3768 - if (syscall_nr < 0)
3769 + if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
3770 return;
3771 if (!test_bit(syscall_nr, enabled_perf_enter_syscalls))
3772 return;
3773 @@ -633,7 +633,7 @@ static void perf_syscall_exit(void *ignore, struct pt_regs *regs, long ret)
3774 int size;
3775
3776 syscall_nr = trace_get_syscall_nr(current, regs);
3777 - if (syscall_nr < 0)
3778 + if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
3779 return;
3780 if (!test_bit(syscall_nr, enabled_perf_exit_syscalls))
3781 return;
3782 diff --git a/lib/bitmap.c b/lib/bitmap.c
3783 index 06f7e4fe8d2d..e5c4ebe586ba 100644
3784 --- a/lib/bitmap.c
3785 +++ b/lib/bitmap.c
3786 @@ -131,7 +131,9 @@ void __bitmap_shift_right(unsigned long *dst,
3787 lower = src[off + k];
3788 if (left && off + k == lim - 1)
3789 lower &= mask;
3790 - dst[k] = upper << (BITS_PER_LONG - rem) | lower >> rem;
3791 + dst[k] = lower >> rem;
3792 + if (rem)
3793 + dst[k] |= upper << (BITS_PER_LONG - rem);
3794 if (left && k == lim - 1)
3795 dst[k] &= mask;
3796 }
3797 @@ -172,7 +174,9 @@ void __bitmap_shift_left(unsigned long *dst,
3798 upper = src[k];
3799 if (left && k == lim - 1)
3800 upper &= (1UL << left) - 1;
3801 - dst[k + off] = lower >> (BITS_PER_LONG - rem) | upper << rem;
3802 + dst[k + off] = upper << rem;
3803 + if (rem)
3804 + dst[k + off] |= lower >> (BITS_PER_LONG - rem);
3805 if (left && k + off == lim - 1)
3806 dst[k + off] &= (1UL << left) - 1;
3807 }
3808 diff --git a/lib/string.c b/lib/string.c
3809 index e5878de4f101..43d0781daf47 100644
3810 --- a/lib/string.c
3811 +++ b/lib/string.c
3812 @@ -586,6 +586,22 @@ void *memset(void *s, int c, size_t count)
3813 EXPORT_SYMBOL(memset);
3814 #endif
3815
3816 +/**
3817 + * memzero_explicit - Fill a region of memory (e.g. sensitive
3818 + * keying data) with 0s.
3819 + * @s: Pointer to the start of the area.
3820 + * @count: The size of the area.
3821 + *
3822 + * memzero_explicit() doesn't need an arch-specific version as
3823 + * it just invokes the one of memset() implicitly.
3824 + */
3825 +void memzero_explicit(void *s, size_t count)
3826 +{
3827 + memset(s, 0, count);
3828 + OPTIMIZER_HIDE_VAR(s);
3829 +}
3830 +EXPORT_SYMBOL(memzero_explicit);
3831 +
3832 #ifndef __HAVE_ARCH_MEMCPY
3833 /**
3834 * memcpy - Copy one area of memory to another
3835 diff --git a/mm/oom_kill.c b/mm/oom_kill.c
3836 index 8e40908e724a..f104c7e9f61e 100644
3837 --- a/mm/oom_kill.c
3838 +++ b/mm/oom_kill.c
3839 @@ -402,6 +402,23 @@ static void dump_header(struct task_struct *p, gfp_t gfp_mask, int order,
3840 dump_tasks(memcg, nodemask);
3841 }
3842
3843 +/*
3844 + * Number of OOM killer invocations (including memcg OOM killer).
3845 + * Primarily used by PM freezer to check for potential races with
3846 + * OOM killed frozen task.
3847 + */
3848 +static atomic_t oom_kills = ATOMIC_INIT(0);
3849 +
3850 +int oom_kills_count(void)
3851 +{
3852 + return atomic_read(&oom_kills);
3853 +}
3854 +
3855 +void note_oom_kill(void)
3856 +{
3857 + atomic_inc(&oom_kills);
3858 +}
3859 +
3860 #define K(x) ((x) << (PAGE_SHIFT-10))
3861 /*
3862 * Must be called while holding a reference to p, which will be released upon
3863 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
3864 index 71305c6aba5b..494a081ec5e4 100644
3865 --- a/mm/page_alloc.c
3866 +++ b/mm/page_alloc.c
3867 @@ -2120,6 +2120,14 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
3868 }
3869
3870 /*
3871 + * PM-freezer should be notified that there might be an OOM killer on
3872 + * its way to kill and wake somebody up. This is too early and we might
3873 + * end up not killing anything but false positives are acceptable.
3874 + * See freeze_processes.
3875 + */
3876 + note_oom_kill();
3877 +
3878 + /*
3879 * Go through the zonelist yet one more time, keep very high watermark
3880 * here, this is only to catch a parallel oom killing, we must fail if
3881 * we're still under heavy pressure.
3882 diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
3883 index 6d757e3a872a..e007236f345a 100644
3884 --- a/mm/page_cgroup.c
3885 +++ b/mm/page_cgroup.c
3886 @@ -170,6 +170,7 @@ static void free_page_cgroup(void *addr)
3887 sizeof(struct page_cgroup) * PAGES_PER_SECTION;
3888
3889 BUG_ON(PageReserved(page));
3890 + kmemleak_free(addr);
3891 free_pages_exact(addr, table_size);
3892 }
3893 }
3894 diff --git a/mm/percpu.c b/mm/percpu.c
3895 index 9bc1bf914cc8..25e2ea52db82 100644
3896 --- a/mm/percpu.c
3897 +++ b/mm/percpu.c
3898 @@ -1910,8 +1910,6 @@ void __init setup_per_cpu_areas(void)
3899
3900 if (pcpu_setup_first_chunk(ai, fc) < 0)
3901 panic("Failed to initialize percpu areas.");
3902 -
3903 - pcpu_free_alloc_info(ai);
3904 }
3905
3906 #endif /* CONFIG_SMP */
3907 diff --git a/mm/truncate.c b/mm/truncate.c
3908 index c75b736e54b7..2d6151fc8f08 100644
3909 --- a/mm/truncate.c
3910 +++ b/mm/truncate.c
3911 @@ -20,6 +20,7 @@
3912 #include <linux/buffer_head.h> /* grr. try_to_release_page,
3913 do_invalidatepage */
3914 #include <linux/cleancache.h>
3915 +#include <linux/rmap.h>
3916 #include "internal.h"
3917
3918
3919 @@ -567,16 +568,67 @@ EXPORT_SYMBOL(truncate_pagecache);
3920 */
3921 void truncate_setsize(struct inode *inode, loff_t newsize)
3922 {
3923 - loff_t oldsize;
3924 + loff_t oldsize = inode->i_size;
3925
3926 - oldsize = inode->i_size;
3927 i_size_write(inode, newsize);
3928 -
3929 + if (newsize > oldsize)
3930 + pagecache_isize_extended(inode, oldsize, newsize);
3931 truncate_pagecache(inode, oldsize, newsize);
3932 }
3933 EXPORT_SYMBOL(truncate_setsize);
3934
3935 /**
3936 + * pagecache_isize_extended - update pagecache after extension of i_size
3937 + * @inode: inode for which i_size was extended
3938 + * @from: original inode size
3939 + * @to: new inode size
3940 + *
3941 + * Handle extension of inode size either caused by extending truncate or by
3942 + * write starting after current i_size. We mark the page straddling current
3943 + * i_size RO so that page_mkwrite() is called on the nearest write access to
3944 + * the page. This way filesystem can be sure that page_mkwrite() is called on
3945 + * the page before user writes to the page via mmap after the i_size has been
3946 + * changed.
3947 + *
3948 + * The function must be called after i_size is updated so that page fault
3949 + * coming after we unlock the page will already see the new i_size.
3950 + * The function must be called while we still hold i_mutex - this not only
3951 + * makes sure i_size is stable but also that userspace cannot observe new
3952 + * i_size value before we are prepared to store mmap writes at new inode size.
3953 + */
3954 +void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to)
3955 +{
3956 + int bsize = 1 << inode->i_blkbits;
3957 + loff_t rounded_from;
3958 + struct page *page;
3959 + pgoff_t index;
3960 +
3961 + WARN_ON(to > inode->i_size);
3962 +
3963 + if (from >= to || bsize == PAGE_CACHE_SIZE)
3964 + return;
3965 + /* Page straddling @from will not have any hole block created? */
3966 + rounded_from = round_up(from, bsize);
3967 + if (to <= rounded_from || !(rounded_from & (PAGE_CACHE_SIZE - 1)))
3968 + return;
3969 +
3970 + index = from >> PAGE_CACHE_SHIFT;
3971 + page = find_lock_page(inode->i_mapping, index);
3972 + /* Page not cached? Nothing to do */
3973 + if (!page)
3974 + return;
3975 + /*
3976 + * See clear_page_dirty_for_io() for details why set_page_dirty()
3977 + * is needed.
3978 + */
3979 + if (page_mkclean(page))
3980 + set_page_dirty(page);
3981 + unlock_page(page);
3982 + page_cache_release(page);
3983 +}
3984 +EXPORT_SYMBOL(pagecache_isize_extended);
3985 +
3986 +/**
3987 * truncate_pagecache_range - unmap and remove pagecache that is hole-punched
3988 * @inode: inode
3989 * @lstart: offset of beginning of hole
3990 diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
3991 index 66e77f380fce..e3bea2e0821a 100644
3992 --- a/net/ceph/messenger.c
3993 +++ b/net/ceph/messenger.c
3994 @@ -290,7 +290,8 @@ int ceph_msgr_init(void)
3995 if (ceph_msgr_slab_init())
3996 return -ENOMEM;
3997
3998 - ceph_msgr_wq = alloc_workqueue("ceph-msgr", WQ_NON_REENTRANT, 0);
3999 + ceph_msgr_wq = alloc_workqueue("ceph-msgr",
4000 + WQ_NON_REENTRANT | WQ_MEM_RECLAIM, 0);
4001 if (ceph_msgr_wq)
4002 return 0;
4003
4004 diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
4005 index 9c3979a50804..bc773a10dca6 100644
4006 --- a/net/ipv4/fib_semantics.c
4007 +++ b/net/ipv4/fib_semantics.c
4008 @@ -533,7 +533,7 @@ int fib_nh_match(struct fib_config *cfg, struct fib_info *fi)
4009 return 1;
4010
4011 attrlen = rtnh_attrlen(rtnh);
4012 - if (attrlen < 0) {
4013 + if (attrlen > 0) {
4014 struct nlattr *nla, *attrs = rtnh_attrs(rtnh);
4015
4016 nla = nla_find(attrs, attrlen, RTA_GATEWAY);
4017 diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
4018 index 5afbbbe03b0e..22fa05e041ea 100644
4019 --- a/net/ipv4/ip_output.c
4020 +++ b/net/ipv4/ip_output.c
4021 @@ -1481,6 +1481,7 @@ void ip_send_unicast_reply(struct net *net, struct sk_buff *skb, __be32 daddr,
4022 struct sk_buff *nskb;
4023 struct sock *sk;
4024 struct inet_sock *inet;
4025 + int err;
4026
4027 if (ip_options_echo(&replyopts.opt.opt, skb))
4028 return;
4029 @@ -1517,8 +1518,13 @@ void ip_send_unicast_reply(struct net *net, struct sk_buff *skb, __be32 daddr,
4030 sock_net_set(sk, net);
4031 __skb_queue_head_init(&sk->sk_write_queue);
4032 sk->sk_sndbuf = sysctl_wmem_default;
4033 - ip_append_data(sk, &fl4, ip_reply_glue_bits, arg->iov->iov_base, len, 0,
4034 - &ipc, &rt, MSG_DONTWAIT);
4035 + err = ip_append_data(sk, &fl4, ip_reply_glue_bits, arg->iov->iov_base,
4036 + len, 0, &ipc, &rt, MSG_DONTWAIT);
4037 + if (unlikely(err)) {
4038 + ip_flush_pending_frames(sk);
4039 + goto out;
4040 + }
4041 +
4042 nskb = skb_peek(&sk->sk_write_queue);
4043 if (nskb) {
4044 if (arg->csumoffset >= 0)
4045 @@ -1530,7 +1536,7 @@ void ip_send_unicast_reply(struct net *net, struct sk_buff *skb, __be32 daddr,
4046 skb_set_queue_mapping(nskb, skb_get_queue_mapping(skb));
4047 ip_push_pending_frames(sk, &fl4);
4048 }
4049 -
4050 +out:
4051 put_cpu_var(unicast_sock);
4052
4053 ip_rt_put(rt);
4054 diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
4055 index a02bef35b134..d68d6cfac3b5 100644
4056 --- a/net/mac80211/rate.c
4057 +++ b/net/mac80211/rate.c
4058 @@ -448,7 +448,7 @@ static void rate_fixup_ratelist(struct ieee80211_vif *vif,
4059 */
4060 if (!(rates[0].flags & IEEE80211_TX_RC_MCS)) {
4061 u32 basic_rates = vif->bss_conf.basic_rates;
4062 - s8 baserate = basic_rates ? ffs(basic_rates - 1) : 0;
4063 + s8 baserate = basic_rates ? ffs(basic_rates) - 1 : 0;
4064
4065 rate = &sband->bitrates[rates[0].idx];
4066
4067 diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
4068 index 5ed562dfe743..afe41178c9fb 100644
4069 --- a/net/netlink/af_netlink.c
4070 +++ b/net/netlink/af_netlink.c
4071 @@ -571,7 +571,7 @@ static int netlink_mmap_sendmsg(struct sock *sk, struct msghdr *msg,
4072 * after validation, the socket and the ring may only be used by a
4073 * single process, otherwise we fall back to copying.
4074 */
4075 - if (atomic_long_read(&sk->sk_socket->file->f_count) > 2 ||
4076 + if (atomic_long_read(&sk->sk_socket->file->f_count) > 1 ||
4077 atomic_read(&nlk->mapped) > 1)
4078 excl = false;
4079
4080 diff --git a/security/integrity/evm/evm_main.c b/security/integrity/evm/evm_main.c
4081 index b9b2bebeb350..b980a6ce5c79 100644
4082 --- a/security/integrity/evm/evm_main.c
4083 +++ b/security/integrity/evm/evm_main.c
4084 @@ -286,9 +286,12 @@ int evm_inode_setxattr(struct dentry *dentry, const char *xattr_name,
4085 {
4086 const struct evm_ima_xattr_data *xattr_data = xattr_value;
4087
4088 - if ((strcmp(xattr_name, XATTR_NAME_EVM) == 0)
4089 - && (xattr_data->type == EVM_XATTR_HMAC))
4090 - return -EPERM;
4091 + if (strcmp(xattr_name, XATTR_NAME_EVM) == 0) {
4092 + if (!xattr_value_len)
4093 + return -EINVAL;
4094 + if (xattr_data->type != EVM_IMA_XATTR_DIGSIG)
4095 + return -EPERM;
4096 + }
4097 return evm_protect_xattr(dentry, xattr_name, xattr_value,
4098 xattr_value_len);
4099 }
4100 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
4101 index 70d4a8a7f21c..fdd6e4f8be39 100644
4102 --- a/security/selinux/hooks.c
4103 +++ b/security/selinux/hooks.c
4104 @@ -437,6 +437,7 @@ next_inode:
4105 list_entry(sbsec->isec_head.next,
4106 struct inode_security_struct, list);
4107 struct inode *inode = isec->inode;
4108 + list_del_init(&isec->list);
4109 spin_unlock(&sbsec->isec_lock);
4110 inode = igrab(inode);
4111 if (inode) {
4112 @@ -445,7 +446,6 @@ next_inode:
4113 iput(inode);
4114 }
4115 spin_lock(&sbsec->isec_lock);
4116 - list_del_init(&isec->list);
4117 goto next_inode;
4118 }
4119 spin_unlock(&sbsec->isec_lock);
4120 diff --git a/sound/core/pcm_compat.c b/sound/core/pcm_compat.c
4121 index af49721ba0e3..c4ac3c1e19af 100644
4122 --- a/sound/core/pcm_compat.c
4123 +++ b/sound/core/pcm_compat.c
4124 @@ -206,6 +206,8 @@ static int snd_pcm_status_user_compat(struct snd_pcm_substream *substream,
4125 if (err < 0)
4126 return err;
4127
4128 + if (clear_user(src, sizeof(*src)))
4129 + return -EFAULT;
4130 if (put_user(status.state, &src->state) ||
4131 compat_put_timespec(&status.trigger_tstamp, &src->trigger_tstamp) ||
4132 compat_put_timespec(&status.tstamp, &src->tstamp) ||
4133 diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c
4134 index dec997188dfb..a650aa48c786 100644
4135 --- a/virt/kvm/iommu.c
4136 +++ b/virt/kvm/iommu.c
4137 @@ -43,13 +43,13 @@ static void kvm_iommu_put_pages(struct kvm *kvm,
4138 gfn_t base_gfn, unsigned long npages);
4139
4140 static pfn_t kvm_pin_pages(struct kvm_memory_slot *slot, gfn_t gfn,
4141 - unsigned long size)
4142 + unsigned long npages)
4143 {
4144 gfn_t end_gfn;
4145 pfn_t pfn;
4146
4147 pfn = gfn_to_pfn_memslot(slot, gfn);
4148 - end_gfn = gfn + (size >> PAGE_SHIFT);
4149 + end_gfn = gfn + npages;
4150 gfn += 1;
4151
4152 if (is_error_noslot_pfn(pfn))
4153 @@ -119,7 +119,7 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
4154 * Pin all pages we are about to map in memory. This is
4155 * important because we unmap and unpin in 4kb steps later.
4156 */
4157 - pfn = kvm_pin_pages(slot, gfn, page_size);
4158 + pfn = kvm_pin_pages(slot, gfn, page_size >> PAGE_SHIFT);
4159 if (is_error_noslot_pfn(pfn)) {
4160 gfn += 1;
4161 continue;
4162 @@ -131,7 +131,7 @@ int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot)
4163 if (r) {
4164 printk(KERN_ERR "kvm_iommu_map_address:"
4165 "iommu failed to map pfn=%llx\n", pfn);
4166 - kvm_unpin_pages(kvm, pfn, page_size);
4167 + kvm_unpin_pages(kvm, pfn, page_size >> PAGE_SHIFT);
4168 goto unmap_pages;
4169 }
4170