Magellan Linux

Annotation of /trunk/kernel26-alx/patches-3.10/0131-3.10.32-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2672 - (hide annotations) (download)
Tue Jul 21 16:46:35 2015 UTC (8 years, 11 months ago) by niro
File size: 68405 byte(s)
-3.10.84-alx-r1
1 niro 2672 diff --git a/Makefile b/Makefile
2     index 56b93edbbe4e..aab192446f50 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 3
7     PATCHLEVEL = 10
8     -SUBLEVEL = 31
9     +SUBLEVEL = 32
10     EXTRAVERSION =
11     NAME = TOSSUG Baby Fish
12    
13     diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
14     index b9e25ae2579c..d7c00507568a 100644
15     --- a/arch/s390/kernel/head64.S
16     +++ b/arch/s390/kernel/head64.S
17     @@ -59,7 +59,7 @@ ENTRY(startup_continue)
18     .quad 0 # cr12: tracing off
19     .quad 0 # cr13: home space segment table
20     .quad 0xc0000000 # cr14: machine check handling off
21     - .quad 0 # cr15: linkage stack operations
22     + .quad .Llinkage_stack # cr15: linkage stack operations
23     .Lpcmsk:.quad 0x0000000180000000
24     .L4malign:.quad 0xffffffffffc00000
25     .Lscan2g:.quad 0x80000000 + 0x20000 - 8 # 2GB + 128K - 8
26     @@ -67,12 +67,15 @@ ENTRY(startup_continue)
27     .Lparmaddr:
28     .quad PARMAREA
29     .align 64
30     -.Lduct: .long 0,0,0,0,.Lduald,0,0,0
31     +.Lduct: .long 0,.Laste,.Laste,0,.Lduald,0,0,0
32     .long 0,0,0,0,0,0,0,0
33     +.Laste: .quad 0,0xffffffffffffffff,0,0,0,0,0,0
34     .align 128
35     .Lduald:.rept 8
36     .long 0x80000000,0,0,0 # invalid access-list entries
37     .endr
38     +.Llinkage_stack:
39     + .long 0,0,0x89000000,0,0,0,0x8a000000,0
40    
41     ENTRY(_ehead)
42    
43     diff --git a/arch/s390/mm/page-states.c b/arch/s390/mm/page-states.c
44     index a90d45e9dfb0..27c50f4d90cb 100644
45     --- a/arch/s390/mm/page-states.c
46     +++ b/arch/s390/mm/page-states.c
47     @@ -12,6 +12,8 @@
48     #include <linux/mm.h>
49     #include <linux/gfp.h>
50     #include <linux/init.h>
51     +#include <asm/setup.h>
52     +#include <asm/ipl.h>
53    
54     #define ESSA_SET_STABLE 1
55     #define ESSA_SET_UNUSED 2
56     @@ -41,6 +43,14 @@ void __init cmma_init(void)
57    
58     if (!cmma_flag)
59     return;
60     + /*
61     + * Disable CMM for dump, otherwise the tprot based memory
62     + * detection can fail because of unstable pages.
63     + */
64     + if (OLDMEM_BASE || ipl_info.type == IPL_TYPE_FCP_DUMP) {
65     + cmma_flag = 0;
66     + return;
67     + }
68     asm volatile(
69     " .insn rrf,0xb9ab0000,%1,%1,0,0\n"
70     "0: la %0,0\n"
71     diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h
72     index 6aef9fbc09b7..b913915e8e63 100644
73     --- a/arch/x86/include/asm/xen/page.h
74     +++ b/arch/x86/include/asm/xen/page.h
75     @@ -79,30 +79,38 @@ static inline int phys_to_machine_mapping_valid(unsigned long pfn)
76     return get_phys_to_machine(pfn) != INVALID_P2M_ENTRY;
77     }
78    
79     -static inline unsigned long mfn_to_pfn(unsigned long mfn)
80     +static inline unsigned long mfn_to_pfn_no_overrides(unsigned long mfn)
81     {
82     unsigned long pfn;
83     - int ret = 0;
84     + int ret;
85    
86     if (xen_feature(XENFEAT_auto_translated_physmap))
87     return mfn;
88    
89     - if (unlikely(mfn >= machine_to_phys_nr)) {
90     - pfn = ~0;
91     - goto try_override;
92     - }
93     - pfn = 0;
94     + if (unlikely(mfn >= machine_to_phys_nr))
95     + return ~0;
96     +
97     /*
98     * The array access can fail (e.g., device space beyond end of RAM).
99     * In such cases it doesn't matter what we return (we return garbage),
100     * but we must handle the fault without crashing!
101     */
102     ret = __get_user(pfn, &machine_to_phys_mapping[mfn]);
103     -try_override:
104     - /* ret might be < 0 if there are no entries in the m2p for mfn */
105     if (ret < 0)
106     - pfn = ~0;
107     - else if (get_phys_to_machine(pfn) != mfn)
108     + return ~0;
109     +
110     + return pfn;
111     +}
112     +
113     +static inline unsigned long mfn_to_pfn(unsigned long mfn)
114     +{
115     + unsigned long pfn;
116     +
117     + if (xen_feature(XENFEAT_auto_translated_physmap))
118     + return mfn;
119     +
120     + pfn = mfn_to_pfn_no_overrides(mfn);
121     + if (get_phys_to_machine(pfn) != mfn) {
122     /*
123     * If this appears to be a foreign mfn (because the pfn
124     * doesn't map back to the mfn), then check the local override
125     @@ -111,6 +119,7 @@ try_override:
126     * m2p_find_override_pfn returns ~0 if it doesn't find anything.
127     */
128     pfn = m2p_find_override_pfn(mfn, ~0);
129     + }
130    
131     /*
132     * pfn is ~0 if there are no entries in the m2p for mfn or if the
133     diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
134     index 22018f70a671..deeb48d9459b 100644
135     --- a/arch/x86/kernel/cpu/common.c
136     +++ b/arch/x86/kernel/cpu/common.c
137     @@ -284,8 +284,13 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)
138     raw_local_save_flags(eflags);
139     BUG_ON(eflags & X86_EFLAGS_AC);
140    
141     - if (cpu_has(c, X86_FEATURE_SMAP))
142     + if (cpu_has(c, X86_FEATURE_SMAP)) {
143     +#ifdef CONFIG_X86_SMAP
144     set_in_cr4(X86_CR4_SMAP);
145     +#else
146     + clear_in_cr4(X86_CR4_SMAP);
147     +#endif
148     + }
149     }
150    
151     /*
152     diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
153     index d4bdd253fea7..e6253195a301 100644
154     --- a/arch/x86/kernel/ftrace.c
155     +++ b/arch/x86/kernel/ftrace.c
156     @@ -77,8 +77,7 @@ within(unsigned long addr, unsigned long start, unsigned long end)
157     return addr >= start && addr < end;
158     }
159    
160     -static int
161     -do_ftrace_mod_code(unsigned long ip, const void *new_code)
162     +static unsigned long text_ip_addr(unsigned long ip)
163     {
164     /*
165     * On x86_64, kernel text mappings are mapped read-only with
166     @@ -91,7 +90,7 @@ do_ftrace_mod_code(unsigned long ip, const void *new_code)
167     if (within(ip, (unsigned long)_text, (unsigned long)_etext))
168     ip = (unsigned long)__va(__pa_symbol(ip));
169    
170     - return probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE);
171     + return ip;
172     }
173    
174     static const unsigned char *ftrace_nop_replace(void)
175     @@ -123,8 +122,10 @@ ftrace_modify_code_direct(unsigned long ip, unsigned const char *old_code,
176     if (memcmp(replaced, old_code, MCOUNT_INSN_SIZE) != 0)
177     return -EINVAL;
178    
179     + ip = text_ip_addr(ip);
180     +
181     /* replace the text with the new text */
182     - if (do_ftrace_mod_code(ip, new_code))
183     + if (probe_kernel_write((void *)ip, new_code, MCOUNT_INSN_SIZE))
184     return -EPERM;
185    
186     sync_core();
187     @@ -221,37 +222,51 @@ int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr,
188     return -EINVAL;
189     }
190    
191     -int ftrace_update_ftrace_func(ftrace_func_t func)
192     +static unsigned long ftrace_update_func;
193     +
194     +static int update_ftrace_func(unsigned long ip, void *new)
195     {
196     - unsigned long ip = (unsigned long)(&ftrace_call);
197     - unsigned char old[MCOUNT_INSN_SIZE], *new;
198     + unsigned char old[MCOUNT_INSN_SIZE];
199     int ret;
200    
201     - memcpy(old, &ftrace_call, MCOUNT_INSN_SIZE);
202     - new = ftrace_call_replace(ip, (unsigned long)func);
203     + memcpy(old, (void *)ip, MCOUNT_INSN_SIZE);
204     +
205     + ftrace_update_func = ip;
206     + /* Make sure the breakpoints see the ftrace_update_func update */
207     + smp_wmb();
208    
209     /* See comment above by declaration of modifying_ftrace_code */
210     atomic_inc(&modifying_ftrace_code);
211    
212     ret = ftrace_modify_code(ip, old, new);
213    
214     + atomic_dec(&modifying_ftrace_code);
215     +
216     + return ret;
217     +}
218     +
219     +int ftrace_update_ftrace_func(ftrace_func_t func)
220     +{
221     + unsigned long ip = (unsigned long)(&ftrace_call);
222     + unsigned char *new;
223     + int ret;
224     +
225     + new = ftrace_call_replace(ip, (unsigned long)func);
226     + ret = update_ftrace_func(ip, new);
227     +
228     /* Also update the regs callback function */
229     if (!ret) {
230     ip = (unsigned long)(&ftrace_regs_call);
231     - memcpy(old, &ftrace_regs_call, MCOUNT_INSN_SIZE);
232     new = ftrace_call_replace(ip, (unsigned long)func);
233     - ret = ftrace_modify_code(ip, old, new);
234     + ret = update_ftrace_func(ip, new);
235     }
236    
237     - atomic_dec(&modifying_ftrace_code);
238     -
239     return ret;
240     }
241    
242     static int is_ftrace_caller(unsigned long ip)
243     {
244     - if (ip == (unsigned long)(&ftrace_call) ||
245     - ip == (unsigned long)(&ftrace_regs_call))
246     + if (ip == ftrace_update_func)
247     return 1;
248    
249     return 0;
250     @@ -677,45 +692,41 @@ int __init ftrace_dyn_arch_init(void *data)
251     #ifdef CONFIG_DYNAMIC_FTRACE
252     extern void ftrace_graph_call(void);
253    
254     -static int ftrace_mod_jmp(unsigned long ip,
255     - int old_offset, int new_offset)
256     +static unsigned char *ftrace_jmp_replace(unsigned long ip, unsigned long addr)
257     {
258     - unsigned char code[MCOUNT_INSN_SIZE];
259     + static union ftrace_code_union calc;
260    
261     - if (probe_kernel_read(code, (void *)ip, MCOUNT_INSN_SIZE))
262     - return -EFAULT;
263     + /* Jmp not a call (ignore the .e8) */
264     + calc.e8 = 0xe9;
265     + calc.offset = ftrace_calc_offset(ip + MCOUNT_INSN_SIZE, addr);
266    
267     - if (code[0] != 0xe9 || old_offset != *(int *)(&code[1]))
268     - return -EINVAL;
269     + /*
270     + * ftrace external locks synchronize the access to the static variable.
271     + */
272     + return calc.code;
273     +}
274    
275     - *(int *)(&code[1]) = new_offset;
276     +static int ftrace_mod_jmp(unsigned long ip, void *func)
277     +{
278     + unsigned char *new;
279    
280     - if (do_ftrace_mod_code(ip, &code))
281     - return -EPERM;
282     + new = ftrace_jmp_replace(ip, (unsigned long)func);
283    
284     - return 0;
285     + return update_ftrace_func(ip, new);
286     }
287    
288     int ftrace_enable_ftrace_graph_caller(void)
289     {
290     unsigned long ip = (unsigned long)(&ftrace_graph_call);
291     - int old_offset, new_offset;
292    
293     - old_offset = (unsigned long)(&ftrace_stub) - (ip + MCOUNT_INSN_SIZE);
294     - new_offset = (unsigned long)(&ftrace_graph_caller) - (ip + MCOUNT_INSN_SIZE);
295     -
296     - return ftrace_mod_jmp(ip, old_offset, new_offset);
297     + return ftrace_mod_jmp(ip, &ftrace_graph_caller);
298     }
299    
300     int ftrace_disable_ftrace_graph_caller(void)
301     {
302     unsigned long ip = (unsigned long)(&ftrace_graph_call);
303     - int old_offset, new_offset;
304     -
305     - old_offset = (unsigned long)(&ftrace_graph_caller) - (ip + MCOUNT_INSN_SIZE);
306     - new_offset = (unsigned long)(&ftrace_stub) - (ip + MCOUNT_INSN_SIZE);
307    
308     - return ftrace_mod_jmp(ip, old_offset, new_offset);
309     + return ftrace_mod_jmp(ip, &ftrace_stub);
310     }
311    
312     #endif /* !CONFIG_DYNAMIC_FTRACE */
313     diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
314     index 654be4ae3047..c1e9e4cbbd76 100644
315     --- a/arch/x86/mm/fault.c
316     +++ b/arch/x86/mm/fault.c
317     @@ -989,6 +989,12 @@ static int fault_in_kernel_space(unsigned long address)
318    
319     static inline bool smap_violation(int error_code, struct pt_regs *regs)
320     {
321     + if (!IS_ENABLED(CONFIG_X86_SMAP))
322     + return false;
323     +
324     + if (!static_cpu_has(X86_FEATURE_SMAP))
325     + return false;
326     +
327     if (error_code & PF_USER)
328     return false;
329    
330     @@ -1091,11 +1097,9 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code)
331     if (unlikely(error_code & PF_RSVD))
332     pgtable_bad(regs, error_code, address);
333    
334     - if (static_cpu_has(X86_FEATURE_SMAP)) {
335     - if (unlikely(smap_violation(error_code, regs))) {
336     - bad_area_nosemaphore(regs, error_code, address);
337     - return;
338     - }
339     + if (unlikely(smap_violation(error_code, regs))) {
340     + bad_area_nosemaphore(regs, error_code, address);
341     + return;
342     }
343    
344     perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
345     diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
346     index 95fb2aa5927e..156344448d19 100644
347     --- a/arch/x86/xen/p2m.c
348     +++ b/arch/x86/xen/p2m.c
349     @@ -878,7 +878,6 @@ int m2p_add_override(unsigned long mfn, struct page *page,
350     unsigned long uninitialized_var(address);
351     unsigned level;
352     pte_t *ptep = NULL;
353     - int ret = 0;
354    
355     pfn = page_to_pfn(page);
356     if (!PageHighMem(page)) {
357     @@ -925,8 +924,8 @@ int m2p_add_override(unsigned long mfn, struct page *page,
358     * frontend pages while they are being shared with the backend,
359     * because mfn_to_pfn (that ends up being called by GUPF) will
360     * return the backend pfn rather than the frontend pfn. */
361     - ret = __get_user(pfn, &machine_to_phys_mapping[mfn]);
362     - if (ret == 0 && get_phys_to_machine(pfn) == mfn)
363     + pfn = mfn_to_pfn_no_overrides(mfn);
364     + if (get_phys_to_machine(pfn) == mfn)
365     set_phys_to_machine(pfn, FOREIGN_FRAME(mfn));
366    
367     return 0;
368     @@ -941,7 +940,6 @@ int m2p_remove_override(struct page *page,
369     unsigned long uninitialized_var(address);
370     unsigned level;
371     pte_t *ptep = NULL;
372     - int ret = 0;
373    
374     pfn = page_to_pfn(page);
375     mfn = get_phys_to_machine(pfn);
376     @@ -1019,8 +1017,8 @@ int m2p_remove_override(struct page *page,
377     * the original pfn causes mfn_to_pfn(mfn) to return the frontend
378     * pfn again. */
379     mfn &= ~FOREIGN_FRAME_BIT;
380     - ret = __get_user(pfn, &machine_to_phys_mapping[mfn]);
381     - if (ret == 0 && get_phys_to_machine(pfn) == FOREIGN_FRAME(mfn) &&
382     + pfn = mfn_to_pfn_no_overrides(mfn);
383     + if (get_phys_to_machine(pfn) == FOREIGN_FRAME(mfn) &&
384     m2p_find_override(mfn) == NULL)
385     set_phys_to_machine(pfn, mfn);
386    
387     diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
388     index a1e58e19d0cc..570c9a5c4d3f 100644
389     --- a/arch/x86/xen/smp.c
390     +++ b/arch/x86/xen/smp.c
391     @@ -245,6 +245,15 @@ static void __init xen_smp_prepare_boot_cpu(void)
392     old memory can be recycled */
393     make_lowmem_page_readwrite(xen_initial_gdt);
394    
395     +#ifdef CONFIG_X86_32
396     + /*
397     + * Xen starts us with XEN_FLAT_RING1_DS, but linux code
398     + * expects __USER_DS
399     + */
400     + loadsegment(ds, __USER_DS);
401     + loadsegment(es, __USER_DS);
402     +#endif
403     +
404     xen_filter_cpu_maps();
405     xen_setup_vcpu_info_placement();
406     }
407     diff --git a/block/blk-lib.c b/block/blk-lib.c
408     index d6f50d572565..9a32f5868fb9 100644
409     --- a/block/blk-lib.c
410     +++ b/block/blk-lib.c
411     @@ -121,6 +121,14 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
412    
413     atomic_inc(&bb.done);
414     submit_bio(type, bio);
415     +
416     + /*
417     + * We can loop for a long time in here, if someone does
418     + * full device discards (like mkfs). Be nice and allow
419     + * us to schedule out to avoid softlocking if preempt
420     + * is disabled.
421     + */
422     + cond_resched();
423     }
424     blk_finish_plug(&plug);
425    
426     diff --git a/block/blk.h b/block/blk.h
427     index e837b8f619b7..b3bdeb36f361 100644
428     --- a/block/blk.h
429     +++ b/block/blk.h
430     @@ -96,7 +96,7 @@ static inline struct request *__elv_next_request(struct request_queue *q)
431     q->flush_queue_delayed = 1;
432     return NULL;
433     }
434     - if (unlikely(blk_queue_dying(q)) ||
435     + if (unlikely(blk_queue_bypass(q)) ||
436     !q->elevator->type->ops.elevator_dispatch_fn(q, 0))
437     return NULL;
438     }
439     diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
440     index 69b45fc97276..1735b0d17e29 100644
441     --- a/drivers/block/xen-blkfront.c
442     +++ b/drivers/block/xen-blkfront.c
443     @@ -1518,13 +1518,16 @@ static void blkback_changed(struct xenbus_device *dev,
444     case XenbusStateReconfiguring:
445     case XenbusStateReconfigured:
446     case XenbusStateUnknown:
447     - case XenbusStateClosed:
448     break;
449    
450     case XenbusStateConnected:
451     blkfront_connect(info);
452     break;
453    
454     + case XenbusStateClosed:
455     + if (dev->state == XenbusStateClosed)
456     + break;
457     + /* Missed the backend's Closing state -- fallthrough */
458     case XenbusStateClosing:
459     blkfront_closing(info);
460     break;
461     diff --git a/drivers/char/raw.c b/drivers/char/raw.c
462     index f3223aac4df1..6e8d65e9b1d3 100644
463     --- a/drivers/char/raw.c
464     +++ b/drivers/char/raw.c
465     @@ -190,7 +190,7 @@ static int bind_get(int number, dev_t *dev)
466     struct raw_device_data *rawdev;
467     struct block_device *bdev;
468    
469     - if (number <= 0 || number >= MAX_RAW_MINORS)
470     + if (number <= 0 || number >= max_raw_minors)
471     return -EINVAL;
472    
473     rawdev = &raw_devices[number];
474     diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
475     index 89e109022d78..a9d98cdd11f4 100644
476     --- a/drivers/edac/edac_mc.c
477     +++ b/drivers/edac/edac_mc.c
478     @@ -559,7 +559,8 @@ static void edac_mc_workq_function(struct work_struct *work_req)
479     *
480     * called with the mem_ctls_mutex held
481     */
482     -static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec)
483     +static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec,
484     + bool init)
485     {
486     edac_dbg(0, "\n");
487    
488     @@ -567,7 +568,9 @@ static void edac_mc_workq_setup(struct mem_ctl_info *mci, unsigned msec)
489     if (mci->op_state != OP_RUNNING_POLL)
490     return;
491    
492     - INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function);
493     + if (init)
494     + INIT_DELAYED_WORK(&mci->work, edac_mc_workq_function);
495     +
496     mod_delayed_work(edac_workqueue, &mci->work, msecs_to_jiffies(msec));
497     }
498    
499     @@ -601,7 +604,7 @@ static void edac_mc_workq_teardown(struct mem_ctl_info *mci)
500     * user space has updated our poll period value, need to
501     * reset our workq delays
502     */
503     -void edac_mc_reset_delay_period(int value)
504     +void edac_mc_reset_delay_period(unsigned long value)
505     {
506     struct mem_ctl_info *mci;
507     struct list_head *item;
508     @@ -611,7 +614,7 @@ void edac_mc_reset_delay_period(int value)
509     list_for_each(item, &mc_devices) {
510     mci = list_entry(item, struct mem_ctl_info, link);
511    
512     - edac_mc_workq_setup(mci, (unsigned long) value);
513     + edac_mc_workq_setup(mci, value, false);
514     }
515    
516     mutex_unlock(&mem_ctls_mutex);
517     @@ -782,7 +785,7 @@ int edac_mc_add_mc(struct mem_ctl_info *mci)
518     /* This instance is NOW RUNNING */
519     mci->op_state = OP_RUNNING_POLL;
520    
521     - edac_mc_workq_setup(mci, edac_mc_get_poll_msec());
522     + edac_mc_workq_setup(mci, edac_mc_get_poll_msec(), true);
523     } else {
524     mci->op_state = OP_RUNNING_INTERRUPT;
525     }
526     diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
527     index c4d700a577d2..88cd940ece63 100644
528     --- a/drivers/edac/edac_mc_sysfs.c
529     +++ b/drivers/edac/edac_mc_sysfs.c
530     @@ -52,16 +52,20 @@ int edac_mc_get_poll_msec(void)
531    
532     static int edac_set_poll_msec(const char *val, struct kernel_param *kp)
533     {
534     - long l;
535     + unsigned long l;
536     int ret;
537    
538     if (!val)
539     return -EINVAL;
540    
541     - ret = strict_strtol(val, 0, &l);
542     - if (ret == -EINVAL || ((int)l != l))
543     + ret = kstrtoul(val, 0, &l);
544     + if (ret)
545     + return ret;
546     +
547     + if (l < 1000)
548     return -EINVAL;
549     - *((int *)kp->arg) = l;
550     +
551     + *((unsigned long *)kp->arg) = l;
552    
553     /* notify edac_mc engine to reset the poll period */
554     edac_mc_reset_delay_period(l);
555     diff --git a/drivers/edac/edac_module.h b/drivers/edac/edac_module.h
556     index 3d139c6e7fe3..f2118bfcf8df 100644
557     --- a/drivers/edac/edac_module.h
558     +++ b/drivers/edac/edac_module.h
559     @@ -52,7 +52,7 @@ extern void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,
560     extern void edac_device_workq_teardown(struct edac_device_ctl_info *edac_dev);
561     extern void edac_device_reset_delay_period(struct edac_device_ctl_info
562     *edac_dev, unsigned long value);
563     -extern void edac_mc_reset_delay_period(int value);
564     +extern void edac_mc_reset_delay_period(unsigned long value);
565    
566     extern void *edac_align_ptr(void **p, unsigned size, int n_elems);
567    
568     diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
569     index 1b8c3707bf42..4cf21ec1abe3 100644
570     --- a/drivers/gpu/drm/radeon/r600.c
571     +++ b/drivers/gpu/drm/radeon/r600.c
572     @@ -4509,6 +4509,10 @@ restart_ih:
573     break;
574     }
575     break;
576     + case 124: /* UVD */
577     + DRM_DEBUG("IH: UVD int: 0x%08x\n", src_data);
578     + radeon_fence_process(rdev, R600_RING_TYPE_UVD_INDEX);
579     + break;
580     case 176: /* CP_INT in ring buffer */
581     case 177: /* CP_INT in IB1 */
582     case 178: /* CP_INT in IB2 */
583     diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
584     index 3cf38ff09e70..03add5d5542e 100644
585     --- a/drivers/gpu/drm/radeon/si.c
586     +++ b/drivers/gpu/drm/radeon/si.c
587     @@ -5159,6 +5159,10 @@ restart_ih:
588     break;
589     }
590     break;
591     + case 124: /* UVD */
592     + DRM_DEBUG("IH: UVD int: 0x%08x\n", src_data);
593     + radeon_fence_process(rdev, R600_RING_TYPE_UVD_INDEX);
594     + break;
595     case 146:
596     case 147:
597     dev_err(rdev->dev, "GPU fault detected: %d 0x%08x\n", src_id, src_data);
598     diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
599     index 253a74ba245c..d4fac934b220 100644
600     --- a/drivers/hv/connection.c
601     +++ b/drivers/hv/connection.c
602     @@ -67,7 +67,6 @@ static int vmbus_negotiate_version(struct vmbus_channel_msginfo *msginfo,
603     int ret = 0;
604     struct vmbus_channel_initiate_contact *msg;
605     unsigned long flags;
606     - int t;
607    
608     init_completion(&msginfo->waitevent);
609    
610     @@ -102,15 +101,7 @@ static int vmbus_negotiate_version(struct vmbus_channel_msginfo *msginfo,
611     }
612    
613     /* Wait for the connection response */
614     - t = wait_for_completion_timeout(&msginfo->waitevent, 5*HZ);
615     - if (t == 0) {
616     - spin_lock_irqsave(&vmbus_connection.channelmsg_lock,
617     - flags);
618     - list_del(&msginfo->msglistentry);
619     - spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock,
620     - flags);
621     - return -ETIMEDOUT;
622     - }
623     + wait_for_completion(&msginfo->waitevent);
624    
625     spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags);
626     list_del(&msginfo->msglistentry);
627     diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
628     index d6d640a733d5..9297164a23a5 100644
629     --- a/drivers/hwmon/ntc_thermistor.c
630     +++ b/drivers/hwmon/ntc_thermistor.c
631     @@ -145,7 +145,7 @@ struct ntc_data {
632     static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata)
633     {
634     struct iio_channel *channel = pdata->chan;
635     - unsigned int result;
636     + s64 result;
637     int val, ret;
638    
639     ret = iio_read_channel_raw(channel, &val);
640     @@ -155,10 +155,10 @@ static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata)
641     }
642    
643     /* unit: mV */
644     - result = pdata->pullup_uv * val;
645     + result = pdata->pullup_uv * (s64) val;
646     result >>= 12;
647    
648     - return result;
649     + return (int)result;
650     }
651    
652     static const struct of_device_id ntc_match[] = {
653     diff --git a/drivers/iio/imu/adis16400.h b/drivers/iio/imu/adis16400.h
654     index 2f8f9d632386..0916bf6b6c31 100644
655     --- a/drivers/iio/imu/adis16400.h
656     +++ b/drivers/iio/imu/adis16400.h
657     @@ -189,6 +189,7 @@ enum {
658     ADIS16300_SCAN_INCLI_X,
659     ADIS16300_SCAN_INCLI_Y,
660     ADIS16400_SCAN_ADC,
661     + ADIS16400_SCAN_TIMESTAMP,
662     };
663    
664     #ifdef CONFIG_IIO_BUFFER
665     diff --git a/drivers/iio/imu/adis16400_core.c b/drivers/iio/imu/adis16400_core.c
666     index e58c529aacdf..d6ece2d17dec 100644
667     --- a/drivers/iio/imu/adis16400_core.c
668     +++ b/drivers/iio/imu/adis16400_core.c
669     @@ -632,7 +632,7 @@ static const struct iio_chan_spec adis16400_channels[] = {
670     ADIS16400_MAGN_CHAN(Z, ADIS16400_ZMAGN_OUT, 14),
671     ADIS16400_TEMP_CHAN(ADIS16400_TEMP_OUT, 12),
672     ADIS16400_AUX_ADC_CHAN(ADIS16400_AUX_ADC, 12),
673     - IIO_CHAN_SOFT_TIMESTAMP(12)
674     + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
675     };
676    
677     static const struct iio_chan_spec adis16448_channels[] = {
678     @@ -659,7 +659,7 @@ static const struct iio_chan_spec adis16448_channels[] = {
679     },
680     },
681     ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12),
682     - IIO_CHAN_SOFT_TIMESTAMP(11)
683     + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
684     };
685    
686     static const struct iio_chan_spec adis16350_channels[] = {
687     @@ -677,7 +677,7 @@ static const struct iio_chan_spec adis16350_channels[] = {
688     ADIS16400_MOD_TEMP_CHAN(X, ADIS16350_XTEMP_OUT, 12),
689     ADIS16400_MOD_TEMP_CHAN(Y, ADIS16350_YTEMP_OUT, 12),
690     ADIS16400_MOD_TEMP_CHAN(Z, ADIS16350_ZTEMP_OUT, 12),
691     - IIO_CHAN_SOFT_TIMESTAMP(11)
692     + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
693     };
694    
695     static const struct iio_chan_spec adis16300_channels[] = {
696     @@ -690,7 +690,7 @@ static const struct iio_chan_spec adis16300_channels[] = {
697     ADIS16400_AUX_ADC_CHAN(ADIS16300_AUX_ADC, 12),
698     ADIS16400_INCLI_CHAN(X, ADIS16300_PITCH_OUT, 13),
699     ADIS16400_INCLI_CHAN(Y, ADIS16300_ROLL_OUT, 13),
700     - IIO_CHAN_SOFT_TIMESTAMP(14)
701     + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
702     };
703    
704     static const struct iio_chan_spec adis16334_channels[] = {
705     @@ -701,7 +701,7 @@ static const struct iio_chan_spec adis16334_channels[] = {
706     ADIS16400_ACCEL_CHAN(Y, ADIS16400_YACCL_OUT, 14),
707     ADIS16400_ACCEL_CHAN(Z, ADIS16400_ZACCL_OUT, 14),
708     ADIS16400_TEMP_CHAN(ADIS16350_XTEMP_OUT, 12),
709     - IIO_CHAN_SOFT_TIMESTAMP(8)
710     + IIO_CHAN_SOFT_TIMESTAMP(ADIS16400_SCAN_TIMESTAMP),
711     };
712    
713     static struct attribute *adis16400_attributes[] = {
714     diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c
715     index bd8cb0f89ef1..14103ffb4839 100644
716     --- a/drivers/infiniband/hw/qib/qib_iba7322.c
717     +++ b/drivers/infiniband/hw/qib/qib_iba7322.c
718     @@ -2287,6 +2287,11 @@ static int qib_7322_bringup_serdes(struct qib_pportdata *ppd)
719     qib_write_kreg_port(ppd, krp_ibcctrl_a, ppd->cpspec->ibcctrl_a);
720     qib_write_kreg(dd, kr_scratch, 0ULL);
721    
722     + /* ensure previous Tx parameters are not still forced */
723     + qib_write_kreg_port(ppd, krp_tx_deemph_override,
724     + SYM_MASK(IBSD_TX_DEEMPHASIS_OVERRIDE_0,
725     + reset_tx_deemphasis_override));
726     +
727     if (qib_compat_ddr_negotiate) {
728     ppd->cpspec->ibdeltainprog = 1;
729     ppd->cpspec->ibsymsnap = read_7322_creg32_port(ppd,
730     diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
731     index afaa5d425e9a..e73740b55aea 100644
732     --- a/drivers/md/raid1.c
733     +++ b/drivers/md/raid1.c
734     @@ -1854,11 +1854,15 @@ static int process_checks(struct r1bio *r1_bio)
735     for (i = 0; i < conf->raid_disks * 2; i++) {
736     int j;
737     int size;
738     + int uptodate;
739     struct bio *b = r1_bio->bios[i];
740     if (b->bi_end_io != end_sync_read)
741     continue;
742     - /* fixup the bio for reuse */
743     + /* fixup the bio for reuse, but preserve BIO_UPTODATE */
744     + uptodate = test_bit(BIO_UPTODATE, &b->bi_flags);
745     bio_reset(b);
746     + if (!uptodate)
747     + clear_bit(BIO_UPTODATE, &b->bi_flags);
748     b->bi_vcnt = vcnt;
749     b->bi_size = r1_bio->sectors << 9;
750     b->bi_sector = r1_bio->sector +
751     @@ -1891,11 +1895,14 @@ static int process_checks(struct r1bio *r1_bio)
752     int j;
753     struct bio *pbio = r1_bio->bios[primary];
754     struct bio *sbio = r1_bio->bios[i];
755     + int uptodate = test_bit(BIO_UPTODATE, &sbio->bi_flags);
756    
757     if (sbio->bi_end_io != end_sync_read)
758     continue;
759     + /* Now we can 'fixup' the BIO_UPTODATE flag */
760     + set_bit(BIO_UPTODATE, &sbio->bi_flags);
761    
762     - if (test_bit(BIO_UPTODATE, &sbio->bi_flags)) {
763     + if (uptodate) {
764     for (j = vcnt; j-- ; ) {
765     struct page *p, *s;
766     p = pbio->bi_io_vec[j].bv_page;
767     @@ -1910,7 +1917,7 @@ static int process_checks(struct r1bio *r1_bio)
768     if (j >= 0)
769     atomic64_add(r1_bio->sectors, &mddev->resync_mismatches);
770     if (j < 0 || (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)
771     - && test_bit(BIO_UPTODATE, &sbio->bi_flags))) {
772     + && uptodate)) {
773     /* No need to write to this device. */
774     sbio->bi_end_io = NULL;
775     rdev_dec_pending(conf->mirrors[i].rdev, mddev);
776     diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
777     index 740e3f42bef8..5e3c25d4562c 100644
778     --- a/drivers/md/raid5.c
779     +++ b/drivers/md/raid5.c
780     @@ -5037,23 +5037,43 @@ raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks)
781     return sectors * (raid_disks - conf->max_degraded);
782     }
783    
784     +static void free_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu)
785     +{
786     + safe_put_page(percpu->spare_page);
787     + kfree(percpu->scribble);
788     + percpu->spare_page = NULL;
789     + percpu->scribble = NULL;
790     +}
791     +
792     +static int alloc_scratch_buffer(struct r5conf *conf, struct raid5_percpu *percpu)
793     +{
794     + if (conf->level == 6 && !percpu->spare_page)
795     + percpu->spare_page = alloc_page(GFP_KERNEL);
796     + if (!percpu->scribble)
797     + percpu->scribble = kmalloc(conf->scribble_len, GFP_KERNEL);
798     +
799     + if (!percpu->scribble || (conf->level == 6 && !percpu->spare_page)) {
800     + free_scratch_buffer(conf, percpu);
801     + return -ENOMEM;
802     + }
803     +
804     + return 0;
805     +}
806     +
807     static void raid5_free_percpu(struct r5conf *conf)
808     {
809     - struct raid5_percpu *percpu;
810     unsigned long cpu;
811    
812     if (!conf->percpu)
813     return;
814    
815     - get_online_cpus();
816     - for_each_possible_cpu(cpu) {
817     - percpu = per_cpu_ptr(conf->percpu, cpu);
818     - safe_put_page(percpu->spare_page);
819     - kfree(percpu->scribble);
820     - }
821     #ifdef CONFIG_HOTPLUG_CPU
822     unregister_cpu_notifier(&conf->cpu_notify);
823     #endif
824     +
825     + get_online_cpus();
826     + for_each_possible_cpu(cpu)
827     + free_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu));
828     put_online_cpus();
829    
830     free_percpu(conf->percpu);
831     @@ -5079,15 +5099,7 @@ static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
832     switch (action) {
833     case CPU_UP_PREPARE:
834     case CPU_UP_PREPARE_FROZEN:
835     - if (conf->level == 6 && !percpu->spare_page)
836     - percpu->spare_page = alloc_page(GFP_KERNEL);
837     - if (!percpu->scribble)
838     - percpu->scribble = kmalloc(conf->scribble_len, GFP_KERNEL);
839     -
840     - if (!percpu->scribble ||
841     - (conf->level == 6 && !percpu->spare_page)) {
842     - safe_put_page(percpu->spare_page);
843     - kfree(percpu->scribble);
844     + if (alloc_scratch_buffer(conf, percpu)) {
845     pr_err("%s: failed memory allocation for cpu%ld\n",
846     __func__, cpu);
847     return notifier_from_errno(-ENOMEM);
848     @@ -5095,10 +5107,7 @@ static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
849     break;
850     case CPU_DEAD:
851     case CPU_DEAD_FROZEN:
852     - safe_put_page(percpu->spare_page);
853     - kfree(percpu->scribble);
854     - percpu->spare_page = NULL;
855     - percpu->scribble = NULL;
856     + free_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu));
857     break;
858     default:
859     break;
860     @@ -5110,40 +5119,29 @@ static int raid456_cpu_notify(struct notifier_block *nfb, unsigned long action,
861     static int raid5_alloc_percpu(struct r5conf *conf)
862     {
863     unsigned long cpu;
864     - struct page *spare_page;
865     - struct raid5_percpu __percpu *allcpus;
866     - void *scribble;
867     - int err;
868     + int err = 0;
869    
870     - allcpus = alloc_percpu(struct raid5_percpu);
871     - if (!allcpus)
872     + conf->percpu = alloc_percpu(struct raid5_percpu);
873     + if (!conf->percpu)
874     return -ENOMEM;
875     - conf->percpu = allcpus;
876     +
877     +#ifdef CONFIG_HOTPLUG_CPU
878     + conf->cpu_notify.notifier_call = raid456_cpu_notify;
879     + conf->cpu_notify.priority = 0;
880     + err = register_cpu_notifier(&conf->cpu_notify);
881     + if (err)
882     + return err;
883     +#endif
884    
885     get_online_cpus();
886     - err = 0;
887     for_each_present_cpu(cpu) {
888     - if (conf->level == 6) {
889     - spare_page = alloc_page(GFP_KERNEL);
890     - if (!spare_page) {
891     - err = -ENOMEM;
892     - break;
893     - }
894     - per_cpu_ptr(conf->percpu, cpu)->spare_page = spare_page;
895     - }
896     - scribble = kmalloc(conf->scribble_len, GFP_KERNEL);
897     - if (!scribble) {
898     - err = -ENOMEM;
899     + err = alloc_scratch_buffer(conf, per_cpu_ptr(conf->percpu, cpu));
900     + if (err) {
901     + pr_err("%s: failed memory allocation for cpu%ld\n",
902     + __func__, cpu);
903     break;
904     }
905     - per_cpu_ptr(conf->percpu, cpu)->scribble = scribble;
906     }
907     -#ifdef CONFIG_HOTPLUG_CPU
908     - conf->cpu_notify.notifier_call = raid456_cpu_notify;
909     - conf->cpu_notify.priority = 0;
910     - if (err == 0)
911     - err = register_cpu_notifier(&conf->cpu_notify);
912     -#endif
913     put_online_cpus();
914    
915     return err;
916     diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c
917     index e310ca6ed1a3..957fb36c7eb3 100644
918     --- a/drivers/misc/mei/client.c
919     +++ b/drivers/misc/mei/client.c
920     @@ -799,7 +799,6 @@ void mei_cl_all_disconnect(struct mei_device *dev)
921     list_for_each_entry_safe(cl, next, &dev->file_list, link) {
922     cl->state = MEI_FILE_DISCONNECTED;
923     cl->mei_flow_ctrl_creds = 0;
924     - cl->read_cb = NULL;
925     cl->timer_count = 0;
926     }
927     }
928     @@ -829,8 +828,16 @@ void mei_cl_all_read_wakeup(struct mei_device *dev)
929     void mei_cl_all_write_clear(struct mei_device *dev)
930     {
931     struct mei_cl_cb *cb, *next;
932     + struct list_head *list;
933    
934     - list_for_each_entry_safe(cb, next, &dev->write_list.list, list) {
935     + list = &dev->write_list.list;
936     + list_for_each_entry_safe(cb, next, list, list) {
937     + list_del(&cb->list);
938     + mei_io_cb_free(cb);
939     + }
940     +
941     + list = &dev->write_waiting_list.list;
942     + list_for_each_entry_safe(cb, next, list, list) {
943     list_del(&cb->list);
944     mei_io_cb_free(cb);
945     }
946     diff --git a/drivers/net/wireless/ath/ar5523/ar5523.c b/drivers/net/wireless/ath/ar5523/ar5523.c
947     index 17d7fece35d2..57fc06e0f434 100644
948     --- a/drivers/net/wireless/ath/ar5523/ar5523.c
949     +++ b/drivers/net/wireless/ath/ar5523/ar5523.c
950     @@ -1764,7 +1764,7 @@ static struct usb_device_id ar5523_id_table[] = {
951     AR5523_DEVICE_UX(0x2001, 0x3a04), /* Dlink / DWLAG122 */
952     AR5523_DEVICE_UG(0x1690, 0x0712), /* Gigaset / AR5523 */
953     AR5523_DEVICE_UG(0x1690, 0x0710), /* Gigaset / SMCWUSBTG */
954     - AR5523_DEVICE_UG(0x129b, 0x160c), /* Gigaset / USB stick 108
955     + AR5523_DEVICE_UG(0x129b, 0x160b), /* Gigaset / USB stick 108
956     (CyberTAN Technology) */
957     AR5523_DEVICE_UG(0x16ab, 0x7801), /* Globalsun / AR5523_1 */
958     AR5523_DEVICE_UX(0x16ab, 0x7811), /* Globalsun / AR5523_2 */
959     diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
960     index 21e7edc7207c..04b3822ef93a 100644
961     --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
962     +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
963     @@ -1331,21 +1331,22 @@ static void ath9k_htc_sta_rc_update(struct ieee80211_hw *hw,
964     struct ath_common *common = ath9k_hw_common(priv->ah);
965     struct ath9k_htc_target_rate trate;
966    
967     + if (!(changed & IEEE80211_RC_SUPP_RATES_CHANGED))
968     + return;
969     +
970     mutex_lock(&priv->mutex);
971     ath9k_htc_ps_wakeup(priv);
972    
973     - if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
974     - memset(&trate, 0, sizeof(struct ath9k_htc_target_rate));
975     - ath9k_htc_setup_rate(priv, sta, &trate);
976     - if (!ath9k_htc_send_rate_cmd(priv, &trate))
977     - ath_dbg(common, CONFIG,
978     - "Supported rates for sta: %pM updated, rate caps: 0x%X\n",
979     - sta->addr, be32_to_cpu(trate.capflags));
980     - else
981     - ath_dbg(common, CONFIG,
982     - "Unable to update supported rates for sta: %pM\n",
983     - sta->addr);
984     - }
985     + memset(&trate, 0, sizeof(struct ath9k_htc_target_rate));
986     + ath9k_htc_setup_rate(priv, sta, &trate);
987     + if (!ath9k_htc_send_rate_cmd(priv, &trate))
988     + ath_dbg(common, CONFIG,
989     + "Supported rates for sta: %pM updated, rate caps: 0x%X\n",
990     + sta->addr, be32_to_cpu(trate.capflags));
991     + else
992     + ath_dbg(common, CONFIG,
993     + "Unable to update supported rates for sta: %pM\n",
994     + sta->addr);
995    
996     ath9k_htc_ps_restore(priv);
997     mutex_unlock(&priv->mutex);
998     diff --git a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
999     index 6199a0a597a6..a7cf535216c9 100644
1000     --- a/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
1001     +++ b/drivers/net/wireless/iwlwifi/iwl-nvm-parse.c
1002     @@ -180,6 +180,11 @@ static int iwl_init_channel_map(struct device *dev, const struct iwl_cfg *cfg,
1003    
1004     for (ch_idx = 0; ch_idx < IWL_NUM_CHANNELS; ch_idx++) {
1005     ch_flags = __le16_to_cpup(nvm_ch_flags + ch_idx);
1006     +
1007     + if (ch_idx >= NUM_2GHZ_CHANNELS &&
1008     + !data->sku_cap_band_52GHz_enable)
1009     + ch_flags &= ~NVM_CHANNEL_VALID;
1010     +
1011     if (!(ch_flags & NVM_CHANNEL_VALID)) {
1012     IWL_DEBUG_EEPROM(dev,
1013     "Ch. %d Flags %x [%sGHz] - No traffic\n",
1014     diff --git a/drivers/net/wireless/iwlwifi/mvm/scan.c b/drivers/net/wireless/iwlwifi/mvm/scan.c
1015     index 8e1f6c095a9e..b987dfb879df 100644
1016     --- a/drivers/net/wireless/iwlwifi/mvm/scan.c
1017     +++ b/drivers/net/wireless/iwlwifi/mvm/scan.c
1018     @@ -313,7 +313,8 @@ int iwl_mvm_scan_request(struct iwl_mvm *mvm,
1019    
1020     iwl_mvm_scan_fill_ssids(cmd, req);
1021    
1022     - cmd->tx_cmd.tx_flags = cpu_to_le32(TX_CMD_FLG_SEQ_CTL);
1023     + cmd->tx_cmd.tx_flags = cpu_to_le32(TX_CMD_FLG_SEQ_CTL |
1024     + TX_CMD_FLG_BT_DIS);
1025     cmd->tx_cmd.sta_id = mvm->aux_sta.sta_id;
1026     cmd->tx_cmd.life_time = cpu_to_le32(TX_CMD_LIFE_TIME_INFINITE);
1027     cmd->tx_cmd.rate_n_flags =
1028     diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c
1029     index 687b34e387ac..0d9e08160fec 100644
1030     --- a/drivers/net/wireless/iwlwifi/mvm/utils.c
1031     +++ b/drivers/net/wireless/iwlwifi/mvm/utils.c
1032     @@ -401,6 +401,8 @@ void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)
1033     mvm->status, table.valid);
1034     }
1035    
1036     + IWL_ERR(mvm, "Loaded firmware version: %s\n", mvm->fw->fw_version);
1037     +
1038     trace_iwlwifi_dev_ucode_error(trans->dev, table.error_id, table.tsf_low,
1039     table.data1, table.data2, table.data3,
1040     table.blink1, table.blink2, table.ilink1,
1041     diff --git a/drivers/of/address.c b/drivers/of/address.c
1042     index 9e69b4f0d204..00bc55cc821c 100644
1043     --- a/drivers/of/address.c
1044     +++ b/drivers/of/address.c
1045     @@ -99,11 +99,12 @@ static unsigned int of_bus_default_get_flags(const __be32 *addr)
1046     static int of_bus_pci_match(struct device_node *np)
1047     {
1048     /*
1049     + * "pciex" is PCI Express
1050     * "vci" is for the /chaos bridge on 1st-gen PCI powermacs
1051     * "ht" is hypertransport
1052     */
1053     - return !strcmp(np->type, "pci") || !strcmp(np->type, "vci") ||
1054     - !strcmp(np->type, "ht");
1055     + return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex") ||
1056     + !strcmp(np->type, "vci") || !strcmp(np->type, "ht");
1057     }
1058    
1059     static void of_bus_pci_count_cells(struct device_node *np,
1060     diff --git a/drivers/power/max17040_battery.c b/drivers/power/max17040_battery.c
1061     index c7ff6d67f158..0fbac861080d 100644
1062     --- a/drivers/power/max17040_battery.c
1063     +++ b/drivers/power/max17040_battery.c
1064     @@ -148,7 +148,7 @@ static void max17040_get_online(struct i2c_client *client)
1065     {
1066     struct max17040_chip *chip = i2c_get_clientdata(client);
1067    
1068     - if (chip->pdata->battery_online)
1069     + if (chip->pdata && chip->pdata->battery_online)
1070     chip->online = chip->pdata->battery_online();
1071     else
1072     chip->online = 1;
1073     @@ -158,7 +158,8 @@ static void max17040_get_status(struct i2c_client *client)
1074     {
1075     struct max17040_chip *chip = i2c_get_clientdata(client);
1076    
1077     - if (!chip->pdata->charger_online || !chip->pdata->charger_enable) {
1078     + if (!chip->pdata || !chip->pdata->charger_online
1079     + || !chip->pdata->charger_enable) {
1080     chip->status = POWER_SUPPLY_STATUS_UNKNOWN;
1081     return;
1082     }
1083     diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
1084     index ca99ac9295cf..32b7bb111eb6 100644
1085     --- a/drivers/spi/spi.c
1086     +++ b/drivers/spi/spi.c
1087     @@ -584,9 +584,7 @@ static void spi_pump_messages(struct kthread_work *work)
1088     ret = master->transfer_one_message(master, master->cur_msg);
1089     if (ret) {
1090     dev_err(&master->dev,
1091     - "failed to transfer one message from queue: %d\n", ret);
1092     - master->cur_msg->status = ret;
1093     - spi_finalize_current_message(master);
1094     + "failed to transfer one message from queue\n");
1095     return;
1096     }
1097     }
1098     diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c
1099     index f847bbc175e7..acb66a9513cf 100644
1100     --- a/drivers/staging/comedi/drivers/adv_pci1710.c
1101     +++ b/drivers/staging/comedi/drivers/adv_pci1710.c
1102     @@ -489,6 +489,7 @@ static int pci171x_insn_write_ao(struct comedi_device *dev,
1103     struct comedi_insn *insn, unsigned int *data)
1104     {
1105     struct pci1710_private *devpriv = dev->private;
1106     + unsigned int val;
1107     int n, chan, range, ofs;
1108    
1109     chan = CR_CHAN(insn->chanspec);
1110     @@ -504,11 +505,14 @@ static int pci171x_insn_write_ao(struct comedi_device *dev,
1111     outw(devpriv->da_ranges, dev->iobase + PCI171x_DAREF);
1112     ofs = PCI171x_DA1;
1113     }
1114     + val = devpriv->ao_data[chan];
1115    
1116     - for (n = 0; n < insn->n; n++)
1117     - outw(data[n], dev->iobase + ofs);
1118     + for (n = 0; n < insn->n; n++) {
1119     + val = data[n];
1120     + outw(val, dev->iobase + ofs);
1121     + }
1122    
1123     - devpriv->ao_data[chan] = data[n];
1124     + devpriv->ao_data[chan] = val;
1125    
1126     return n;
1127    
1128     @@ -678,6 +682,7 @@ static int pci1720_insn_write_ao(struct comedi_device *dev,
1129     struct comedi_insn *insn, unsigned int *data)
1130     {
1131     struct pci1710_private *devpriv = dev->private;
1132     + unsigned int val;
1133     int n, rangereg, chan;
1134    
1135     chan = CR_CHAN(insn->chanspec);
1136     @@ -687,13 +692,15 @@ static int pci1720_insn_write_ao(struct comedi_device *dev,
1137     outb(rangereg, dev->iobase + PCI1720_RANGE);
1138     devpriv->da_ranges = rangereg;
1139     }
1140     + val = devpriv->ao_data[chan];
1141    
1142     for (n = 0; n < insn->n; n++) {
1143     - outw(data[n], dev->iobase + PCI1720_DA0 + (chan << 1));
1144     + val = data[n];
1145     + outw(val, dev->iobase + PCI1720_DA0 + (chan << 1));
1146     outb(0, dev->iobase + PCI1720_SYNCOUT); /* update outputs */
1147     }
1148    
1149     - devpriv->ao_data[chan] = data[n];
1150     + devpriv->ao_data[chan] = val;
1151    
1152     return n;
1153     }
1154     diff --git a/drivers/staging/iio/adc/ad799x_core.c b/drivers/staging/iio/adc/ad799x_core.c
1155     index 8dc97b36e05a..b0cb2de93050 100644
1156     --- a/drivers/staging/iio/adc/ad799x_core.c
1157     +++ b/drivers/staging/iio/adc/ad799x_core.c
1158     @@ -644,7 +644,8 @@ static int ad799x_probe(struct i2c_client *client,
1159     return 0;
1160    
1161     error_free_irq:
1162     - free_irq(client->irq, indio_dev);
1163     + if (client->irq > 0)
1164     + free_irq(client->irq, indio_dev);
1165     error_cleanup_ring:
1166     ad799x_ring_cleanup(indio_dev);
1167     error_disable_reg:
1168     diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
1169     index 642239015b46..3ee7217e25b2 100644
1170     --- a/drivers/tty/n_gsm.c
1171     +++ b/drivers/tty/n_gsm.c
1172     @@ -1089,6 +1089,7 @@ static void gsm_control_modem(struct gsm_mux *gsm, u8 *data, int clen)
1173     {
1174     unsigned int addr = 0;
1175     unsigned int modem = 0;
1176     + unsigned int brk = 0;
1177     struct gsm_dlci *dlci;
1178     int len = clen;
1179     u8 *dp = data;
1180     @@ -1115,6 +1116,16 @@ static void gsm_control_modem(struct gsm_mux *gsm, u8 *data, int clen)
1181     if (len == 0)
1182     return;
1183     }
1184     + len--;
1185     + if (len > 0) {
1186     + while (gsm_read_ea(&brk, *dp++) == 0) {
1187     + len--;
1188     + if (len == 0)
1189     + return;
1190     + }
1191     + modem <<= 7;
1192     + modem |= (brk & 0x7f);
1193     + }
1194     tty = tty_port_tty_get(&dlci->port);
1195     gsm_process_modem(tty, dlci, modem, clen);
1196     if (tty) {
1197     diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
1198     index 740202d8a5c4..0d1b3757cfb6 100644
1199     --- a/drivers/tty/vt/vt.c
1200     +++ b/drivers/tty/vt/vt.c
1201     @@ -1164,6 +1164,8 @@ static void csi_J(struct vc_data *vc, int vpar)
1202     scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char,
1203     vc->vc_screenbuf_size >> 1);
1204     set_origin(vc);
1205     + if (CON_IS_VISIBLE(vc))
1206     + update_screen(vc);
1207     /* fall through */
1208     case 2: /* erase whole display */
1209     count = vc->vc_cols * vc->vc_rows;
1210     diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
1211     index d3aa353908aa..d53547d2e4c7 100644
1212     --- a/drivers/usb/core/hcd.c
1213     +++ b/drivers/usb/core/hcd.c
1214     @@ -1010,7 +1010,6 @@ static int register_root_hub(struct usb_hcd *hcd)
1215     dev_name(&usb_dev->dev), retval);
1216     return retval;
1217     }
1218     - usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev);
1219     }
1220    
1221     retval = usb_new_device (usb_dev);
1222     diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
1223     index e604645a1290..3a2eb4cc8959 100644
1224     --- a/drivers/usb/core/hub.c
1225     +++ b/drivers/usb/core/hub.c
1226     @@ -135,7 +135,7 @@ struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev)
1227     return usb_get_intfdata(hdev->actconfig->interface[0]);
1228     }
1229    
1230     -int usb_device_supports_lpm(struct usb_device *udev)
1231     +static int usb_device_supports_lpm(struct usb_device *udev)
1232     {
1233     /* USB 2.1 (and greater) devices indicate LPM support through
1234     * their USB 2.0 Extended Capabilities BOS descriptor.
1235     @@ -156,11 +156,6 @@ int usb_device_supports_lpm(struct usb_device *udev)
1236     "Power management will be impacted.\n");
1237     return 0;
1238     }
1239     -
1240     - /* udev is root hub */
1241     - if (!udev->parent)
1242     - return 1;
1243     -
1244     if (udev->parent->lpm_capable)
1245     return 1;
1246    
1247     diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
1248     index c49383669cd8..823857767a16 100644
1249     --- a/drivers/usb/core/usb.h
1250     +++ b/drivers/usb/core/usb.h
1251     @@ -35,7 +35,6 @@ extern int usb_get_device_descriptor(struct usb_device *dev,
1252     unsigned int size);
1253     extern int usb_get_bos_descriptor(struct usb_device *dev);
1254     extern void usb_release_bos_descriptor(struct usb_device *dev);
1255     -extern int usb_device_supports_lpm(struct usb_device *udev);
1256     extern char *usb_cache_string(struct usb_device *udev, int index);
1257     extern int usb_set_configuration(struct usb_device *dev, int configuration);
1258     extern int usb_choose_configuration(struct usb_device *udev);
1259     diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
1260     index 089248c1d597..b7446a69d2a9 100644
1261     --- a/drivers/usb/serial/ftdi_sio.c
1262     +++ b/drivers/usb/serial/ftdi_sio.c
1263     @@ -155,6 +155,7 @@ static struct usb_device_id id_table_combined [] = {
1264     { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
1265     { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) },
1266     { USB_DEVICE(FTDI_VID, FTDI_NXTCAM_PID) },
1267     + { USB_DEVICE(FTDI_VID, FTDI_EV3CON_PID) },
1268     { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) },
1269     { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) },
1270     { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) },
1271     @@ -194,6 +195,8 @@ static struct usb_device_id id_table_combined [] = {
1272     { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
1273     { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
1274     { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
1275     + { USB_DEVICE(FTDI_VID, FTDI_TAGSYS_LP101_PID) },
1276     + { USB_DEVICE(FTDI_VID, FTDI_TAGSYS_P200X_PID) },
1277     { USB_DEVICE(FTDI_VID, FTDI_LENZ_LIUSB_PID) },
1278     { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
1279     { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
1280     diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h
1281     index a7019d1e3058..1e2d369df86e 100644
1282     --- a/drivers/usb/serial/ftdi_sio_ids.h
1283     +++ b/drivers/usb/serial/ftdi_sio_ids.h
1284     @@ -50,6 +50,7 @@
1285     #define TI_XDS100V2_PID 0xa6d0
1286    
1287     #define FTDI_NXTCAM_PID 0xABB8 /* NXTCam for Mindstorms NXT */
1288     +#define FTDI_EV3CON_PID 0xABB9 /* Mindstorms EV3 Console Adapter */
1289    
1290     /* US Interface Navigator (http://www.usinterface.com/) */
1291     #define FTDI_USINT_CAT_PID 0xb810 /* Navigator CAT and 2nd PTT lines */
1292     @@ -363,6 +364,12 @@
1293     /* Sprog II (Andrew Crosland's SprogII DCC interface) */
1294     #define FTDI_SPROG_II 0xF0C8
1295    
1296     +/*
1297     + * Two of the Tagsys RFID Readers
1298     + */
1299     +#define FTDI_TAGSYS_LP101_PID 0xF0E9 /* Tagsys L-P101 RFID*/
1300     +#define FTDI_TAGSYS_P200X_PID 0xF0EE /* Tagsys Medio P200x RFID*/
1301     +
1302     /* an infrared receiver for user access control with IR tags */
1303     #define FTDI_PIEGROUP_PID 0xF208 /* Product Id */
1304    
1305     diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
1306     index 5c86f57e4afa..216d20affba8 100644
1307     --- a/drivers/usb/serial/option.c
1308     +++ b/drivers/usb/serial/option.c
1309     @@ -1362,7 +1362,8 @@ static const struct usb_device_id option_ids[] = {
1310     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1267, 0xff, 0xff, 0xff) },
1311     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1268, 0xff, 0xff, 0xff) },
1312     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1269, 0xff, 0xff, 0xff) },
1313     - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1270, 0xff, 0xff, 0xff) },
1314     + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1270, 0xff, 0xff, 0xff),
1315     + .driver_info = (kernel_ulong_t)&net_intf5_blacklist },
1316     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1271, 0xff, 0xff, 0xff) },
1317     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1272, 0xff, 0xff, 0xff) },
1318     { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1273, 0xff, 0xff, 0xff) },
1319     diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
1320     index c65437cfd4a2..968a40201e5f 100644
1321     --- a/drivers/usb/serial/qcserial.c
1322     +++ b/drivers/usb/serial/qcserial.c
1323     @@ -139,6 +139,9 @@ static const struct usb_device_id id_table[] = {
1324     {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 0)}, /* Sierra Wireless EM7700 Device Management */
1325     {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 2)}, /* Sierra Wireless EM7700 NMEA */
1326     {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 3)}, /* Sierra Wireless EM7700 Modem */
1327     + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */
1328     + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */
1329     + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */
1330    
1331     { } /* Terminating entry */
1332     };
1333     diff --git a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig
1334     index 8470e1b114f2..1dd0604d1911 100644
1335     --- a/drivers/usb/storage/Kconfig
1336     +++ b/drivers/usb/storage/Kconfig
1337     @@ -18,7 +18,9 @@ config USB_STORAGE
1338    
1339     This option depends on 'SCSI' support being enabled, but you
1340     probably also need 'SCSI device support: SCSI disk support'
1341     - (BLK_DEV_SD) for most USB storage devices.
1342     + (BLK_DEV_SD) for most USB storage devices. Some devices also
1343     + will require 'Probe all LUNs on each SCSI device'
1344     + (SCSI_MULTI_LUN).
1345    
1346     To compile this driver as a module, choose M here: the
1347     module will be called usb-storage.
1348     diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
1349     index 5db153260827..bb7bf198caab 100644
1350     --- a/drivers/usb/storage/scsiglue.c
1351     +++ b/drivers/usb/storage/scsiglue.c
1352     @@ -78,6 +78,8 @@ static const char* host_info(struct Scsi_Host *host)
1353    
1354     static int slave_alloc (struct scsi_device *sdev)
1355     {
1356     + struct us_data *us = host_to_us(sdev->host);
1357     +
1358     /*
1359     * Set the INQUIRY transfer length to 36. We don't use any of
1360     * the extra data and many devices choke if asked for more or
1361     @@ -102,6 +104,10 @@ static int slave_alloc (struct scsi_device *sdev)
1362     */
1363     blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1));
1364    
1365     + /* Tell the SCSI layer if we know there is more than one LUN */
1366     + if (us->protocol == USB_PR_BULK && us->max_lun > 0)
1367     + sdev->sdev_bflags |= BLIST_FORCELUN;
1368     +
1369     return 0;
1370     }
1371    
1372     diff --git a/drivers/usb/storage/unusual_cypress.h b/drivers/usb/storage/unusual_cypress.h
1373     index 65a6a75066a8..82e8ed0324e3 100644
1374     --- a/drivers/usb/storage/unusual_cypress.h
1375     +++ b/drivers/usb/storage/unusual_cypress.h
1376     @@ -31,7 +31,7 @@ UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x9999,
1377     "Cypress ISD-300LP",
1378     USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0),
1379    
1380     -UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x0219,
1381     +UNUSUAL_DEV( 0x14cd, 0x6116, 0x0160, 0x0160,
1382     "Super Top",
1383     "USB 2.0 SATA BRIDGE",
1384     USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0),
1385     diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
1386     index ad06255c2ade..adbeb255616a 100644
1387     --- a/drivers/usb/storage/unusual_devs.h
1388     +++ b/drivers/usb/storage/unusual_devs.h
1389     @@ -1455,6 +1455,13 @@ UNUSUAL_DEV( 0x0f88, 0x042e, 0x0100, 0x0100,
1390     USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1391     US_FL_FIX_CAPACITY ),
1392    
1393     +/* Reported by Moritz Moeller-Herrmann <moritz-kernel@moeller-herrmann.de> */
1394     +UNUSUAL_DEV( 0x0fca, 0x8004, 0x0201, 0x0201,
1395     + "Research In Motion",
1396     + "BlackBerry Bold 9000",
1397     + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
1398     + US_FL_MAX_SECTORS_64 ),
1399     +
1400     /* Reported by Michael Stattmann <michael@stattmann.com> */
1401     UNUSUAL_DEV( 0x0fce, 0xd008, 0x0000, 0x0000,
1402     "Sony Ericsson",
1403     diff --git a/drivers/vme/bridges/vme_ca91cx42.c b/drivers/vme/bridges/vme_ca91cx42.c
1404     index 64bfea314429..8ca1030675a6 100644
1405     --- a/drivers/vme/bridges/vme_ca91cx42.c
1406     +++ b/drivers/vme/bridges/vme_ca91cx42.c
1407     @@ -880,7 +880,7 @@ static ssize_t ca91cx42_master_read(struct vme_master_resource *image,
1408     if (done == count)
1409     goto out;
1410     }
1411     - if ((uintptr_t)addr & 0x2) {
1412     + if ((uintptr_t)(addr + done) & 0x2) {
1413     if ((count - done) < 2) {
1414     *(u8 *)(buf + done) = ioread8(addr + done);
1415     done += 1;
1416     @@ -934,7 +934,7 @@ static ssize_t ca91cx42_master_write(struct vme_master_resource *image,
1417     if (done == count)
1418     goto out;
1419     }
1420     - if ((uintptr_t)addr & 0x2) {
1421     + if ((uintptr_t)(addr + done) & 0x2) {
1422     if ((count - done) < 2) {
1423     iowrite8(*(u8 *)(buf + done), addr + done);
1424     done += 1;
1425     diff --git a/drivers/vme/bridges/vme_tsi148.c b/drivers/vme/bridges/vme_tsi148.c
1426     index 9c1aa4dc39c9..63424060b04f 100644
1427     --- a/drivers/vme/bridges/vme_tsi148.c
1428     +++ b/drivers/vme/bridges/vme_tsi148.c
1429     @@ -1283,7 +1283,7 @@ static ssize_t tsi148_master_read(struct vme_master_resource *image, void *buf,
1430     if (done == count)
1431     goto out;
1432     }
1433     - if ((uintptr_t)addr & 0x2) {
1434     + if ((uintptr_t)(addr + done) & 0x2) {
1435     if ((count - done) < 2) {
1436     *(u8 *)(buf + done) = ioread8(addr + done);
1437     done += 1;
1438     @@ -1365,7 +1365,7 @@ static ssize_t tsi148_master_write(struct vme_master_resource *image, void *buf,
1439     if (done == count)
1440     goto out;
1441     }
1442     - if ((uintptr_t)addr & 0x2) {
1443     + if ((uintptr_t)(addr + done) & 0x2) {
1444     if ((count - done) < 2) {
1445     iowrite8(*(u8 *)(buf + done), addr + done);
1446     done += 1;
1447     diff --git a/fs/bio-integrity.c b/fs/bio-integrity.c
1448     index 45e944fe52a6..8dccf73025b3 100644
1449     --- a/fs/bio-integrity.c
1450     +++ b/fs/bio-integrity.c
1451     @@ -114,6 +114,14 @@ void bio_integrity_free(struct bio *bio)
1452     }
1453     EXPORT_SYMBOL(bio_integrity_free);
1454    
1455     +static inline unsigned int bip_integrity_vecs(struct bio_integrity_payload *bip)
1456     +{
1457     + if (bip->bip_slab == BIO_POOL_NONE)
1458     + return BIP_INLINE_VECS;
1459     +
1460     + return bvec_nr_vecs(bip->bip_slab);
1461     +}
1462     +
1463     /**
1464     * bio_integrity_add_page - Attach integrity metadata
1465     * @bio: bio to update
1466     @@ -129,7 +137,7 @@ int bio_integrity_add_page(struct bio *bio, struct page *page,
1467     struct bio_integrity_payload *bip = bio->bi_integrity;
1468     struct bio_vec *iv;
1469    
1470     - if (bip->bip_vcnt >= bvec_nr_vecs(bip->bip_slab)) {
1471     + if (bip->bip_vcnt >= bip_integrity_vecs(bip)) {
1472     printk(KERN_ERR "%s: bip_vec full\n", __func__);
1473     return 0;
1474     }
1475     diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
1476     index 51f5e0ee7237..494b68349667 100644
1477     --- a/fs/cifs/cifsacl.c
1478     +++ b/fs/cifs/cifsacl.c
1479     @@ -1027,15 +1027,30 @@ id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode,
1480     __u32 secdesclen = 0;
1481     struct cifs_ntsd *pntsd = NULL; /* acl obtained from server */
1482     struct cifs_ntsd *pnntsd = NULL; /* modified acl to be sent to server */
1483     + struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
1484     + struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
1485     + struct cifs_tcon *tcon;
1486     +
1487     + if (IS_ERR(tlink))
1488     + return PTR_ERR(tlink);
1489     + tcon = tlink_tcon(tlink);
1490    
1491     cifs_dbg(NOISY, "set ACL from mode for %s\n", path);
1492    
1493     /* Get the security descriptor */
1494     - pntsd = get_cifs_acl(CIFS_SB(inode->i_sb), inode, path, &secdesclen);
1495     +
1496     + if (tcon->ses->server->ops->get_acl == NULL) {
1497     + cifs_put_tlink(tlink);
1498     + return -EOPNOTSUPP;
1499     + }
1500     +
1501     + pntsd = tcon->ses->server->ops->get_acl(cifs_sb, inode, path,
1502     + &secdesclen);
1503     if (IS_ERR(pntsd)) {
1504     rc = PTR_ERR(pntsd);
1505     cifs_dbg(VFS, "%s: error %d getting sec desc\n", __func__, rc);
1506     - goto out;
1507     + cifs_put_tlink(tlink);
1508     + return rc;
1509     }
1510    
1511     /*
1512     @@ -1048,6 +1063,7 @@ id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode,
1513     pnntsd = kmalloc(secdesclen, GFP_KERNEL);
1514     if (!pnntsd) {
1515     kfree(pntsd);
1516     + cifs_put_tlink(tlink);
1517     return -ENOMEM;
1518     }
1519    
1520     @@ -1056,14 +1072,18 @@ id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode,
1521    
1522     cifs_dbg(NOISY, "build_sec_desc rc: %d\n", rc);
1523    
1524     + if (tcon->ses->server->ops->set_acl == NULL)
1525     + rc = -EOPNOTSUPP;
1526     +
1527     if (!rc) {
1528     /* Set the security descriptor */
1529     - rc = set_cifs_acl(pnntsd, secdesclen, inode, path, aclflag);
1530     + rc = tcon->ses->server->ops->set_acl(pnntsd, secdesclen, inode,
1531     + path, aclflag);
1532     cifs_dbg(NOISY, "set_cifs_acl rc: %d\n", rc);
1533     }
1534     + cifs_put_tlink(tlink);
1535    
1536     kfree(pnntsd);
1537     kfree(pntsd);
1538     -out:
1539     return rc;
1540     }
1541     diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
1542     index ea3a0b3018a5..e2c2d96491fa 100644
1543     --- a/fs/cifs/cifsglob.h
1544     +++ b/fs/cifs/cifsglob.h
1545     @@ -370,6 +370,16 @@ struct smb_version_operations {
1546     void (*new_lease_key)(struct cifs_fid *fid);
1547     int (*calc_signature)(struct smb_rqst *rqst,
1548     struct TCP_Server_Info *server);
1549     + ssize_t (*query_all_EAs)(const unsigned int, struct cifs_tcon *,
1550     + const unsigned char *, const unsigned char *, char *,
1551     + size_t, const struct nls_table *, int);
1552     + int (*set_EA)(const unsigned int, struct cifs_tcon *, const char *,
1553     + const char *, const void *, const __u16,
1554     + const struct nls_table *, int);
1555     + struct cifs_ntsd * (*get_acl)(struct cifs_sb_info *, struct inode *,
1556     + const char *, u32 *);
1557     + int (*set_acl)(struct cifs_ntsd *, __u32, struct inode *, const char *,
1558     + int);
1559     };
1560    
1561     struct smb_version_values {
1562     diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
1563     index 449b6cf09b09..9d463501348f 100644
1564     --- a/fs/cifs/inode.c
1565     +++ b/fs/cifs/inode.c
1566     @@ -490,10 +490,15 @@ static int cifs_sfu_mode(struct cifs_fattr *fattr, const unsigned char *path,
1567     return PTR_ERR(tlink);
1568     tcon = tlink_tcon(tlink);
1569    
1570     - rc = CIFSSMBQAllEAs(xid, tcon, path, "SETFILEBITS",
1571     - ea_value, 4 /* size of buf */, cifs_sb->local_nls,
1572     - cifs_sb->mnt_cifs_flags &
1573     - CIFS_MOUNT_MAP_SPECIAL_CHR);
1574     + if (tcon->ses->server->ops->query_all_EAs == NULL) {
1575     + cifs_put_tlink(tlink);
1576     + return -EOPNOTSUPP;
1577     + }
1578     +
1579     + rc = tcon->ses->server->ops->query_all_EAs(xid, tcon, path,
1580     + "SETFILEBITS", ea_value, 4 /* size of buf */,
1581     + cifs_sb->local_nls,
1582     + cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1583     cifs_put_tlink(tlink);
1584     if (rc < 0)
1585     return (int)rc;
1586     diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
1587     index 3efdb9d5c0b8..4885a40f3210 100644
1588     --- a/fs/cifs/smb1ops.c
1589     +++ b/fs/cifs/smb1ops.c
1590     @@ -948,6 +948,14 @@ struct smb_version_operations smb1_operations = {
1591     .mand_lock = cifs_mand_lock,
1592     .mand_unlock_range = cifs_unlock_range,
1593     .push_mand_locks = cifs_push_mandatory_locks,
1594     +#ifdef CONFIG_CIFS_XATTR
1595     + .query_all_EAs = CIFSSMBQAllEAs,
1596     + .set_EA = CIFSSMBSetEA,
1597     +#endif /* CIFS_XATTR */
1598     +#ifdef CONFIG_CIFS_ACL
1599     + .get_acl = get_cifs_acl,
1600     + .set_acl = set_cifs_acl,
1601     +#endif /* CIFS_ACL */
1602     };
1603    
1604     struct smb_version_values smb1_values = {
1605     diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c
1606     index 09afda4cc58e..5ac836a86b18 100644
1607     --- a/fs/cifs/xattr.c
1608     +++ b/fs/cifs/xattr.c
1609     @@ -82,9 +82,11 @@ int cifs_removexattr(struct dentry *direntry, const char *ea_name)
1610     goto remove_ea_exit;
1611    
1612     ea_name += XATTR_USER_PREFIX_LEN; /* skip past user. prefix */
1613     - rc = CIFSSMBSetEA(xid, pTcon, full_path, ea_name, NULL,
1614     - (__u16)0, cifs_sb->local_nls,
1615     - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1616     + if (pTcon->ses->server->ops->set_EA)
1617     + rc = pTcon->ses->server->ops->set_EA(xid, pTcon,
1618     + full_path, ea_name, NULL, (__u16)0,
1619     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1620     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1621     }
1622     remove_ea_exit:
1623     kfree(full_path);
1624     @@ -149,18 +151,22 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,
1625     cifs_dbg(FYI, "attempt to set cifs inode metadata\n");
1626    
1627     ea_name += XATTR_USER_PREFIX_LEN; /* skip past user. prefix */
1628     - rc = CIFSSMBSetEA(xid, pTcon, full_path, ea_name, ea_value,
1629     - (__u16)value_size, cifs_sb->local_nls,
1630     - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1631     + if (pTcon->ses->server->ops->set_EA)
1632     + rc = pTcon->ses->server->ops->set_EA(xid, pTcon,
1633     + full_path, ea_name, ea_value, (__u16)value_size,
1634     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1635     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1636     } else if (strncmp(ea_name, XATTR_OS2_PREFIX, XATTR_OS2_PREFIX_LEN)
1637     == 0) {
1638     if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR)
1639     goto set_ea_exit;
1640    
1641     ea_name += XATTR_OS2_PREFIX_LEN; /* skip past os2. prefix */
1642     - rc = CIFSSMBSetEA(xid, pTcon, full_path, ea_name, ea_value,
1643     - (__u16)value_size, cifs_sb->local_nls,
1644     - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1645     + if (pTcon->ses->server->ops->set_EA)
1646     + rc = pTcon->ses->server->ops->set_EA(xid, pTcon,
1647     + full_path, ea_name, ea_value, (__u16)value_size,
1648     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1649     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1650     } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL,
1651     strlen(CIFS_XATTR_CIFS_ACL)) == 0) {
1652     #ifdef CONFIG_CIFS_ACL
1653     @@ -170,8 +176,12 @@ int cifs_setxattr(struct dentry *direntry, const char *ea_name,
1654     rc = -ENOMEM;
1655     } else {
1656     memcpy(pacl, ea_value, value_size);
1657     - rc = set_cifs_acl(pacl, value_size,
1658     - direntry->d_inode, full_path, CIFS_ACL_DACL);
1659     + if (pTcon->ses->server->ops->set_acl)
1660     + rc = pTcon->ses->server->ops->set_acl(pacl,
1661     + value_size, direntry->d_inode,
1662     + full_path, CIFS_ACL_DACL);
1663     + else
1664     + rc = -EOPNOTSUPP;
1665     if (rc == 0) /* force revalidate of the inode */
1666     CIFS_I(direntry->d_inode)->time = 0;
1667     kfree(pacl);
1668     @@ -272,17 +282,21 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
1669     /* revalidate/getattr then populate from inode */
1670     } /* BB add else when above is implemented */
1671     ea_name += XATTR_USER_PREFIX_LEN; /* skip past user. prefix */
1672     - rc = CIFSSMBQAllEAs(xid, pTcon, full_path, ea_name, ea_value,
1673     - buf_size, cifs_sb->local_nls,
1674     - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1675     + if (pTcon->ses->server->ops->query_all_EAs)
1676     + rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon,
1677     + full_path, ea_name, ea_value, buf_size,
1678     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1679     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1680     } else if (strncmp(ea_name, XATTR_OS2_PREFIX, XATTR_OS2_PREFIX_LEN) == 0) {
1681     if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR)
1682     goto get_ea_exit;
1683    
1684     ea_name += XATTR_OS2_PREFIX_LEN; /* skip past os2. prefix */
1685     - rc = CIFSSMBQAllEAs(xid, pTcon, full_path, ea_name, ea_value,
1686     - buf_size, cifs_sb->local_nls,
1687     - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
1688     + if (pTcon->ses->server->ops->query_all_EAs)
1689     + rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon,
1690     + full_path, ea_name, ea_value, buf_size,
1691     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1692     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1693     } else if (strncmp(ea_name, POSIX_ACL_XATTR_ACCESS,
1694     strlen(POSIX_ACL_XATTR_ACCESS)) == 0) {
1695     #ifdef CONFIG_CIFS_POSIX
1696     @@ -313,8 +327,11 @@ ssize_t cifs_getxattr(struct dentry *direntry, const char *ea_name,
1697     u32 acllen;
1698     struct cifs_ntsd *pacl;
1699    
1700     - pacl = get_cifs_acl(cifs_sb, direntry->d_inode,
1701     - full_path, &acllen);
1702     + if (pTcon->ses->server->ops->get_acl == NULL)
1703     + goto get_ea_exit; /* rc already EOPNOTSUPP */
1704     +
1705     + pacl = pTcon->ses->server->ops->get_acl(cifs_sb,
1706     + direntry->d_inode, full_path, &acllen);
1707     if (IS_ERR(pacl)) {
1708     rc = PTR_ERR(pacl);
1709     cifs_dbg(VFS, "%s: error %zd getting sec desc\n",
1710     @@ -400,11 +417,12 @@ ssize_t cifs_listxattr(struct dentry *direntry, char *data, size_t buf_size)
1711     /* if proc/fs/cifs/streamstoxattr is set then
1712     search server for EAs or streams to
1713     returns as xattrs */
1714     - rc = CIFSSMBQAllEAs(xid, pTcon, full_path, NULL, data,
1715     - buf_size, cifs_sb->local_nls,
1716     - cifs_sb->mnt_cifs_flags &
1717     - CIFS_MOUNT_MAP_SPECIAL_CHR);
1718    
1719     + if (pTcon->ses->server->ops->query_all_EAs)
1720     + rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon,
1721     + full_path, NULL, data, buf_size,
1722     + cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
1723     + CIFS_MOUNT_MAP_SPECIAL_CHR);
1724     list_ea_exit:
1725     kfree(full_path);
1726     free_xid(xid);
1727     diff --git a/fs/file.c b/fs/file.c
1728     index 4a78f981557a..9de20265a78c 100644
1729     --- a/fs/file.c
1730     +++ b/fs/file.c
1731     @@ -34,7 +34,7 @@ static void *alloc_fdmem(size_t size)
1732     * vmalloc() if the allocation size will be considered "large" by the VM.
1733     */
1734     if (size <= (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) {
1735     - void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN);
1736     + void *data = kmalloc(size, GFP_KERNEL|__GFP_NOWARN|__GFP_NORETRY);
1737     if (data != NULL)
1738     return data;
1739     }
1740     diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c
1741     index 8ebd3f551e0c..ffc4045fc62e 100644
1742     --- a/fs/lockd/svclock.c
1743     +++ b/fs/lockd/svclock.c
1744     @@ -767,6 +767,7 @@ nlmsvc_grant_blocked(struct nlm_block *block)
1745     struct nlm_file *file = block->b_file;
1746     struct nlm_lock *lock = &block->b_call->a_args.lock;
1747     int error;
1748     + loff_t fl_start, fl_end;
1749    
1750     dprintk("lockd: grant blocked lock %p\n", block);
1751    
1752     @@ -784,9 +785,16 @@ nlmsvc_grant_blocked(struct nlm_block *block)
1753     }
1754    
1755     /* Try the lock operation again */
1756     + /* vfs_lock_file() can mangle fl_start and fl_end, but we need
1757     + * them unchanged for the GRANT_MSG
1758     + */
1759     lock->fl.fl_flags |= FL_SLEEP;
1760     + fl_start = lock->fl.fl_start;
1761     + fl_end = lock->fl.fl_end;
1762     error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL);
1763     lock->fl.fl_flags &= ~FL_SLEEP;
1764     + lock->fl.fl_start = fl_start;
1765     + lock->fl.fl_end = fl_end;
1766    
1767     switch (error) {
1768     case 0:
1769     diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
1770     index ded429966c1f..2507fd2a1eb4 100644
1771     --- a/include/linux/compiler-gcc4.h
1772     +++ b/include/linux/compiler-gcc4.h
1773     @@ -75,11 +75,7 @@
1774     *
1775     * (asm goto is automatically volatile - the naming reflects this.)
1776     */
1777     -#if GCC_VERSION <= 40801
1778     -# define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
1779     -#else
1780     -# define asm_volatile_goto(x...) do { asm goto(x); } while (0)
1781     -#endif
1782     +#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
1783    
1784     #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
1785     #if GCC_VERSION >= 40400
1786     diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
1787     index 192a302d6cfd..8ab8e9390297 100644
1788     --- a/kernel/irq/irqdesc.c
1789     +++ b/kernel/irq/irqdesc.c
1790     @@ -274,6 +274,7 @@ struct irq_desc *irq_to_desc(unsigned int irq)
1791     {
1792     return (irq < NR_IRQS) ? irq_desc + irq : NULL;
1793     }
1794     +EXPORT_SYMBOL(irq_to_desc);
1795    
1796     static void free_desc(unsigned int irq)
1797     {
1798     diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
1799     index 7a925ba456fb..a6a5bf53e86d 100644
1800     --- a/kernel/time/jiffies.c
1801     +++ b/kernel/time/jiffies.c
1802     @@ -51,7 +51,13 @@
1803     * HZ shrinks, so values greater than 8 overflow 32bits when
1804     * HZ=100.
1805     */
1806     +#if HZ < 34
1807     +#define JIFFIES_SHIFT 6
1808     +#elif HZ < 67
1809     +#define JIFFIES_SHIFT 7
1810     +#else
1811     #define JIFFIES_SHIFT 8
1812     +#endif
1813    
1814     static cycle_t jiffies_read(struct clocksource *cs)
1815     {
1816     diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
1817     index 52d4827cf2d4..f681da32a2ff 100644
1818     --- a/kernel/time/tick-broadcast.c
1819     +++ b/kernel/time/tick-broadcast.c
1820     @@ -745,6 +745,7 @@ out:
1821     static void tick_broadcast_clear_oneshot(int cpu)
1822     {
1823     cpumask_clear_cpu(cpu, tick_broadcast_oneshot_mask);
1824     + cpumask_clear_cpu(cpu, tick_broadcast_pending_mask);
1825     }
1826    
1827     static void tick_broadcast_init_next_event(struct cpumask *mask,
1828     diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
1829     index e444ff88f0a4..fd12cc56371f 100644
1830     --- a/kernel/trace/ring_buffer.c
1831     +++ b/kernel/trace/ring_buffer.c
1832     @@ -2396,6 +2396,13 @@ __rb_reserve_next(struct ring_buffer_per_cpu *cpu_buffer,
1833     write &= RB_WRITE_MASK;
1834     tail = write - length;
1835    
1836     + /*
1837     + * If this is the first commit on the page, then it has the same
1838     + * timestamp as the page itself.
1839     + */
1840     + if (!tail)
1841     + delta = 0;
1842     +
1843     /* See if we shot pass the end of this buffer page */
1844     if (unlikely(write > BUF_PAGE_SIZE))
1845     return rb_move_tail(cpu_buffer, length, tail,
1846     diff --git a/mm/memory-failure.c b/mm/memory-failure.c
1847     index f2a591d87d00..e386beefc994 100644
1848     --- a/mm/memory-failure.c
1849     +++ b/mm/memory-failure.c
1850     @@ -943,8 +943,10 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
1851     * to it. Similarly, page lock is shifted.
1852     */
1853     if (hpage != p) {
1854     - put_page(hpage);
1855     - get_page(p);
1856     + if (!(flags & MF_COUNT_INCREASED)) {
1857     + put_page(hpage);
1858     + get_page(p);
1859     + }
1860     lock_page(p);
1861     unlock_page(hpage);
1862     *hpagep = p;
1863     diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
1864     index 18687f1fca75..e922bf3f422c 100644
1865     --- a/net/mac80211/cfg.c
1866     +++ b/net/mac80211/cfg.c
1867     @@ -975,8 +975,10 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
1868     IEEE80211_P2P_OPPPS_ENABLE_BIT;
1869    
1870     err = ieee80211_assign_beacon(sdata, &params->beacon);
1871     - if (err < 0)
1872     + if (err < 0) {
1873     + ieee80211_vif_release_channel(sdata);
1874     return err;
1875     + }
1876     changed |= err;
1877    
1878     err = drv_start_ap(sdata->local, sdata);
1879     @@ -985,6 +987,7 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
1880     if (old)
1881     kfree_rcu(old, rcu_head);
1882     RCU_INIT_POINTER(sdata->u.ap.beacon, NULL);
1883     + ieee80211_vif_release_channel(sdata);
1884     return err;
1885     }
1886    
1887     @@ -2476,6 +2479,24 @@ static int ieee80211_start_roc_work(struct ieee80211_local *local,
1888     INIT_DELAYED_WORK(&roc->work, ieee80211_sw_roc_work);
1889     INIT_LIST_HEAD(&roc->dependents);
1890    
1891     + /*
1892     + * cookie is either the roc cookie (for normal roc)
1893     + * or the SKB (for mgmt TX)
1894     + */
1895     + if (!txskb) {
1896     + /* local->mtx protects this */
1897     + local->roc_cookie_counter++;
1898     + roc->cookie = local->roc_cookie_counter;
1899     + /* wow, you wrapped 64 bits ... more likely a bug */
1900     + if (WARN_ON(roc->cookie == 0)) {
1901     + roc->cookie = 1;
1902     + local->roc_cookie_counter++;
1903     + }
1904     + *cookie = roc->cookie;
1905     + } else {
1906     + *cookie = (unsigned long)txskb;
1907     + }
1908     +
1909     /* if there's one pending or we're scanning, queue this one */
1910     if (!list_empty(&local->roc_list) ||
1911     local->scanning || local->radar_detect_enabled)
1912     @@ -2610,24 +2631,6 @@ static int ieee80211_start_roc_work(struct ieee80211_local *local,
1913     if (!queued)
1914     list_add_tail(&roc->list, &local->roc_list);
1915    
1916     - /*
1917     - * cookie is either the roc cookie (for normal roc)
1918     - * or the SKB (for mgmt TX)
1919     - */
1920     - if (!txskb) {
1921     - /* local->mtx protects this */
1922     - local->roc_cookie_counter++;
1923     - roc->cookie = local->roc_cookie_counter;
1924     - /* wow, you wrapped 64 bits ... more likely a bug */
1925     - if (WARN_ON(roc->cookie == 0)) {
1926     - roc->cookie = 1;
1927     - local->roc_cookie_counter++;
1928     - }
1929     - *cookie = roc->cookie;
1930     - } else {
1931     - *cookie = (unsigned long)txskb;
1932     - }
1933     -
1934     return 0;
1935     }
1936    
1937     diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
1938     index cc65cdddb047..fe9d6e7b904b 100644
1939     --- a/net/mac80211/tx.c
1940     +++ b/net/mac80211/tx.c
1941     @@ -854,7 +854,7 @@ static int ieee80211_fragment(struct ieee80211_tx_data *tx,
1942     }
1943    
1944     /* adjust first fragment's length */
1945     - skb->len = hdrlen + per_fragm;
1946     + skb_trim(skb, hdrlen + per_fragm);
1947     return 0;
1948     }
1949    
1950     diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
1951     index 45f9a3377dcd..4319a3824727 100644
1952     --- a/scripts/mod/file2alias.c
1953     +++ b/scripts/mod/file2alias.c
1954     @@ -208,8 +208,8 @@ static void do_usb_entry(void *symval,
1955     range_lo < 0x9 ? "[%X-9" : "[%X",
1956     range_lo);
1957     sprintf(alias + strlen(alias),
1958     - range_hi > 0xA ? "a-%X]" : "%X]",
1959     - range_lo);
1960     + range_hi > 0xA ? "A-%X]" : "%X]",
1961     + range_hi);
1962     }
1963     }
1964     if (bcdDevice_initial_digits < (sizeof(bcdDevice_lo) * 2 - 1))
1965     diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
1966     index 87a03aca1b2e..e0bdcb3ecf0e 100644
1967     --- a/sound/pci/hda/patch_realtek.c
1968     +++ b/sound/pci/hda/patch_realtek.c
1969     @@ -3700,6 +3700,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1970     SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
1971     SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
1972     SND_PCI_QUIRK(0x1043, 0x8516, "ASUS X101CH", ALC269_FIXUP_ASUS_X101),
1973     + SND_PCI_QUIRK(0x104d, 0x90b5, "Sony VAIO Pro 11", ALC286_FIXUP_SONY_MIC_NO_PRESENCE),
1974     SND_PCI_QUIRK(0x104d, 0x90b6, "Sony VAIO Pro 13", ALC286_FIXUP_SONY_MIC_NO_PRESENCE),
1975     SND_PCI_QUIRK(0x104d, 0x9073, "Sony VAIO", ALC275_FIXUP_SONY_VAIO_GPIO2),
1976     SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
1977     diff --git a/virt/kvm/coalesced_mmio.c b/virt/kvm/coalesced_mmio.c
1978     index 88b2fe3ddf42..00d86427af0f 100644
1979     --- a/virt/kvm/coalesced_mmio.c
1980     +++ b/virt/kvm/coalesced_mmio.c
1981     @@ -154,17 +154,13 @@ int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm,
1982     list_add_tail(&dev->list, &kvm->coalesced_zones);
1983     mutex_unlock(&kvm->slots_lock);
1984    
1985     - return ret;
1986     + return 0;
1987    
1988     out_free_dev:
1989     mutex_unlock(&kvm->slots_lock);
1990     -
1991     kfree(dev);
1992    
1993     - if (dev == NULL)
1994     - return -ENXIO;
1995     -
1996     - return 0;
1997     + return ret;
1998     }
1999    
2000     int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,