Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:3.4 commit in: /
Date: Wed, 09 Jul 2014 23:19:20
Message-Id: 1404947844.ceafe7df41a12a32bf25b8e5917f5975e27b72ea.mpagano@gentoo
1 commit: ceafe7df41a12a32bf25b8e5917f5975e27b72ea
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Wed Jul 9 23:17:24 2014 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Wed Jul 9 23:17:24 2014 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/linux-patches.git;a=commit;h=ceafe7df
7
8 Linux patch 3.4.98
9
10 ---
11 0000_README | 4 +
12 1097_linux-3.4.98.patch | 1534 +++++++++++++++++++++++++++++++++++++++++++++++
13 2 files changed, 1538 insertions(+)
14
15 diff --git a/0000_README b/0000_README
16 index bacfd0f..3c72076 100644
17 --- a/0000_README
18 +++ b/0000_README
19 @@ -427,6 +427,10 @@ Patch: 1096_linux-3.4.97.patch
20 From: http://www.kernel.org
21 Desc: Linux 3.4.97
22
23 +Patch: 1097_linux-3.4.98.patch
24 +From: http://www.kernel.org
25 +Desc: Linux 3.4.98
26 +
27 Patch: 1500_XATTR_USER_PREFIX.patch
28 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
29 Desc: Support for namespace user.pax.* on tmpfs.
30
31 diff --git a/1097_linux-3.4.98.patch b/1097_linux-3.4.98.patch
32 new file mode 100644
33 index 0000000..db655a8
34 --- /dev/null
35 +++ b/1097_linux-3.4.98.patch
36 @@ -0,0 +1,1534 @@
37 +diff --git a/Makefile b/Makefile
38 +index fdd7c32ea1f7..d277446ee8ee 100644
39 +--- a/Makefile
40 ++++ b/Makefile
41 +@@ -1,6 +1,6 @@
42 + VERSION = 3
43 + PATCHLEVEL = 4
44 +-SUBLEVEL = 97
45 ++SUBLEVEL = 98
46 + EXTRAVERSION =
47 + NAME = Saber-toothed Squirrel
48 +
49 +diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
50 +index 65c33911341f..90b33c55ac1b 100644
51 +--- a/arch/arm/mach-omap2/mux.c
52 ++++ b/arch/arm/mach-omap2/mux.c
53 +@@ -184,8 +184,10 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,
54 + m0_entry = mux->muxnames[0];
55 +
56 + /* First check for full name in mode0.muxmode format */
57 +- if (mode0_len && strncmp(muxname, m0_entry, mode0_len))
58 +- continue;
59 ++ if (mode0_len)
60 ++ if (strncmp(muxname, m0_entry, mode0_len) ||
61 ++ (strlen(m0_entry) != mode0_len))
62 ++ continue;
63 +
64 + /* Then check for muxmode only */
65 + for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
66 +diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
67 +index 8f880bc77c56..846a16378d01 100644
68 +--- a/arch/powerpc/kernel/exceptions-64s.S
69 ++++ b/arch/powerpc/kernel/exceptions-64s.S
70 +@@ -491,7 +491,7 @@ machine_check_common:
71 + STD_EXCEPTION_COMMON(0xb00, trap_0b, .unknown_exception)
72 + STD_EXCEPTION_COMMON(0xd00, single_step, .single_step_exception)
73 + STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception)
74 +- STD_EXCEPTION_COMMON(0xe40, emulation_assist, .program_check_exception)
75 ++ STD_EXCEPTION_COMMON(0xe40, emulation_assist, .emulation_assist_interrupt)
76 + STD_EXCEPTION_COMMON(0xe60, hmi_exception, .unknown_exception)
77 + STD_EXCEPTION_COMMON_ASYNC(0xf00, performance_monitor, .performance_monitor_exception)
78 + STD_EXCEPTION_COMMON(0x1300, instruction_breakpoint, .instruction_breakpoint_exception)
79 +diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
80 +index f5725bce9ed2..f62fda1b6d61 100644
81 +--- a/arch/powerpc/kernel/lparcfg.c
82 ++++ b/arch/powerpc/kernel/lparcfg.c
83 +@@ -35,7 +35,13 @@
84 + #include <asm/vdso_datapage.h>
85 + #include <asm/vio.h>
86 + #include <asm/mmu.h>
87 ++#include <asm/machdep.h>
88 +
89 ++
90 ++/*
91 ++ * This isn't a module but we expose that to userspace
92 ++ * via /proc so leave the definitions here
93 ++ */
94 + #define MODULE_VERS "1.9"
95 + #define MODULE_NAME "lparcfg"
96 +
97 +@@ -301,6 +307,7 @@ static void parse_system_parameter_string(struct seq_file *m)
98 + __pa(rtas_data_buf),
99 + RTAS_DATA_BUF_SIZE);
100 + memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
101 ++ local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
102 + spin_unlock(&rtas_data_buf_lock);
103 +
104 + if (call_status != 0) {
105 +@@ -419,7 +426,8 @@ static void parse_em_data(struct seq_file *m)
106 + {
107 + unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
108 +
109 +- if (plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
110 ++ if (firmware_has_feature(FW_FEATURE_LPAR) &&
111 ++ plpar_hcall(H_GET_EM_PARMS, retbuf) == H_SUCCESS)
112 + seq_printf(m, "power_mode_data=%016lx\n", retbuf[0]);
113 + }
114 +
115 +@@ -678,7 +686,6 @@ static int lparcfg_open(struct inode *inode, struct file *file)
116 + }
117 +
118 + static const struct file_operations lparcfg_fops = {
119 +- .owner = THIS_MODULE,
120 + .read = seq_read,
121 + .write = lparcfg_write,
122 + .open = lparcfg_open,
123 +@@ -704,15 +711,4 @@ static int __init lparcfg_init(void)
124 + proc_ppc64_lparcfg = ent;
125 + return 0;
126 + }
127 +-
128 +-static void __exit lparcfg_cleanup(void)
129 +-{
130 +- if (proc_ppc64_lparcfg)
131 +- remove_proc_entry("lparcfg", proc_ppc64_lparcfg->parent);
132 +-}
133 +-
134 +-module_init(lparcfg_init);
135 +-module_exit(lparcfg_cleanup);
136 +-MODULE_DESCRIPTION("Interface for LPAR configuration data");
137 +-MODULE_AUTHOR("Dave Engebretsen");
138 +-MODULE_LICENSE("GPL");
139 ++machine_device_initcall(pseries, lparcfg_init);
140 +diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
141 +index 389bd4f0cdb1..5c9eccc602ef 100644
142 +--- a/arch/powerpc/kernel/setup_64.c
143 ++++ b/arch/powerpc/kernel/setup_64.c
144 +@@ -76,7 +76,7 @@
145 + #endif
146 +
147 + int boot_cpuid = 0;
148 +-int __initdata spinning_secondaries;
149 ++int spinning_secondaries;
150 + u64 ppc64_pft_size;
151 +
152 + /* Pick defaults since we might want to patch instructions
153 +diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
154 +index 8302af649219..a191a72372fa 100644
155 +--- a/arch/powerpc/kernel/sysfs.c
156 ++++ b/arch/powerpc/kernel/sysfs.c
157 +@@ -17,6 +17,7 @@
158 + #include <asm/machdep.h>
159 + #include <asm/smp.h>
160 + #include <asm/pmc.h>
161 ++#include <asm/firmware.h>
162 +
163 + #include "cacheinfo.h"
164 +
165 +@@ -179,15 +180,25 @@ SYSFS_PMCSETUP(spurr, SPRN_SPURR);
166 + SYSFS_PMCSETUP(dscr, SPRN_DSCR);
167 + SYSFS_PMCSETUP(pir, SPRN_PIR);
168 +
169 ++/*
170 ++ Lets only enable read for phyp resources and
171 ++ enable write when needed with a separate function.
172 ++ Lets be conservative and default to pseries.
173 ++ */
174 + static DEVICE_ATTR(mmcra, 0600, show_mmcra, store_mmcra);
175 + static DEVICE_ATTR(spurr, 0600, show_spurr, NULL);
176 + static DEVICE_ATTR(dscr, 0600, show_dscr, store_dscr);
177 +-static DEVICE_ATTR(purr, 0600, show_purr, store_purr);
178 ++static DEVICE_ATTR(purr, 0400, show_purr, store_purr);
179 + static DEVICE_ATTR(pir, 0400, show_pir, NULL);
180 +
181 + unsigned long dscr_default = 0;
182 + EXPORT_SYMBOL(dscr_default);
183 +
184 ++static void add_write_permission_dev_attr(struct device_attribute *attr)
185 ++{
186 ++ attr->attr.mode |= 0200;
187 ++}
188 ++
189 + static ssize_t show_dscr_default(struct device *dev,
190 + struct device_attribute *attr, char *buf)
191 + {
192 +@@ -394,8 +405,11 @@ static void __cpuinit register_cpu_online(unsigned int cpu)
193 + if (cpu_has_feature(CPU_FTR_MMCRA))
194 + device_create_file(s, &dev_attr_mmcra);
195 +
196 +- if (cpu_has_feature(CPU_FTR_PURR))
197 ++ if (cpu_has_feature(CPU_FTR_PURR)) {
198 ++ if (!firmware_has_feature(FW_FEATURE_LPAR))
199 ++ add_write_permission_dev_attr(&dev_attr_purr);
200 + device_create_file(s, &dev_attr_purr);
201 ++ }
202 +
203 + if (cpu_has_feature(CPU_FTR_SPURR))
204 + device_create_file(s, &dev_attr_spurr);
205 +diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
206 +index eb6b72faec0d..b32729b694c2 100644
207 +--- a/arch/powerpc/kernel/time.c
208 ++++ b/arch/powerpc/kernel/time.c
209 +@@ -212,8 +212,6 @@ static u64 scan_dispatch_log(u64 stop_tb)
210 + if (i == vpa->dtl_idx)
211 + return 0;
212 + while (i < vpa->dtl_idx) {
213 +- if (dtl_consumer)
214 +- dtl_consumer(dtl, i);
215 + dtb = dtl->timebase;
216 + tb_delta = dtl->enqueue_to_dispatch_time +
217 + dtl->ready_to_enqueue_time;
218 +@@ -226,6 +224,8 @@ static u64 scan_dispatch_log(u64 stop_tb)
219 + }
220 + if (dtb > stop_tb)
221 + break;
222 ++ if (dtl_consumer)
223 ++ dtl_consumer(dtl, i);
224 + stolen += tb_delta;
225 + ++i;
226 + ++dtl;
227 +diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
228 +index 3bb7197a7bdc..5557044b78ab 100644
229 +--- a/arch/powerpc/kernel/traps.c
230 ++++ b/arch/powerpc/kernel/traps.c
231 +@@ -1074,6 +1074,16 @@ void __kprobes program_check_exception(struct pt_regs *regs)
232 + _exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
233 + }
234 +
235 ++/*
236 ++ * This occurs when running in hypervisor mode on POWER6 or later
237 ++ * and an illegal instruction is encountered.
238 ++ */
239 ++void __kprobes emulation_assist_interrupt(struct pt_regs *regs)
240 ++{
241 ++ regs->msr |= REASON_ILLEGAL;
242 ++ program_check_exception(regs);
243 ++}
244 ++
245 + void alignment_exception(struct pt_regs *regs)
246 + {
247 + int sig, code, fixed = 0;
248 +diff --git a/arch/powerpc/lib/checksum_64.S b/arch/powerpc/lib/checksum_64.S
249 +index afa2ebaee174..3cdbc648d979 100644
250 +--- a/arch/powerpc/lib/checksum_64.S
251 ++++ b/arch/powerpc/lib/checksum_64.S
252 +@@ -229,19 +229,35 @@ _GLOBAL(csum_partial)
253 + blr
254 +
255 +
256 +- .macro source
257 ++ .macro srcnr
258 + 100:
259 + .section __ex_table,"a"
260 + .align 3
261 +- .llong 100b,.Lsrc_error
262 ++ .llong 100b,.Lsrc_error_nr
263 + .previous
264 + .endm
265 +
266 +- .macro dest
267 ++ .macro source
268 ++150:
269 ++ .section __ex_table,"a"
270 ++ .align 3
271 ++ .llong 150b,.Lsrc_error
272 ++ .previous
273 ++ .endm
274 ++
275 ++ .macro dstnr
276 + 200:
277 + .section __ex_table,"a"
278 + .align 3
279 +- .llong 200b,.Ldest_error
280 ++ .llong 200b,.Ldest_error_nr
281 ++ .previous
282 ++ .endm
283 ++
284 ++ .macro dest
285 ++250:
286 ++ .section __ex_table,"a"
287 ++ .align 3
288 ++ .llong 250b,.Ldest_error
289 + .previous
290 + .endm
291 +
292 +@@ -277,11 +293,11 @@ _GLOBAL(csum_partial_copy_generic)
293 + mtctr r6
294 +
295 + 1:
296 +-source; lhz r6,0(r3) /* align to doubleword */
297 ++srcnr; lhz r6,0(r3) /* align to doubleword */
298 + subi r5,r5,2
299 + addi r3,r3,2
300 + adde r0,r0,r6
301 +-dest; sth r6,0(r4)
302 ++dstnr; sth r6,0(r4)
303 + addi r4,r4,2
304 + bdnz 1b
305 +
306 +@@ -395,10 +411,10 @@ dest; std r16,56(r4)
307 +
308 + mtctr r6
309 + 3:
310 +-source; ld r6,0(r3)
311 ++srcnr; ld r6,0(r3)
312 + addi r3,r3,8
313 + adde r0,r0,r6
314 +-dest; std r6,0(r4)
315 ++dstnr; std r6,0(r4)
316 + addi r4,r4,8
317 + bdnz 3b
318 +
319 +@@ -408,10 +424,10 @@ dest; std r6,0(r4)
320 + srdi. r6,r5,2
321 + beq .Lcopy_tail_halfword
322 +
323 +-source; lwz r6,0(r3)
324 ++srcnr; lwz r6,0(r3)
325 + addi r3,r3,4
326 + adde r0,r0,r6
327 +-dest; stw r6,0(r4)
328 ++dstnr; stw r6,0(r4)
329 + addi r4,r4,4
330 + subi r5,r5,4
331 +
332 +@@ -419,10 +435,10 @@ dest; stw r6,0(r4)
333 + srdi. r6,r5,1
334 + beq .Lcopy_tail_byte
335 +
336 +-source; lhz r6,0(r3)
337 ++srcnr; lhz r6,0(r3)
338 + addi r3,r3,2
339 + adde r0,r0,r6
340 +-dest; sth r6,0(r4)
341 ++dstnr; sth r6,0(r4)
342 + addi r4,r4,2
343 + subi r5,r5,2
344 +
345 +@@ -430,10 +446,10 @@ dest; sth r6,0(r4)
346 + andi. r6,r5,1
347 + beq .Lcopy_finish
348 +
349 +-source; lbz r6,0(r3)
350 ++srcnr; lbz r6,0(r3)
351 + sldi r9,r6,8 /* Pad the byte out to 16 bits */
352 + adde r0,r0,r9
353 +-dest; stb r6,0(r4)
354 ++dstnr; stb r6,0(r4)
355 +
356 + .Lcopy_finish:
357 + addze r0,r0 /* add in final carry */
358 +@@ -443,6 +459,11 @@ dest; stb r6,0(r4)
359 + blr
360 +
361 + .Lsrc_error:
362 ++ ld r14,STK_REG(r14)(r1)
363 ++ ld r15,STK_REG(r15)(r1)
364 ++ ld r16,STK_REG(r16)(r1)
365 ++ addi r1,r1,STACKFRAMESIZE
366 ++.Lsrc_error_nr:
367 + cmpdi 0,r7,0
368 + beqlr
369 + li r6,-EFAULT
370 +@@ -450,6 +471,11 @@ dest; stb r6,0(r4)
371 + blr
372 +
373 + .Ldest_error:
374 ++ ld r14,STK_REG(r14)(r1)
375 ++ ld r15,STK_REG(r15)(r1)
376 ++ ld r16,STK_REG(r16)(r1)
377 ++ addi r1,r1,STACKFRAMESIZE
378 ++.Ldest_error_nr:
379 + cmpdi 0,r8,0
380 + beqlr
381 + li r6,-EFAULT
382 +diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
383 +index d57eacb9fcf6..944471f4d142 100644
384 +--- a/arch/x86/include/asm/kvm_host.h
385 ++++ b/arch/x86/include/asm/kvm_host.h
386 +@@ -102,7 +102,7 @@
387 + #define KVM_REFILL_PAGES 25
388 + #define KVM_MAX_CPUID_ENTRIES 80
389 + #define KVM_NR_FIXED_MTRR_REGION 88
390 +-#define KVM_NR_VAR_MTRR 8
391 ++#define KVM_NR_VAR_MTRR 10
392 +
393 + #define ASYNC_PF_PER_VCPU 64
394 +
395 +@@ -436,7 +436,7 @@ struct kvm_vcpu_arch {
396 + bool nmi_injected; /* Trying to inject an NMI this entry */
397 +
398 + struct mtrr_state_type mtrr_state;
399 +- u32 pat;
400 ++ u64 pat;
401 +
402 + int switch_db_regs;
403 + unsigned long db[KVM_NR_DB_REGS];
404 +diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
405 +index 415448af36bf..8c5ad89a65a5 100644
406 +--- a/drivers/acpi/video.c
407 ++++ b/drivers/acpi/video.c
408 +@@ -463,6 +463,22 @@ static struct dmi_system_id video_dmi_table[] __initdata = {
409 + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion m4 Notebook PC"),
410 + },
411 + },
412 ++ {
413 ++ .callback = video_ignore_initial_backlight,
414 ++ .ident = "HP 1000 Notebook PC",
415 ++ .matches = {
416 ++ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
417 ++ DMI_MATCH(DMI_PRODUCT_NAME, "HP 1000 Notebook PC"),
418 ++ },
419 ++ },
420 ++ {
421 ++ .callback = video_ignore_initial_backlight,
422 ++ .ident = "HP Pavilion dm4",
423 ++ .matches = {
424 ++ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
425 ++ DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dm4 Notebook PC"),
426 ++ },
427 ++ },
428 + {}
429 + };
430 +
431 +diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
432 +index 45d8097ef4cf..144088717b86 100644
433 +--- a/drivers/acpi/video_detect.c
434 ++++ b/drivers/acpi/video_detect.c
435 +@@ -132,6 +132,49 @@ find_video(acpi_handle handle, u32 lvl, void *context, void **rv)
436 + return AE_OK;
437 + }
438 +
439 ++/* Force to use vendor driver when the ACPI device is known to be
440 ++ * buggy */
441 ++static int video_detect_force_vendor(const struct dmi_system_id *d)
442 ++{
443 ++ acpi_video_support |= ACPI_VIDEO_BACKLIGHT_DMI_VENDOR;
444 ++ return 0;
445 ++}
446 ++
447 ++static struct dmi_system_id video_detect_dmi_table[] = {
448 ++ /* On Samsung X360, the BIOS will set a flag (VDRV) if generic
449 ++ * ACPI backlight device is used. This flag will definitively break
450 ++ * the backlight interface (even the vendor interface) untill next
451 ++ * reboot. It's why we should prevent video.ko from being used here
452 ++ * and we can't rely on a later call to acpi_video_unregister().
453 ++ */
454 ++ {
455 ++ .callback = video_detect_force_vendor,
456 ++ .ident = "X360",
457 ++ .matches = {
458 ++ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
459 ++ DMI_MATCH(DMI_PRODUCT_NAME, "X360"),
460 ++ DMI_MATCH(DMI_BOARD_NAME, "X360"),
461 ++ },
462 ++ },
463 ++ {
464 ++ .callback = video_detect_force_vendor,
465 ++ .ident = "Asus UL30VT",
466 ++ .matches = {
467 ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
468 ++ DMI_MATCH(DMI_PRODUCT_NAME, "UL30VT"),
469 ++ },
470 ++ },
471 ++ {
472 ++ .callback = video_detect_force_vendor,
473 ++ .ident = "Asus UL30A",
474 ++ .matches = {
475 ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
476 ++ DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"),
477 ++ },
478 ++ },
479 ++ { },
480 ++};
481 ++
482 + /*
483 + * Returns the video capabilities of a specific ACPI graphics device
484 + *
485 +@@ -164,6 +207,8 @@ long acpi_video_get_capabilities(acpi_handle graphics_handle)
486 + * ACPI_VIDEO_BACKLIGHT_DMI_VENDOR;
487 + *}
488 + */
489 ++
490 ++ dmi_check_system(video_detect_dmi_table);
491 + } else {
492 + status = acpi_bus_get_device(graphics_handle, &tmp_dev);
493 + if (ACPI_FAILURE(status)) {
494 +diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
495 +index dc612efbeb7a..d51c08da3f69 100644
496 +--- a/drivers/gpu/drm/radeon/atombios_crtc.c
497 ++++ b/drivers/gpu/drm/radeon/atombios_crtc.c
498 +@@ -863,14 +863,16 @@ static void atombios_crtc_program_pll(struct drm_crtc *crtc,
499 + args.v5.ucMiscInfo = 0; /* HDMI depth, etc. */
500 + if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
501 + args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_REF_DIV_SRC;
502 +- switch (bpc) {
503 +- case 8:
504 +- default:
505 +- args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
506 +- break;
507 +- case 10:
508 +- args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
509 +- break;
510 ++ if (encoder_mode == ATOM_ENCODER_MODE_HDMI) {
511 ++ switch (bpc) {
512 ++ case 8:
513 ++ default:
514 ++ args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_24BPP;
515 ++ break;
516 ++ case 10:
517 ++ args.v5.ucMiscInfo |= PIXEL_CLOCK_V5_MISC_HDMI_30BPP;
518 ++ break;
519 ++ }
520 + }
521 + args.v5.ucTransmitterID = encoder_id;
522 + args.v5.ucEncoderMode = encoder_mode;
523 +@@ -885,20 +887,22 @@ static void atombios_crtc_program_pll(struct drm_crtc *crtc,
524 + args.v6.ucMiscInfo = 0; /* HDMI depth, etc. */
525 + if (ss_enabled && (ss->type & ATOM_EXTERNAL_SS_MASK))
526 + args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_REF_DIV_SRC;
527 +- switch (bpc) {
528 +- case 8:
529 +- default:
530 +- args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
531 +- break;
532 +- case 10:
533 +- args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP;
534 +- break;
535 +- case 12:
536 +- args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP;
537 +- break;
538 +- case 16:
539 +- args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
540 +- break;
541 ++ if (encoder_mode == ATOM_ENCODER_MODE_HDMI) {
542 ++ switch (bpc) {
543 ++ case 8:
544 ++ default:
545 ++ args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_24BPP;
546 ++ break;
547 ++ case 10:
548 ++ args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_30BPP;
549 ++ break;
550 ++ case 12:
551 ++ args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_36BPP;
552 ++ break;
553 ++ case 16:
554 ++ args.v6.ucMiscInfo |= PIXEL_CLOCK_V6_MISC_HDMI_48BPP;
555 ++ break;
556 ++ }
557 + }
558 + args.v6.ucTransmitterID = encoder_id;
559 + args.v6.ucEncoderMode = encoder_mode;
560 +diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
561 +index 072229dca464..dd5c14e917e0 100644
562 +--- a/drivers/gpu/drm/radeon/atombios_encoders.c
563 ++++ b/drivers/gpu/drm/radeon/atombios_encoders.c
564 +@@ -1666,8 +1666,11 @@ atombios_set_encoder_crtc_source(struct drm_encoder *encoder)
565 + args.v2.ucEncodeMode = ATOM_ENCODER_MODE_CRT;
566 + else
567 + args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
568 +- } else
569 ++ } else if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) {
570 ++ args.v2.ucEncodeMode = ATOM_ENCODER_MODE_LVDS;
571 ++ } else {
572 + args.v2.ucEncodeMode = atombios_get_encoder_mode(encoder);
573 ++ }
574 + switch (radeon_encoder->encoder_id) {
575 + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
576 + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
577 +diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
578 +index 1334dbd15c1b..9184bbe7c602 100644
579 +--- a/drivers/gpu/drm/radeon/radeon_connectors.c
580 ++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
581 +@@ -1279,7 +1279,7 @@ bool radeon_connector_is_dp12_capable(struct drm_connector *connector)
582 + struct radeon_device *rdev = dev->dev_private;
583 +
584 + if (ASIC_IS_DCE5(rdev) &&
585 +- (rdev->clock.dp_extclk >= 53900) &&
586 ++ (rdev->clock.default_dispclk >= 53900) &&
587 + radeon_connector_encoder_is_hbr2(connector)) {
588 + return true;
589 + }
590 +diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
591 +index 6651cb328598..7fc3dc7f9985 100644
592 +--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
593 ++++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c
594 +@@ -179,7 +179,6 @@ static int vmw_fb_set_par(struct fb_info *info)
595 + vmw_write(vmw_priv, SVGA_REG_DISPLAY_POSITION_Y, info->var.yoffset);
596 + vmw_write(vmw_priv, SVGA_REG_DISPLAY_WIDTH, info->var.xres);
597 + vmw_write(vmw_priv, SVGA_REG_DISPLAY_HEIGHT, info->var.yres);
598 +- vmw_write(vmw_priv, SVGA_REG_BYTES_PER_LINE, info->fix.line_length);
599 + vmw_write(vmw_priv, SVGA_REG_DISPLAY_ID, SVGA_ID_INVALID);
600 + }
601 +
602 +diff --git a/drivers/md/md.c b/drivers/md/md.c
603 +index 3a8ef589d8c0..17e2f526457c 100644
604 +--- a/drivers/md/md.c
605 ++++ b/drivers/md/md.c
606 +@@ -7180,6 +7180,19 @@ void md_do_sync(struct mddev *mddev)
607 + rdev->recovery_offset < j)
608 + j = rdev->recovery_offset;
609 + rcu_read_unlock();
610 ++
611 ++ /* If there is a bitmap, we need to make sure all
612 ++ * writes that started before we added a spare
613 ++ * complete before we start doing a recovery.
614 ++ * Otherwise the write might complete and (via
615 ++ * bitmap_endwrite) set a bit in the bitmap after the
616 ++ * recovery has checked that bit and skipped that
617 ++ * region.
618 ++ */
619 ++ if (mddev->bitmap) {
620 ++ mddev->pers->quiesce(mddev, 1);
621 ++ mddev->pers->quiesce(mddev, 0);
622 ++ }
623 + }
624 +
625 + printk(KERN_INFO "md: %s of RAID array %s\n", desc, mdname(mddev));
626 +diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
627 +index def50caa6f84..fd11af4a702a 100644
628 +--- a/drivers/mtd/nand/pxa3xx_nand.c
629 ++++ b/drivers/mtd/nand/pxa3xx_nand.c
630 +@@ -93,10 +93,10 @@
631 +
632 + /* macros for registers read/write */
633 + #define nand_writel(info, off, val) \
634 +- __raw_writel((val), (info)->mmio_base + (off))
635 ++ writel_relaxed((val), (info)->mmio_base + (off))
636 +
637 + #define nand_readl(info, off) \
638 +- __raw_readl((info)->mmio_base + (off))
639 ++ readl_relaxed((info)->mmio_base + (off))
640 +
641 + /* error code and state */
642 + enum {
643 +diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
644 +index 9db0f8e132e6..ad3961177c68 100644
645 +--- a/drivers/net/wireless/b43/xmit.c
646 ++++ b/drivers/net/wireless/b43/xmit.c
647 +@@ -808,9 +808,13 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
648 + break;
649 + case B43_PHYTYPE_G:
650 + status.band = IEEE80211_BAND_2GHZ;
651 +- /* chanid is the radio channel cookie value as used
652 +- * to tune the radio. */
653 +- status.freq = chanid + 2400;
654 ++ /* Somewhere between 478.104 and 508.1084 firmware for G-PHY
655 ++ * has been modified to be compatible with N-PHY and others.
656 ++ */
657 ++ if (dev->fw.rev >= 508)
658 ++ status.freq = ieee80211_channel_to_frequency(chanid, status.band);
659 ++ else
660 ++ status.freq = chanid + 2400;
661 + break;
662 + case B43_PHYTYPE_N:
663 + case B43_PHYTYPE_LP:
664 +diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
665 +index aa10c48c0dfa..f8ea77c87b20 100644
666 +--- a/drivers/net/wireless/rt2x00/rt2500pci.c
667 ++++ b/drivers/net/wireless/rt2x00/rt2500pci.c
668 +@@ -1679,8 +1679,13 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev)
669 + /*
670 + * Detect if this device has an hardware controlled radio.
671 + */
672 +- if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO))
673 ++ if (rt2x00_get_field16(eeprom, EEPROM_ANTENNA_HARDWARE_RADIO)) {
674 + __set_bit(CAPABILITY_HW_BUTTON, &rt2x00dev->cap_flags);
675 ++ /*
676 ++ * On this device RFKILL initialized during probe does not work.
677 ++ */
678 ++ __set_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags);
679 ++ }
680 +
681 + /*
682 + * Check if the BBP tuning should be enabled.
683 +diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
684 +index c264dfa6e611..4be11e36e3ca 100644
685 +--- a/drivers/net/wireless/rt2x00/rt2x00.h
686 ++++ b/drivers/net/wireless/rt2x00/rt2x00.h
687 +@@ -717,6 +717,7 @@ enum rt2x00_capability_flags {
688 + REQUIRE_SW_SEQNO,
689 + REQUIRE_HT_TX_DESC,
690 + REQUIRE_PS_AUTOWAKE,
691 ++ REQUIRE_DELAYED_RFKILL,
692 +
693 + /*
694 + * Capabilities
695 +diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
696 +index 8f2c88e2c339..da65f8e97754 100644
697 +--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
698 ++++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
699 +@@ -1022,9 +1022,10 @@ static void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev)
700 + return;
701 +
702 + /*
703 +- * Unregister extra components.
704 ++ * Stop rfkill polling.
705 + */
706 +- rt2x00rfkill_unregister(rt2x00dev);
707 ++ if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
708 ++ rt2x00rfkill_unregister(rt2x00dev);
709 +
710 + /*
711 + * Allow the HW to uninitialize.
712 +@@ -1062,6 +1063,12 @@ static int rt2x00lib_initialize(struct rt2x00_dev *rt2x00dev)
713 +
714 + set_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags);
715 +
716 ++ /*
717 ++ * Start rfkill polling.
718 ++ */
719 ++ if (test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
720 ++ rt2x00rfkill_register(rt2x00dev);
721 ++
722 + return 0;
723 + }
724 +
725 +@@ -1207,7 +1214,12 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
726 + rt2x00link_register(rt2x00dev);
727 + rt2x00leds_register(rt2x00dev);
728 + rt2x00debug_register(rt2x00dev);
729 +- rt2x00rfkill_register(rt2x00dev);
730 ++
731 ++ /*
732 ++ * Start rfkill polling.
733 ++ */
734 ++ if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
735 ++ rt2x00rfkill_register(rt2x00dev);
736 +
737 + return 0;
738 +
739 +@@ -1223,6 +1235,12 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
740 + clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
741 +
742 + /*
743 ++ * Stop rfkill polling.
744 ++ */
745 ++ if (!test_bit(REQUIRE_DELAYED_RFKILL, &rt2x00dev->cap_flags))
746 ++ rt2x00rfkill_unregister(rt2x00dev);
747 ++
748 ++ /*
749 + * Disable radio.
750 + */
751 + rt2x00lib_disable_radio(rt2x00dev);
752 +diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
753 +index af247b06c842..e6daf129cc36 100644
754 +--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
755 ++++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
756 +@@ -517,6 +517,8 @@ int rt2x00mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
757 + crypto.cipher = rt2x00crypto_key_to_cipher(key);
758 + if (crypto.cipher == CIPHER_NONE)
759 + return -EOPNOTSUPP;
760 ++ if (crypto.cipher == CIPHER_TKIP && rt2x00_is_usb(rt2x00dev))
761 ++ return -EOPNOTSUPP;
762 +
763 + crypto.cmd = cmd;
764 +
765 +diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c
766 +index 337e8b33d9aa..ac58ee344790 100644
767 +--- a/drivers/scsi/ibmvscsi/ibmvscsi.c
768 ++++ b/drivers/scsi/ibmvscsi/ibmvscsi.c
769 +@@ -484,7 +484,8 @@ static void purge_requests(struct ibmvscsi_host_data *hostdata, int error_code)
770 + evt->hostdata->dev);
771 + if (evt->cmnd_done)
772 + evt->cmnd_done(evt->cmnd);
773 +- } else if (evt->done)
774 ++ } else if (evt->done && evt->crq.format != VIOSRP_MAD_FORMAT &&
775 ++ evt->iu.srp.login_req.opcode != SRP_LOGIN_REQ)
776 + evt->done(evt);
777 + free_event_struct(&evt->hostdata->pool, evt);
778 + spin_lock_irqsave(hostdata->host->host_lock, flags);
779 +diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
780 +index d92fe4037e94..6b349e301869 100644
781 +--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
782 ++++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
783 +@@ -3000,7 +3000,11 @@ sym_dequeue_from_squeue(struct sym_hcb *np, int i, int target, int lun, int task
784 + if ((target == -1 || cp->target == target) &&
785 + (lun == -1 || cp->lun == lun) &&
786 + (task == -1 || cp->tag == task)) {
787 ++#ifdef SYM_OPT_HANDLE_DEVICE_QUEUEING
788 + sym_set_cam_status(cp->cmd, DID_SOFT_ERROR);
789 ++#else
790 ++ sym_set_cam_status(cp->cmd, DID_REQUEUE);
791 ++#endif
792 + sym_remque(&cp->link_ccbq);
793 + sym_insque_tail(&cp->link_ccbq, &np->comp_ccbq);
794 + }
795 +diff --git a/drivers/staging/bcm/InterfaceInit.c b/drivers/staging/bcm/InterfaceInit.c
796 +index 8e3c586a699c..e0f40ae358ed 100644
797 +--- a/drivers/staging/bcm/InterfaceInit.c
798 ++++ b/drivers/staging/bcm/InterfaceInit.c
799 +@@ -4,10 +4,12 @@ static struct usb_device_id InterfaceUsbtable[] = {
800 + { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3) },
801 + { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3B) },
802 + { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3L) },
803 +- { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SM250) },
804 ++ { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SYM) },
805 + { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_226) },
806 + { USB_DEVICE(BCM_USB_VENDOR_ID_FOXCONN, BCM_USB_PRODUCT_ID_1901) },
807 + { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_TU25) },
808 ++ { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_226) },
809 ++ { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_326) },
810 + { }
811 + };
812 + MODULE_DEVICE_TABLE(usb, InterfaceUsbtable);
813 +diff --git a/drivers/staging/bcm/InterfaceInit.h b/drivers/staging/bcm/InterfaceInit.h
814 +index 058315a64c05..6fa4f09a37c6 100644
815 +--- a/drivers/staging/bcm/InterfaceInit.h
816 ++++ b/drivers/staging/bcm/InterfaceInit.h
817 +@@ -8,10 +8,11 @@
818 + #define BCM_USB_PRODUCT_ID_T3 0x0300
819 + #define BCM_USB_PRODUCT_ID_T3B 0x0210
820 + #define BCM_USB_PRODUCT_ID_T3L 0x0220
821 +-#define BCM_USB_PRODUCT_ID_SM250 0xbccd
822 + #define BCM_USB_PRODUCT_ID_SYM 0x15E
823 + #define BCM_USB_PRODUCT_ID_1901 0xe017
824 +-#define BCM_USB_PRODUCT_ID_226 0x0132
825 ++#define BCM_USB_PRODUCT_ID_226 0x0132 /* not sure if this is valid */
826 ++#define BCM_USB_PRODUCT_ID_ZTE_226 0x172
827 ++#define BCM_USB_PRODUCT_ID_ZTE_326 0x173 /* ZTE AX326 */
828 + #define BCM_USB_PRODUCT_ID_ZTE_TU25 0x0007
829 +
830 + #define BCM_USB_MINOR_BASE 192
831 +diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
832 +index 50dc93e2a227..fff275753416 100644
833 +--- a/drivers/staging/comedi/comedi_fops.c
834 ++++ b/drivers/staging/comedi/comedi_fops.c
835 +@@ -1078,22 +1078,19 @@ static int do_cmd_ioctl(struct comedi_device *dev,
836 + DPRINTK("subdevice busy\n");
837 + return -EBUSY;
838 + }
839 +- s->busy = file;
840 +
841 + /* make sure channel/gain list isn't too long */
842 + if (user_cmd.chanlist_len > s->len_chanlist) {
843 + DPRINTK("channel/gain list too long %u > %d\n",
844 + user_cmd.chanlist_len, s->len_chanlist);
845 +- ret = -EINVAL;
846 +- goto cleanup;
847 ++ return -EINVAL;
848 + }
849 +
850 + /* make sure channel/gain list isn't too short */
851 + if (user_cmd.chanlist_len < 1) {
852 + DPRINTK("channel/gain list too short %u < 1\n",
853 + user_cmd.chanlist_len);
854 +- ret = -EINVAL;
855 +- goto cleanup;
856 ++ return -EINVAL;
857 + }
858 +
859 + async->cmd = user_cmd;
860 +@@ -1103,8 +1100,7 @@ static int do_cmd_ioctl(struct comedi_device *dev,
861 + kmalloc(async->cmd.chanlist_len * sizeof(int), GFP_KERNEL);
862 + if (!async->cmd.chanlist) {
863 + DPRINTK("allocation failed\n");
864 +- ret = -ENOMEM;
865 +- goto cleanup;
866 ++ return -ENOMEM;
867 + }
868 +
869 + if (copy_from_user(async->cmd.chanlist, user_cmd.chanlist,
870 +@@ -1156,6 +1152,9 @@ static int do_cmd_ioctl(struct comedi_device *dev,
871 +
872 + comedi_set_subdevice_runflags(s, ~0, SRF_USER | SRF_RUNNING);
873 +
874 ++ /* set s->busy _after_ setting SRF_RUNNING flag to avoid race with
875 ++ * comedi_read() or comedi_write() */
876 ++ s->busy = file;
877 + ret = s->do_cmd(dev, s);
878 + if (ret == 0)
879 + return 0;
880 +@@ -1658,6 +1657,7 @@ static ssize_t comedi_write(struct file *file, const char __user *buf,
881 +
882 + if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) {
883 + if (count == 0) {
884 ++ mutex_lock(&dev->mutex);
885 + if (comedi_get_subdevice_runflags(s) &
886 + SRF_ERROR) {
887 + retval = -EPIPE;
888 +@@ -1665,6 +1665,7 @@ static ssize_t comedi_write(struct file *file, const char __user *buf,
889 + retval = 0;
890 + }
891 + do_become_nonbusy(dev, s);
892 ++ mutex_unlock(&dev->mutex);
893 + }
894 + break;
895 + }
896 +@@ -1779,6 +1780,7 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes,
897 +
898 + if (n == 0) {
899 + if (!(comedi_get_subdevice_runflags(s) & SRF_RUNNING)) {
900 ++ mutex_lock(&dev->mutex);
901 + do_become_nonbusy(dev, s);
902 + if (comedi_get_subdevice_runflags(s) &
903 + SRF_ERROR) {
904 +@@ -1786,6 +1788,7 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes,
905 + } else {
906 + retval = 0;
907 + }
908 ++ mutex_unlock(&dev->mutex);
909 + break;
910 + }
911 + if (file->f_flags & O_NONBLOCK) {
912 +@@ -1823,9 +1826,11 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes,
913 + buf += n;
914 + break; /* makes device work like a pipe */
915 + }
916 +- if (!(comedi_get_subdevice_runflags(s) & (SRF_ERROR | SRF_RUNNING)) &&
917 +- async->buf_read_count - async->buf_write_count == 0) {
918 +- do_become_nonbusy(dev, s);
919 ++ if (!(comedi_get_subdevice_runflags(s) & (SRF_ERROR | SRF_RUNNING))) {
920 ++ mutex_lock(&dev->mutex);
921 ++ if (async->buf_read_count - async->buf_write_count == 0)
922 ++ do_become_nonbusy(dev, s);
923 ++ mutex_unlock(&dev->mutex);
924 + }
925 + set_current_state(TASK_RUNNING);
926 + remove_wait_queue(&async->wait_head, &wait);
927 +diff --git a/drivers/staging/comedi/drivers/das08.c b/drivers/staging/comedi/drivers/das08.c
928 +index d2dd75e2af7f..e16d1f38ca64 100644
929 +--- a/drivers/staging/comedi/drivers/das08.c
930 ++++ b/drivers/staging/comedi/drivers/das08.c
931 +@@ -385,7 +385,7 @@ static const struct das08_board_struct das08_boards[] = {
932 + .ai = das08_ai_rinsn,
933 + .ai_nbits = 16,
934 + .ai_pg = das08_pg_none,
935 +- .ai_encoding = das08_encode12,
936 ++ .ai_encoding = das08_encode16,
937 + .ao = das08jr_ao_winsn,
938 + .ao_nbits = 16,
939 + .di = das08jr_di_rbits,
940 +diff --git a/drivers/staging/wlags49_h2/wl_priv.c b/drivers/staging/wlags49_h2/wl_priv.c
941 +index f30e5ee4bca3..ff459b206756 100644
942 +--- a/drivers/staging/wlags49_h2/wl_priv.c
943 ++++ b/drivers/staging/wlags49_h2/wl_priv.c
944 +@@ -570,6 +570,7 @@ int wvlan_uil_put_info( struct uilreq *urq, struct wl_private *lp )
945 + ltv_t *pLtv;
946 + bool_t ltvAllocated = FALSE;
947 + ENCSTRCT sEncryption;
948 ++ size_t len;
949 +
950 + #ifdef USE_WDS
951 + hcf_16 hcfPort = HCF_PORT_0;
952 +@@ -686,7 +687,8 @@ int wvlan_uil_put_info( struct uilreq *urq, struct wl_private *lp )
953 + break;
954 + case CFG_CNF_OWN_NAME:
955 + memset( lp->StationName, 0, sizeof( lp->StationName ));
956 +- memcpy( (void *)lp->StationName, (void *)&pLtv->u.u8[2], (size_t)pLtv->u.u16[0]);
957 ++ len = min_t(size_t, pLtv->u.u16[0], sizeof(lp->StationName));
958 ++ strlcpy(lp->StationName, &pLtv->u.u8[2], len);
959 + pLtv->u.u16[0] = CNV_INT_TO_LITTLE( pLtv->u.u16[0] );
960 + break;
961 + case CFG_CNF_LOAD_BALANCING:
962 +@@ -1800,6 +1802,7 @@ int wvlan_set_station_nickname(struct net_device *dev,
963 + {
964 + struct wl_private *lp = wl_priv(dev);
965 + unsigned long flags;
966 ++ size_t len;
967 + int ret = 0;
968 + /*------------------------------------------------------------------------*/
969 +
970 +@@ -1810,8 +1813,8 @@ int wvlan_set_station_nickname(struct net_device *dev,
971 + wl_lock(lp, &flags);
972 +
973 + memset( lp->StationName, 0, sizeof( lp->StationName ));
974 +-
975 +- memcpy( lp->StationName, extra, wrqu->data.length);
976 ++ len = min_t(size_t, wrqu->data.length, sizeof(lp->StationName));
977 ++ strlcpy(lp->StationName, extra, len);
978 +
979 + /* Commit the adapter parameters */
980 + wl_apply( lp );
981 +diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
982 +index f52cb1ae45d9..32d1effe3d44 100644
983 +--- a/drivers/usb/gadget/f_fs.c
984 ++++ b/drivers/usb/gadget/f_fs.c
985 +@@ -1361,11 +1361,13 @@ static int functionfs_bind(struct ffs_data *ffs, struct usb_composite_dev *cdev)
986 + ffs->ep0req->context = ffs;
987 +
988 + lang = ffs->stringtabs;
989 +- for (lang = ffs->stringtabs; *lang; ++lang) {
990 +- struct usb_string *str = (*lang)->strings;
991 +- int id = first_id;
992 +- for (; str->s; ++id, ++str)
993 +- str->id = id;
994 ++ if (lang) {
995 ++ for (; *lang; ++lang) {
996 ++ struct usb_string *str = (*lang)->strings;
997 ++ int id = first_id;
998 ++ for (; str->s; ++id, ++str)
999 ++ str->id = id;
1000 ++ }
1001 + }
1002 +
1003 + ffs->gadget = cdev->gadget;
1004 +diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
1005 +index 87ee28e1e65e..6f1b36d15419 100644
1006 +--- a/drivers/usb/host/xhci-ring.c
1007 ++++ b/drivers/usb/host/xhci-ring.c
1008 +@@ -3588,7 +3588,7 @@ static unsigned int xhci_get_burst_count(struct xhci_hcd *xhci,
1009 + return 0;
1010 +
1011 + max_burst = urb->ep->ss_ep_comp.bMaxBurst;
1012 +- return roundup(total_packet_count, max_burst + 1) - 1;
1013 ++ return DIV_ROUND_UP(total_packet_count, max_burst + 1) - 1;
1014 + }
1015 +
1016 + /*
1017 +diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
1018 +index 7299a06af9db..424d9cf9d9a0 100644
1019 +--- a/drivers/usb/host/xhci.c
1020 ++++ b/drivers/usb/host/xhci.c
1021 +@@ -963,7 +963,7 @@ int xhci_suspend(struct xhci_hcd *xhci)
1022 + */
1023 + int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
1024 + {
1025 +- u32 command, temp = 0;
1026 ++ u32 command, temp = 0, status;
1027 + struct usb_hcd *hcd = xhci_to_hcd(xhci);
1028 + struct usb_hcd *secondary_hcd;
1029 + int retval = 0;
1030 +@@ -1087,8 +1087,12 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
1031 +
1032 + done:
1033 + if (retval == 0) {
1034 +- usb_hcd_resume_root_hub(hcd);
1035 +- usb_hcd_resume_root_hub(xhci->shared_hcd);
1036 ++ /* Resume root hubs only when have pending events. */
1037 ++ status = readl(&xhci->op_regs->status);
1038 ++ if (status & STS_EINT) {
1039 ++ usb_hcd_resume_root_hub(hcd);
1040 ++ usb_hcd_resume_root_hub(xhci->shared_hcd);
1041 ++ }
1042 + }
1043 +
1044 + /*
1045 +diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
1046 +index bb9f4111d1b8..ed1650fb910d 100644
1047 +--- a/drivers/usb/serial/ftdi_sio.c
1048 ++++ b/drivers/usb/serial/ftdi_sio.c
1049 +@@ -1593,14 +1593,17 @@ static void ftdi_set_max_packet_size(struct usb_serial_port *port)
1050 + struct usb_device *udev = serial->dev;
1051 +
1052 + struct usb_interface *interface = serial->interface;
1053 +- struct usb_endpoint_descriptor *ep_desc = &interface->cur_altsetting->endpoint[1].desc;
1054 ++ struct usb_endpoint_descriptor *ep_desc;
1055 +
1056 + unsigned num_endpoints;
1057 +- int i;
1058 ++ unsigned i;
1059 +
1060 + num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
1061 + dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
1062 +
1063 ++ if (!num_endpoints)
1064 ++ return;
1065 ++
1066 + /* NOTE: some customers have programmed FT232R/FT245R devices
1067 + * with an endpoint size of 0 - not good. In this case, we
1068 + * want to override the endpoint descriptor setting and use a
1069 +diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
1070 +index f7ccfbcdbf04..58fcaa5ae548 100644
1071 +--- a/drivers/usb/serial/option.c
1072 ++++ b/drivers/usb/serial/option.c
1073 +@@ -357,6 +357,9 @@ static void option_instat_callback(struct urb *urb);
1074 + /* Zoom */
1075 + #define ZOOM_PRODUCT_4597 0x9607
1076 +
1077 ++/* SpeedUp SU9800 usb 3g modem */
1078 ++#define SPEEDUP_PRODUCT_SU9800 0x9800
1079 ++
1080 + /* Haier products */
1081 + #define HAIER_VENDOR_ID 0x201e
1082 + #define HAIER_PRODUCT_CE100 0x2009
1083 +@@ -377,8 +380,12 @@ static void option_instat_callback(struct urb *urb);
1084 + /* Olivetti products */
1085 + #define OLIVETTI_VENDOR_ID 0x0b3c
1086 + #define OLIVETTI_PRODUCT_OLICARD100 0xc000
1087 ++#define OLIVETTI_PRODUCT_OLICARD120 0xc001
1088 ++#define OLIVETTI_PRODUCT_OLICARD140 0xc002
1089 + #define OLIVETTI_PRODUCT_OLICARD145 0xc003
1090 ++#define OLIVETTI_PRODUCT_OLICARD155 0xc004
1091 + #define OLIVETTI_PRODUCT_OLICARD200 0xc005
1092 ++#define OLIVETTI_PRODUCT_OLICARD160 0xc00a
1093 + #define OLIVETTI_PRODUCT_OLICARD500 0xc00b
1094 +
1095 + /* Celot products */
1096 +@@ -1597,6 +1604,7 @@ static const struct usb_device_id option_ids[] = {
1097 + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
1098 + .driver_info = (kernel_ulong_t)&four_g_w14_blacklist
1099 + },
1100 ++ { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) },
1101 + { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) },
1102 + { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) },
1103 + { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) },
1104 +@@ -1631,15 +1639,21 @@ static const struct usb_device_id option_ids[] = {
1105 + { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) },
1106 + { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */
1107 + { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) },
1108 +-
1109 +- { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
1110 ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100),
1111 ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1112 ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD120),
1113 ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1114 ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD140),
1115 ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1116 + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) },
1117 ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD155),
1118 ++ .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1119 + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200),
1120 +- .driver_info = (kernel_ulong_t)&net_intf6_blacklist
1121 +- },
1122 ++ .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1123 ++ { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD160),
1124 ++ .driver_info = (kernel_ulong_t)&net_intf6_blacklist },
1125 + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500),
1126 +- .driver_info = (kernel_ulong_t)&net_intf4_blacklist
1127 +- },
1128 ++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
1129 + { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
1130 + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/
1131 + { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) },
1132 +diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c
1133 +index 6a8568c6466f..f2da2bd20188 100644
1134 +--- a/fs/cifs/cifs_unicode.c
1135 ++++ b/fs/cifs/cifs_unicode.c
1136 +@@ -290,7 +290,8 @@ int
1137 + cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1138 + const struct nls_table *cp, int mapChars)
1139 + {
1140 +- int i, j, charlen;
1141 ++ int i, charlen;
1142 ++ int j = 0;
1143 + char src_char;
1144 + __le16 dst_char;
1145 + wchar_t tmp;
1146 +@@ -298,12 +299,11 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1147 + if (!mapChars)
1148 + return cifs_strtoUTF16(target, source, PATH_MAX, cp);
1149 +
1150 +- for (i = 0, j = 0; i < srclen; j++) {
1151 ++ for (i = 0; i < srclen; j++) {
1152 + src_char = source[i];
1153 + charlen = 1;
1154 + switch (src_char) {
1155 + case 0:
1156 +- put_unaligned(0, &target[j]);
1157 + goto ctoUTF16_out;
1158 + case ':':
1159 + dst_char = cpu_to_le16(UNI_COLON);
1160 +@@ -350,6 +350,7 @@ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
1161 + }
1162 +
1163 + ctoUTF16_out:
1164 ++ put_unaligned(0, &target[j]); /* Null terminate target unicode string */
1165 + return j;
1166 + }
1167 +
1168 +diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
1169 +index 97a142cde23b..22beaff3544a 100644
1170 +--- a/fs/nfsd/nfs4proc.c
1171 ++++ b/fs/nfsd/nfs4proc.c
1172 +@@ -543,15 +543,6 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
1173 +
1174 + switch (create->cr_type) {
1175 + case NF4LNK:
1176 +- /* ugh! we have to null-terminate the linktext, or
1177 +- * vfs_symlink() will choke. it is always safe to
1178 +- * null-terminate by brute force, since at worst we
1179 +- * will overwrite the first byte of the create namelen
1180 +- * in the XDR buffer, which has already been extracted
1181 +- * during XDR decode.
1182 +- */
1183 +- create->cr_linkname[create->cr_linklen] = 0;
1184 +-
1185 + status = nfsd_symlink(rqstp, &cstate->current_fh,
1186 + create->cr_name, create->cr_namelen,
1187 + create->cr_linkname, create->cr_linklen,
1188 +diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
1189 +index ba7bf4a11855..04a1ce42e32b 100644
1190 +--- a/fs/nfsd/nfs4xdr.c
1191 ++++ b/fs/nfsd/nfs4xdr.c
1192 +@@ -465,7 +465,18 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create
1193 + READ_BUF(4);
1194 + READ32(create->cr_linklen);
1195 + READ_BUF(create->cr_linklen);
1196 +- SAVEMEM(create->cr_linkname, create->cr_linklen);
1197 ++ /*
1198 ++ * The VFS will want a null-terminated string, and
1199 ++ * null-terminating in place isn't safe since this might
1200 ++ * end on a page boundary:
1201 ++ */
1202 ++ create->cr_linkname =
1203 ++ kmalloc(create->cr_linklen + 1, GFP_KERNEL);
1204 ++ if (!create->cr_linkname)
1205 ++ return nfserr_jukebox;
1206 ++ memcpy(create->cr_linkname, p, create->cr_linklen);
1207 ++ create->cr_linkname[create->cr_linklen] = '\0';
1208 ++ defer_free(argp, kfree, create->cr_linkname);
1209 + break;
1210 + case NF4BLK:
1211 + case NF4CHR:
1212 +diff --git a/include/linux/usb.h b/include/linux/usb.h
1213 +index 4e8e6685f513..473907ac9104 100644
1214 +--- a/include/linux/usb.h
1215 ++++ b/include/linux/usb.h
1216 +@@ -715,6 +715,22 @@ static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size)
1217 + .bcdDevice_hi = (hi)
1218 +
1219 + /**
1220 ++ * USB_DEVICE_INTERFACE_CLASS - describe a usb device with a specific interface class
1221 ++ * @vend: the 16 bit USB Vendor ID
1222 ++ * @prod: the 16 bit USB Product ID
1223 ++ * @cl: bInterfaceClass value
1224 ++ *
1225 ++ * This macro is used to create a struct usb_device_id that matches a
1226 ++ * specific interface class of devices.
1227 ++ */
1228 ++#define USB_DEVICE_INTERFACE_CLASS(vend, prod, cl) \
1229 ++ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
1230 ++ USB_DEVICE_ID_MATCH_INT_CLASS, \
1231 ++ .idVendor = (vend), \
1232 ++ .idProduct = (prod), \
1233 ++ .bInterfaceClass = (cl)
1234 ++
1235 ++/**
1236 + * USB_DEVICE_INTERFACE_PROTOCOL - describe a usb device with a specific interface protocol
1237 + * @vend: the 16 bit USB Vendor ID
1238 + * @prod: the 16 bit USB Product ID
1239 +diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
1240 +index 4886c1144972..7d6cb0b2d061 100644
1241 +--- a/include/net/bluetooth/hci_core.h
1242 ++++ b/include/net/bluetooth/hci_core.h
1243 +@@ -1068,7 +1068,6 @@ void hci_le_conn_update(struct hci_conn *conn, u16 min, u16 max,
1244 + u16 latency, u16 to_multiplier);
1245 + void hci_le_start_enc(struct hci_conn *conn, __le16 ediv, __u8 rand[8],
1246 + __u8 ltk[16]);
1247 +-void hci_le_ltk_reply(struct hci_conn *conn, u8 ltk[16]);
1248 + void hci_le_ltk_neg_reply(struct hci_conn *conn);
1249 +
1250 + int hci_do_inquiry(struct hci_dev *hdev, u8 length);
1251 +diff --git a/mm/hugetlb.c b/mm/hugetlb.c
1252 +index d5facc8d78a4..0d4e0ad97a04 100644
1253 +--- a/mm/hugetlb.c
1254 ++++ b/mm/hugetlb.c
1255 +@@ -2276,6 +2276,31 @@ static void set_huge_ptep_writable(struct vm_area_struct *vma,
1256 + update_mmu_cache(vma, address, ptep);
1257 + }
1258 +
1259 ++static int is_hugetlb_entry_migration(pte_t pte)
1260 ++{
1261 ++ swp_entry_t swp;
1262 ++
1263 ++ if (huge_pte_none(pte) || pte_present(pte))
1264 ++ return 0;
1265 ++ swp = pte_to_swp_entry(pte);
1266 ++ if (non_swap_entry(swp) && is_migration_entry(swp))
1267 ++ return 1;
1268 ++ else
1269 ++ return 0;
1270 ++}
1271 ++
1272 ++static int is_hugetlb_entry_hwpoisoned(pte_t pte)
1273 ++{
1274 ++ swp_entry_t swp;
1275 ++
1276 ++ if (huge_pte_none(pte) || pte_present(pte))
1277 ++ return 0;
1278 ++ swp = pte_to_swp_entry(pte);
1279 ++ if (non_swap_entry(swp) && is_hwpoison_entry(swp))
1280 ++ return 1;
1281 ++ else
1282 ++ return 0;
1283 ++}
1284 +
1285 + int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
1286 + struct vm_area_struct *vma)
1287 +@@ -2303,10 +2328,26 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
1288 +
1289 + spin_lock(&dst->page_table_lock);
1290 + spin_lock_nested(&src->page_table_lock, SINGLE_DEPTH_NESTING);
1291 +- if (!huge_pte_none(huge_ptep_get(src_pte))) {
1292 ++ entry = huge_ptep_get(src_pte);
1293 ++ if (huge_pte_none(entry)) { /* skip none entry */
1294 ++ ;
1295 ++ } else if (unlikely(is_hugetlb_entry_migration(entry) ||
1296 ++ is_hugetlb_entry_hwpoisoned(entry))) {
1297 ++ swp_entry_t swp_entry = pte_to_swp_entry(entry);
1298 ++
1299 ++ if (is_write_migration_entry(swp_entry) && cow) {
1300 ++ /*
1301 ++ * COW mappings require pages in both
1302 ++ * parent and child to be set to read.
1303 ++ */
1304 ++ make_migration_entry_read(&swp_entry);
1305 ++ entry = swp_entry_to_pte(swp_entry);
1306 ++ set_huge_pte_at(src, addr, src_pte, entry);
1307 ++ }
1308 ++ set_huge_pte_at(dst, addr, dst_pte, entry);
1309 ++ } else {
1310 + if (cow)
1311 + huge_ptep_set_wrprotect(src, addr, src_pte);
1312 +- entry = huge_ptep_get(src_pte);
1313 + ptepage = pte_page(entry);
1314 + get_page(ptepage);
1315 + page_dup_rmap(ptepage);
1316 +@@ -2321,32 +2362,6 @@ nomem:
1317 + return -ENOMEM;
1318 + }
1319 +
1320 +-static int is_hugetlb_entry_migration(pte_t pte)
1321 +-{
1322 +- swp_entry_t swp;
1323 +-
1324 +- if (huge_pte_none(pte) || pte_present(pte))
1325 +- return 0;
1326 +- swp = pte_to_swp_entry(pte);
1327 +- if (non_swap_entry(swp) && is_migration_entry(swp))
1328 +- return 1;
1329 +- else
1330 +- return 0;
1331 +-}
1332 +-
1333 +-static int is_hugetlb_entry_hwpoisoned(pte_t pte)
1334 +-{
1335 +- swp_entry_t swp;
1336 +-
1337 +- if (huge_pte_none(pte) || pte_present(pte))
1338 +- return 0;
1339 +- swp = pte_to_swp_entry(pte);
1340 +- if (non_swap_entry(swp) && is_hwpoison_entry(swp))
1341 +- return 1;
1342 +- else
1343 +- return 0;
1344 +-}
1345 +-
1346 + void __unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
1347 + unsigned long end, struct page *ref_page)
1348 + {
1349 +diff --git a/mm/mempolicy.c b/mm/mempolicy.c
1350 +index 82f1b027ba1c..ee50c256fdc3 100644
1351 +--- a/mm/mempolicy.c
1352 ++++ b/mm/mempolicy.c
1353 +@@ -566,24 +566,24 @@ static inline int check_pgd_range(struct vm_area_struct *vma,
1354 + * If pagelist != NULL then isolate pages from the LRU and
1355 + * put them on the pagelist.
1356 + */
1357 +-static struct vm_area_struct *
1358 ++static int
1359 + check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
1360 + const nodemask_t *nodes, unsigned long flags, void *private)
1361 + {
1362 +- int err;
1363 +- struct vm_area_struct *first, *vma, *prev;
1364 ++ int err = 0;
1365 ++ struct vm_area_struct *vma, *prev;
1366 +
1367 +
1368 +- first = find_vma(mm, start);
1369 +- if (!first)
1370 +- return ERR_PTR(-EFAULT);
1371 ++ vma = find_vma(mm, start);
1372 ++ if (!vma)
1373 ++ return -EFAULT;
1374 + prev = NULL;
1375 +- for (vma = first; vma && vma->vm_start < end; vma = vma->vm_next) {
1376 ++ for (; vma && vma->vm_start < end; vma = vma->vm_next) {
1377 + if (!(flags & MPOL_MF_DISCONTIG_OK)) {
1378 + if (!vma->vm_next && vma->vm_end < end)
1379 +- return ERR_PTR(-EFAULT);
1380 ++ return -EFAULT;
1381 + if (prev && prev->vm_end < vma->vm_start)
1382 +- return ERR_PTR(-EFAULT);
1383 ++ return -EFAULT;
1384 + }
1385 + if (!is_vm_hugetlb_page(vma) &&
1386 + ((flags & MPOL_MF_STRICT) ||
1387 +@@ -597,14 +597,12 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
1388 + start = vma->vm_start;
1389 + err = check_pgd_range(vma, start, endvma, nodes,
1390 + flags, private);
1391 +- if (err) {
1392 +- first = ERR_PTR(err);
1393 ++ if (err)
1394 + break;
1395 +- }
1396 + }
1397 + prev = vma;
1398 + }
1399 +- return first;
1400 ++ return err;
1401 + }
1402 +
1403 + /*
1404 +@@ -945,16 +943,15 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest,
1405 + {
1406 + nodemask_t nmask;
1407 + LIST_HEAD(pagelist);
1408 +- int err = 0;
1409 +- struct vm_area_struct *vma;
1410 ++ int err;
1411 +
1412 + nodes_clear(nmask);
1413 + node_set(source, nmask);
1414 +
1415 +- vma = check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask,
1416 ++ err = check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask,
1417 + flags | MPOL_MF_DISCONTIG_OK, &pagelist);
1418 +- if (IS_ERR(vma))
1419 +- return PTR_ERR(vma);
1420 ++ if (err)
1421 ++ return err;
1422 +
1423 + if (!list_empty(&pagelist)) {
1424 + err = migrate_pages(&pagelist, new_node_page, dest,
1425 +@@ -1058,16 +1055,17 @@ out:
1426 +
1427 + /*
1428 + * Allocate a new page for page migration based on vma policy.
1429 +- * Start assuming that page is mapped by vma pointed to by @private.
1430 ++ * Start by assuming the page is mapped by the same vma as contains @start.
1431 + * Search forward from there, if not. N.B., this assumes that the
1432 + * list of pages handed to migrate_pages()--which is how we get here--
1433 + * is in virtual address order.
1434 + */
1435 +-static struct page *new_vma_page(struct page *page, unsigned long private, int **x)
1436 ++static struct page *new_page(struct page *page, unsigned long start, int **x)
1437 + {
1438 +- struct vm_area_struct *vma = (struct vm_area_struct *)private;
1439 ++ struct vm_area_struct *vma;
1440 + unsigned long uninitialized_var(address);
1441 +
1442 ++ vma = find_vma(current->mm, start);
1443 + while (vma) {
1444 + address = page_address_in_vma(page, vma);
1445 + if (address != -EFAULT)
1446 +@@ -1093,7 +1091,7 @@ int do_migrate_pages(struct mm_struct *mm,
1447 + return -ENOSYS;
1448 + }
1449 +
1450 +-static struct page *new_vma_page(struct page *page, unsigned long private, int **x)
1451 ++static struct page *new_page(struct page *page, unsigned long start, int **x)
1452 + {
1453 + return NULL;
1454 + }
1455 +@@ -1103,7 +1101,6 @@ static long do_mbind(unsigned long start, unsigned long len,
1456 + unsigned short mode, unsigned short mode_flags,
1457 + nodemask_t *nmask, unsigned long flags)
1458 + {
1459 +- struct vm_area_struct *vma;
1460 + struct mm_struct *mm = current->mm;
1461 + struct mempolicy *new;
1462 + unsigned long end;
1463 +@@ -1167,19 +1164,17 @@ static long do_mbind(unsigned long start, unsigned long len,
1464 + if (err)
1465 + goto mpol_out;
1466 +
1467 +- vma = check_range(mm, start, end, nmask,
1468 ++ err = check_range(mm, start, end, nmask,
1469 + flags | MPOL_MF_INVERT, &pagelist);
1470 +
1471 +- err = PTR_ERR(vma);
1472 +- if (!IS_ERR(vma)) {
1473 ++ if (!err) {
1474 + int nr_failed = 0;
1475 +
1476 + err = mbind_range(mm, start, end, new);
1477 +
1478 + if (!list_empty(&pagelist)) {
1479 +- nr_failed = migrate_pages(&pagelist, new_vma_page,
1480 +- (unsigned long)vma,
1481 +- false, true);
1482 ++ nr_failed = migrate_pages(&pagelist, new_page,
1483 ++ start, false, true);
1484 + if (nr_failed)
1485 + putback_lru_pages(&pagelist);
1486 + }
1487 +diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
1488 +index 39b2baf6c1d5..70bdb7d1d6df 100644
1489 +--- a/net/bluetooth/hci_conn.c
1490 ++++ b/net/bluetooth/hci_conn.c
1491 +@@ -224,22 +224,6 @@ void hci_le_start_enc(struct hci_conn *conn, __le16 ediv, __u8 rand[8],
1492 + }
1493 + EXPORT_SYMBOL(hci_le_start_enc);
1494 +
1495 +-void hci_le_ltk_reply(struct hci_conn *conn, u8 ltk[16])
1496 +-{
1497 +- struct hci_dev *hdev = conn->hdev;
1498 +- struct hci_cp_le_ltk_reply cp;
1499 +-
1500 +- BT_DBG("%p", conn);
1501 +-
1502 +- memset(&cp, 0, sizeof(cp));
1503 +-
1504 +- cp.handle = cpu_to_le16(conn->handle);
1505 +- memcpy(cp.ltk, ltk, sizeof(ltk));
1506 +-
1507 +- hci_send_cmd(hdev, HCI_OP_LE_LTK_REPLY, sizeof(cp), &cp);
1508 +-}
1509 +-EXPORT_SYMBOL(hci_le_ltk_reply);
1510 +-
1511 + void hci_le_ltk_neg_reply(struct hci_conn *conn)
1512 + {
1513 + struct hci_dev *hdev = conn->hdev;
1514 +diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
1515 +index 21b2de18c3b7..04bff67d5efc 100644
1516 +--- a/net/bluetooth/hci_event.c
1517 ++++ b/net/bluetooth/hci_event.c
1518 +@@ -3156,8 +3156,11 @@ static inline void hci_user_confirm_request_evt(struct hci_dev *hdev,
1519 +
1520 + /* If we're not the initiators request authorization to
1521 + * proceed from user space (mgmt_user_confirm with
1522 +- * confirm_hint set to 1). */
1523 +- if (!test_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
1524 ++ * confirm_hint set to 1). The exception is if neither
1525 ++ * side had MITM in which case we do auto-accept.
1526 ++ */
1527 ++ if (!test_bit(HCI_CONN_AUTH_PEND, &conn->flags) &&
1528 ++ (loc_mitm || rem_mitm)) {
1529 + BT_DBG("Confirming auto-accept as acceptor");
1530 + confirm_hint = 1;
1531 + goto confirm;
1532 +diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c
1533 +index 30f99c344847..d5404cc0248d 100644
1534 +--- a/net/mac80211/debugfs_netdev.c
1535 ++++ b/net/mac80211/debugfs_netdev.c
1536 +@@ -33,8 +33,7 @@ static ssize_t ieee80211_if_read(
1537 + ssize_t ret = -EINVAL;
1538 +
1539 + read_lock(&dev_base_lock);
1540 +- if (sdata->dev->reg_state == NETREG_REGISTERED)
1541 +- ret = (*format)(sdata, buf, sizeof(buf));
1542 ++ ret = (*format)(sdata, buf, sizeof(buf));
1543 + read_unlock(&dev_base_lock);
1544 +
1545 + if (ret >= 0)
1546 +@@ -61,8 +60,7 @@ static ssize_t ieee80211_if_write(
1547 +
1548 + ret = -ENODEV;
1549 + rtnl_lock();
1550 +- if (sdata->dev->reg_state == NETREG_REGISTERED)
1551 +- ret = (*write)(sdata, buf, count);
1552 ++ ret = (*write)(sdata, buf, count);
1553 + rtnl_unlock();
1554 +
1555 + return ret;
1556 +diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c
1557 +index 8674b9ec14f6..b3dbf8e1ff05 100644
1558 +--- a/tools/usb/ffs-test.c
1559 ++++ b/tools/usb/ffs-test.c
1560 +@@ -116,8 +116,8 @@ static const struct {
1561 + .header = {
1562 + .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC),
1563 + .length = cpu_to_le32(sizeof descriptors),
1564 +- .fs_count = 3,
1565 +- .hs_count = 3,
1566 ++ .fs_count = cpu_to_le32(3),
1567 ++ .hs_count = cpu_to_le32(3),
1568 + },
1569 + .fs_descs = {
1570 + .intf = {