Magellan Linux

Contents of /trunk/kernel26-alx/patches-3.10/0141-3.10.42-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2672 - (show annotations) (download)
Tue Jul 21 16:46:35 2015 UTC (8 years, 9 months ago) by niro
File size: 131660 byte(s)
-3.10.84-alx-r1
1 diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801
2 index d29dea0f3232..babe2ef16139 100644
3 --- a/Documentation/i2c/busses/i2c-i801
4 +++ b/Documentation/i2c/busses/i2c-i801
5 @@ -25,6 +25,8 @@ Supported adapters:
6 * Intel Avoton (SOC)
7 * Intel Wellsburg (PCH)
8 * Intel Coleto Creek (PCH)
9 + * Intel Wildcat Point-LP (PCH)
10 + * Intel BayTrail (SOC)
11 Datasheets: Publicly available at the Intel website
12
13 On Intel Patsburg and later chipsets, both the normal host SMBus controller
14 diff --git a/Documentation/input/elantech.txt b/Documentation/input/elantech.txt
15 index 5602eb71ad5d..e1ae127ed099 100644
16 --- a/Documentation/input/elantech.txt
17 +++ b/Documentation/input/elantech.txt
18 @@ -504,9 +504,12 @@ byte 5:
19 * reg_10
20
21 bit 7 6 5 4 3 2 1 0
22 - 0 0 0 0 0 0 0 A
23 + 0 0 0 0 R F T A
24
25 A: 1 = enable absolute tracking
26 + T: 1 = enable two finger mode auto correct
27 + F: 1 = disable ABS Position Filter
28 + R: 1 = enable real hardware resolution
29
30 6.2 Native absolute mode 6 byte packet format
31 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32 diff --git a/Documentation/ja_JP/HOWTO b/Documentation/ja_JP/HOWTO
33 index 050d37fe6d40..46ed73593465 100644
34 --- a/Documentation/ja_JP/HOWTO
35 +++ b/Documentation/ja_JP/HOWTO
36 @@ -315,7 +315,7 @@ Andrew Morton が Linux-kernel メーリングリストにカーネルリリー
37 もし、2.6.x.y カーネルが存在しない場合には、番号が一番大きい 2.6.x が
38 最新の安定版カーネルです。
39
40 -2.6.x.y は "stable" チーム <stable@kernel.org> でメンテされており、必
41 +2.6.x.y は "stable" チーム <stable@vger.kernel.org> でメンテされており、必
42 要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差し迫っ
43 た問題がなければもう少し長くなることもあります。セキュリティ関連の問題
44 の場合はこれに対してだいたいの場合、すぐにリリースがされます。
45 diff --git a/Documentation/ja_JP/stable_kernel_rules.txt b/Documentation/ja_JP/stable_kernel_rules.txt
46 index 14265837c4ce..9dbda9b5d21e 100644
47 --- a/Documentation/ja_JP/stable_kernel_rules.txt
48 +++ b/Documentation/ja_JP/stable_kernel_rules.txt
49 @@ -50,16 +50,16 @@ linux-2.6.29/Documentation/stable_kernel_rules.txt
50
51 -stable ツリーにパッチを送付する手続き-
52
53 - - 上記の規則に従っているかを確認した後に、stable@kernel.org にパッチ
54 + - 上記の規則に従っているかを確認した後に、stable@vger.kernel.org にパッチ
55 を送る。
56 - 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合
57 には NAK を受け取る。この反応は開発者たちのスケジュールによって、数
58 日かかる場合がある。
59 - もし受け取られたら、パッチは他の開発者たちと関連するサブシステムの
60 メンテナーによるレビューのために -stable キューに追加される。
61 - - パッチに stable@kernel.org のアドレスが付加されているときには、それ
62 + - パッチに stable@vger.kernel.org のアドレスが付加されているときには、それ
63 が Linus のツリーに入る時に自動的に stable チームに email される。
64 - - セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ
65 + - セキュリティパッチはこのエイリアス (stable@vger.kernel.org) に送られるべ
66 きではなく、代わりに security@kernel.org のアドレスに送られる。
67
68 レビューサイクル-
69 diff --git a/Documentation/zh_CN/HOWTO b/Documentation/zh_CN/HOWTO
70 index 7fba5aab9ef9..7599eb38b764 100644
71 --- a/Documentation/zh_CN/HOWTO
72 +++ b/Documentation/zh_CN/HOWTO
73 @@ -237,7 +237,7 @@ kernel.org网站的pub/linux/kernel/v2.6/目录下找到它。它的开发遵循
74 如果没有2.6.x.y版本内核存在,那么最新的2.6.x版本内核就相当于是当前的稳定
75 版内核。
76
77 -2.6.x.y版本由“稳定版”小组(邮件地址<stable@kernel.org>)维护,一般隔周发
78 +2.6.x.y版本由“稳定版”小组(邮件地址<stable@vger.kernel.org>)维护,一般隔周发
79 布新版本。
80
81 内核源码中的Documentation/stable_kernel_rules.txt文件具体描述了可被稳定
82 diff --git a/Documentation/zh_CN/stable_kernel_rules.txt b/Documentation/zh_CN/stable_kernel_rules.txt
83 index b5b9b0ab02fd..26ea5ed7cd9c 100644
84 --- a/Documentation/zh_CN/stable_kernel_rules.txt
85 +++ b/Documentation/zh_CN/stable_kernel_rules.txt
86 @@ -42,7 +42,7 @@ Documentation/stable_kernel_rules.txt 的中文翻译
87
88 向稳定版代码树提交补丁的过程:
89
90 - - 在确认了补丁符合以上的规则后,将补丁发送到stable@kernel.org。
91 + - 在确认了补丁符合以上的规则后,将补丁发送到stable@vger.kernel.org。
92 - 如果补丁被接受到队列里,发送者会收到一个ACK回复,如果没有被接受,收
93 到的是NAK回复。回复需要几天的时间,这取决于开发者的时间安排。
94 - 被接受的补丁会被加到稳定版本队列里,等待其他开发者的审查。
95 diff --git a/Makefile b/Makefile
96 index 370cc01afb07..4634015fed68 100644
97 --- a/Makefile
98 +++ b/Makefile
99 @@ -1,6 +1,6 @@
100 VERSION = 3
101 PATCHLEVEL = 10
102 -SUBLEVEL = 41
103 +SUBLEVEL = 42
104 EXTRAVERSION =
105 NAME = TOSSUG Baby Fish
106
107 diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
108 index eb83aa039b8b..e524316998f4 100644
109 --- a/arch/arm/boot/dts/imx53.dtsi
110 +++ b/arch/arm/boot/dts/imx53.dtsi
111 @@ -71,7 +71,7 @@
112 ipu: ipu@18000000 {
113 #crtc-cells = <1>;
114 compatible = "fsl,imx53-ipu";
115 - reg = <0x18000000 0x080000000>;
116 + reg = <0x18000000 0x08000000>;
117 interrupts = <11 10>;
118 clocks = <&clks 59>, <&clks 110>, <&clks 61>;
119 clock-names = "bus", "di0", "di1";
120 diff --git a/arch/arm/kernel/crash_dump.c b/arch/arm/kernel/crash_dump.c
121 index 90c50d4b43f7..5d1286d51154 100644
122 --- a/arch/arm/kernel/crash_dump.c
123 +++ b/arch/arm/kernel/crash_dump.c
124 @@ -39,7 +39,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
125 if (!csize)
126 return 0;
127
128 - vaddr = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
129 + vaddr = ioremap(__pfn_to_phys(pfn), PAGE_SIZE);
130 if (!vaddr)
131 return -ENOMEM;
132
133 diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
134 index c90bfc6bf648..e355a4c10968 100644
135 --- a/arch/metag/include/asm/barrier.h
136 +++ b/arch/metag/include/asm/barrier.h
137 @@ -15,6 +15,7 @@ static inline void wr_fence(void)
138 volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_FENCE;
139 barrier();
140 *flushptr = 0;
141 + barrier();
142 }
143
144 #else /* CONFIG_METAG_META21 */
145 @@ -35,6 +36,7 @@ static inline void wr_fence(void)
146 *flushptr = 0;
147 *flushptr = 0;
148 *flushptr = 0;
149 + barrier();
150 }
151
152 #endif /* !CONFIG_METAG_META21 */
153 @@ -68,6 +70,7 @@ static inline void fence(void)
154 volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_ATOMIC_UNLOCK;
155 barrier();
156 *flushptr = 0;
157 + barrier();
158 }
159 #define smp_mb() fence()
160 #define smp_rmb() fence()
161 diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h
162 index 9b029a7911c3..579e3d93a5ca 100644
163 --- a/arch/metag/include/asm/processor.h
164 +++ b/arch/metag/include/asm/processor.h
165 @@ -22,6 +22,8 @@
166 /* Add an extra page of padding at the top of the stack for the guard page. */
167 #define STACK_TOP (TASK_SIZE - PAGE_SIZE)
168 #define STACK_TOP_MAX STACK_TOP
169 +/* Maximum virtual space for stack */
170 +#define STACK_SIZE_MAX (1 << 28) /* 256 MB */
171
172 /* This decides where the kernel will search for a free chunk of vm
173 * space during mmap's.
174 diff --git a/arch/mips/cavium-octeon/octeon-irq.c b/arch/mips/cavium-octeon/octeon-irq.c
175 index a22f06a6f7ca..45c1a6caa206 100644
176 --- a/arch/mips/cavium-octeon/octeon-irq.c
177 +++ b/arch/mips/cavium-octeon/octeon-irq.c
178 @@ -635,7 +635,7 @@ static void octeon_irq_cpu_offline_ciu(struct irq_data *data)
179 cpumask_clear(&new_affinity);
180 cpumask_set_cpu(cpumask_first(cpu_online_mask), &new_affinity);
181 }
182 - __irq_set_affinity_locked(data, &new_affinity);
183 + irq_set_affinity_locked(data, &new_affinity, false);
184 }
185
186 static int octeon_irq_ciu_set_affinity(struct irq_data *data,
187 diff --git a/arch/mips/lantiq/dts/easy50712.dts b/arch/mips/lantiq/dts/easy50712.dts
188 index fac1f5b178eb..143b8a37b5e4 100644
189 --- a/arch/mips/lantiq/dts/easy50712.dts
190 +++ b/arch/mips/lantiq/dts/easy50712.dts
191 @@ -8,6 +8,7 @@
192 };
193
194 memory@0 {
195 + device_type = "memory";
196 reg = <0x0 0x2000000>;
197 };
198
199 diff --git a/arch/mips/ralink/dts/mt7620a_eval.dts b/arch/mips/ralink/dts/mt7620a_eval.dts
200 index 35eb874ab7f1..709f58132f5c 100644
201 --- a/arch/mips/ralink/dts/mt7620a_eval.dts
202 +++ b/arch/mips/ralink/dts/mt7620a_eval.dts
203 @@ -7,6 +7,7 @@
204 model = "Ralink MT7620A evaluation board";
205
206 memory@0 {
207 + device_type = "memory";
208 reg = <0x0 0x2000000>;
209 };
210
211 diff --git a/arch/mips/ralink/dts/rt2880_eval.dts b/arch/mips/ralink/dts/rt2880_eval.dts
212 index 322d7002595b..0a685db093d4 100644
213 --- a/arch/mips/ralink/dts/rt2880_eval.dts
214 +++ b/arch/mips/ralink/dts/rt2880_eval.dts
215 @@ -7,6 +7,7 @@
216 model = "Ralink RT2880 evaluation board";
217
218 memory@0 {
219 + device_type = "memory";
220 reg = <0x8000000 0x2000000>;
221 };
222
223 diff --git a/arch/mips/ralink/dts/rt3052_eval.dts b/arch/mips/ralink/dts/rt3052_eval.dts
224 index 0ac73ea28198..ec9e9a035541 100644
225 --- a/arch/mips/ralink/dts/rt3052_eval.dts
226 +++ b/arch/mips/ralink/dts/rt3052_eval.dts
227 @@ -7,6 +7,7 @@
228 model = "Ralink RT3052 evaluation board";
229
230 memory@0 {
231 + device_type = "memory";
232 reg = <0x0 0x2000000>;
233 };
234
235 diff --git a/arch/mips/ralink/dts/rt3883_eval.dts b/arch/mips/ralink/dts/rt3883_eval.dts
236 index 2fa6b330bf4f..e8df21a5d10d 100644
237 --- a/arch/mips/ralink/dts/rt3883_eval.dts
238 +++ b/arch/mips/ralink/dts/rt3883_eval.dts
239 @@ -7,6 +7,7 @@
240 model = "Ralink RT3883 evaluation board";
241
242 memory@0 {
243 + device_type = "memory";
244 reg = <0x0 0x2000000>;
245 };
246
247 diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h
248 index cc2290a3cace..c6ee86542fec 100644
249 --- a/arch/parisc/include/asm/processor.h
250 +++ b/arch/parisc/include/asm/processor.h
251 @@ -53,6 +53,8 @@
252 #define STACK_TOP TASK_SIZE
253 #define STACK_TOP_MAX DEFAULT_TASK_SIZE
254
255 +#define STACK_SIZE_MAX (1 << 30) /* 1 GB */
256 +
257 #endif
258
259 #ifndef __ASSEMBLY__
260 diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
261 index 967fd23ace78..56a4a5d205af 100644
262 --- a/arch/powerpc/Makefile
263 +++ b/arch/powerpc/Makefile
264 @@ -97,7 +97,9 @@ CFLAGS-$(CONFIG_POWER7_CPU) += $(call cc-option,-mcpu=power7)
265
266 CFLAGS-$(CONFIG_TUNE_CELL) += $(call cc-option,-mtune=cell)
267
268 -KBUILD_CPPFLAGS += -Iarch/$(ARCH)
269 +asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
270 +
271 +KBUILD_CPPFLAGS += -Iarch/$(ARCH) $(asinstr)
272 KBUILD_AFLAGS += -Iarch/$(ARCH)
273 KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y)
274 CPP = $(CC) -E $(KBUILD_CFLAGS)
275 diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
276 index 2f1b6c5f8174..22cee04a47fc 100644
277 --- a/arch/powerpc/include/asm/ppc_asm.h
278 +++ b/arch/powerpc/include/asm/ppc_asm.h
279 @@ -390,11 +390,16 @@ n:
280 * ld rY,ADDROFF(name)(rX)
281 */
282 #ifdef __powerpc64__
283 +#ifdef HAVE_AS_ATHIGH
284 +#define __AS_ATHIGH high
285 +#else
286 +#define __AS_ATHIGH h
287 +#endif
288 #define LOAD_REG_IMMEDIATE(reg,expr) \
289 lis reg,(expr)@highest; \
290 ori reg,reg,(expr)@higher; \
291 rldicr reg,reg,32,31; \
292 - oris reg,reg,(expr)@h; \
293 + oris reg,reg,(expr)@__AS_ATHIGH; \
294 ori reg,reg,(expr)@l;
295
296 #define LOAD_REG_ADDR(reg,name) \
297 diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
298 index 1e1c995ddacc..d55357ee9028 100644
299 --- a/arch/powerpc/kernel/process.c
300 +++ b/arch/powerpc/kernel/process.c
301 @@ -948,6 +948,16 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src)
302 flush_altivec_to_thread(src);
303 flush_vsx_to_thread(src);
304 flush_spe_to_thread(src);
305 + /*
306 + * Flush TM state out so we can copy it. __switch_to_tm() does this
307 + * flush but it removes the checkpointed state from the current CPU and
308 + * transitions the CPU out of TM mode. Hence we need to call
309 + * tm_recheckpoint_new_task() (on the same task) to restore the
310 + * checkpointed state back and the TM mode.
311 + */
312 + __switch_to_tm(src);
313 + tm_recheckpoint_new_task(src);
314 +
315 *dst = *src;
316 return 0;
317 }
318 diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c
319 index 2a245b55bb71..fd104db9cea1 100644
320 --- a/arch/s390/crypto/aes_s390.c
321 +++ b/arch/s390/crypto/aes_s390.c
322 @@ -818,6 +818,9 @@ static int ctr_aes_crypt(struct blkcipher_desc *desc, long func,
323 else
324 memcpy(walk->iv, ctrptr, AES_BLOCK_SIZE);
325 spin_unlock(&ctrblk_lock);
326 + } else {
327 + if (!nbytes)
328 + memcpy(walk->iv, ctrptr, AES_BLOCK_SIZE);
329 }
330 /*
331 * final block may be < AES_BLOCK_SIZE, copy only nbytes
332 diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c
333 index 2d96e68febb2..f2d6cccddcf8 100644
334 --- a/arch/s390/crypto/des_s390.c
335 +++ b/arch/s390/crypto/des_s390.c
336 @@ -429,6 +429,9 @@ static int ctr_desall_crypt(struct blkcipher_desc *desc, long func,
337 else
338 memcpy(walk->iv, ctrptr, DES_BLOCK_SIZE);
339 spin_unlock(&ctrblk_lock);
340 + } else {
341 + if (!nbytes)
342 + memcpy(walk->iv, ctrptr, DES_BLOCK_SIZE);
343 }
344 /* final block may be < DES_BLOCK_SIZE, copy only nbytes */
345 if (nbytes) {
346 diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
347 index a8091216963b..68c05398bba9 100644
348 --- a/arch/x86/include/asm/hugetlb.h
349 +++ b/arch/x86/include/asm/hugetlb.h
350 @@ -52,6 +52,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
351 static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
352 unsigned long addr, pte_t *ptep)
353 {
354 + ptep_clear_flush(vma, addr, ptep);
355 }
356
357 static inline int huge_pte_none(pte_t pte)
358 diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c
359 index af1d14a9ebda..dcbbaa165bde 100644
360 --- a/arch/x86/kernel/ldt.c
361 +++ b/arch/x86/kernel/ldt.c
362 @@ -20,6 +20,8 @@
363 #include <asm/mmu_context.h>
364 #include <asm/syscalls.h>
365
366 +int sysctl_ldt16 = 0;
367 +
368 #ifdef CONFIG_SMP
369 static void flush_ldt(void *current_mm)
370 {
371 @@ -234,7 +236,7 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode)
372 * IRET leaking the high bits of the kernel stack address.
373 */
374 #ifdef CONFIG_X86_64
375 - if (!ldt_info.seg_32bit) {
376 + if (!ldt_info.seg_32bit && !sysctl_ldt16) {
377 error = -EINVAL;
378 goto out_unlock;
379 }
380 diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
381 index 0faad646f5fd..0f134c7cfc24 100644
382 --- a/arch/x86/vdso/vdso32-setup.c
383 +++ b/arch/x86/vdso/vdso32-setup.c
384 @@ -41,6 +41,7 @@ enum {
385 #ifdef CONFIG_X86_64
386 #define vdso_enabled sysctl_vsyscall32
387 #define arch_setup_additional_pages syscall32_setup_pages
388 +extern int sysctl_ldt16;
389 #endif
390
391 /*
392 @@ -380,6 +381,13 @@ static ctl_table abi_table2[] = {
393 .mode = 0644,
394 .proc_handler = proc_dointvec
395 },
396 + {
397 + .procname = "ldt16",
398 + .data = &sysctl_ldt16,
399 + .maxlen = sizeof(int),
400 + .mode = 0644,
401 + .proc_handler = proc_dointvec
402 + },
403 {}
404 };
405
406 diff --git a/crypto/crypto_wq.c b/crypto/crypto_wq.c
407 index adad92a44ba2..2f1b8d12952a 100644
408 --- a/crypto/crypto_wq.c
409 +++ b/crypto/crypto_wq.c
410 @@ -33,7 +33,7 @@ static void __exit crypto_wq_exit(void)
411 destroy_workqueue(kcrypto_wq);
412 }
413
414 -module_init(crypto_wq_init);
415 +subsys_initcall(crypto_wq_init);
416 module_exit(crypto_wq_exit);
417
418 MODULE_LICENSE("GPL");
419 diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
420 index cb9629638def..76da257cfc28 100644
421 --- a/drivers/acpi/blacklist.c
422 +++ b/drivers/acpi/blacklist.c
423 @@ -327,6 +327,19 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
424 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T500"),
425 },
426 },
427 + /*
428 + * Without this this EEEpc exports a non working WMI interface, with
429 + * this it exports a working "good old" eeepc_laptop interface, fixing
430 + * both brightness control, and rfkill not working.
431 + */
432 + {
433 + .callback = dmi_enable_osi_linux,
434 + .ident = "Asus EEE PC 1015PX",
435 + .matches = {
436 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
437 + DMI_MATCH(DMI_PRODUCT_NAME, "1015PX"),
438 + },
439 + },
440 {}
441 };
442
443 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
444 index 9cf616b5210b..bf00fbcde8ad 100644
445 --- a/drivers/ata/libata-core.c
446 +++ b/drivers/ata/libata-core.c
447 @@ -6300,6 +6300,8 @@ int ata_host_activate(struct ata_host *host, int irq,
448 static void ata_port_detach(struct ata_port *ap)
449 {
450 unsigned long flags;
451 + struct ata_link *link;
452 + struct ata_device *dev;
453
454 if (!ap->ops->error_handler)
455 goto skip_eh;
456 @@ -6319,6 +6321,13 @@ static void ata_port_detach(struct ata_port *ap)
457 cancel_delayed_work_sync(&ap->hotplug_task);
458
459 skip_eh:
460 + /* clean up zpodd on port removal */
461 + ata_for_each_link(link, ap, HOST_FIRST) {
462 + ata_for_each_dev(dev, link, ALL) {
463 + if (zpodd_dev_enabled(dev))
464 + zpodd_exit(dev);
465 + }
466 + }
467 if (ap->pmp_link) {
468 int i;
469 for (i = 0; i < SATA_PMP_MAX_PORTS; i++)
470 diff --git a/drivers/ata/pata_at91.c b/drivers/ata/pata_at91.c
471 index 033f3f4c20ad..fa288597f01b 100644
472 --- a/drivers/ata/pata_at91.c
473 +++ b/drivers/ata/pata_at91.c
474 @@ -408,12 +408,13 @@ static int pata_at91_probe(struct platform_device *pdev)
475
476 host->private_data = info;
477
478 - return ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0,
479 - gpio_is_valid(irq) ? ata_sff_interrupt : NULL,
480 - irq_flags, &pata_at91_sht);
481 + ret = ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0,
482 + gpio_is_valid(irq) ? ata_sff_interrupt : NULL,
483 + irq_flags, &pata_at91_sht);
484 + if (ret)
485 + goto err_put;
486
487 - if (!ret)
488 - return 0;
489 + return 0;
490
491 err_put:
492 clk_put(info->mck);
493 diff --git a/drivers/base/dd.c b/drivers/base/dd.c
494 index 06051767393f..8a8d611f2021 100644
495 --- a/drivers/base/dd.c
496 +++ b/drivers/base/dd.c
497 @@ -52,6 +52,7 @@ static DEFINE_MUTEX(deferred_probe_mutex);
498 static LIST_HEAD(deferred_probe_pending_list);
499 static LIST_HEAD(deferred_probe_active_list);
500 static struct workqueue_struct *deferred_wq;
501 +static atomic_t deferred_trigger_count = ATOMIC_INIT(0);
502
503 /**
504 * deferred_probe_work_func() - Retry probing devices in the active list.
505 @@ -135,6 +136,17 @@ static bool driver_deferred_probe_enable = false;
506 * This functions moves all devices from the pending list to the active
507 * list and schedules the deferred probe workqueue to process them. It
508 * should be called anytime a driver is successfully bound to a device.
509 + *
510 + * Note, there is a race condition in multi-threaded probe. In the case where
511 + * more than one device is probing at the same time, it is possible for one
512 + * probe to complete successfully while another is about to defer. If the second
513 + * depends on the first, then it will get put on the pending list after the
514 + * trigger event has already occured and will be stuck there.
515 + *
516 + * The atomic 'deferred_trigger_count' is used to determine if a successful
517 + * trigger has occurred in the midst of probing a driver. If the trigger count
518 + * changes in the midst of a probe, then deferred processing should be triggered
519 + * again.
520 */
521 static void driver_deferred_probe_trigger(void)
522 {
523 @@ -147,6 +159,7 @@ static void driver_deferred_probe_trigger(void)
524 * into the active list so they can be retried by the workqueue
525 */
526 mutex_lock(&deferred_probe_mutex);
527 + atomic_inc(&deferred_trigger_count);
528 list_splice_tail_init(&deferred_probe_pending_list,
529 &deferred_probe_active_list);
530 mutex_unlock(&deferred_probe_mutex);
531 @@ -265,6 +278,7 @@ static DECLARE_WAIT_QUEUE_HEAD(probe_waitqueue);
532 static int really_probe(struct device *dev, struct device_driver *drv)
533 {
534 int ret = 0;
535 + int local_trigger_count = atomic_read(&deferred_trigger_count);
536
537 atomic_inc(&probe_count);
538 pr_debug("bus: '%s': %s: probing driver %s with device %s\n",
539 @@ -310,6 +324,9 @@ probe_failed:
540 /* Driver requested deferred probing */
541 dev_info(dev, "Driver %s requests probe deferral\n", drv->name);
542 driver_deferred_probe_add(dev);
543 + /* Did a trigger occur while probing? Need to re-trigger if yes */
544 + if (local_trigger_count != atomic_read(&deferred_trigger_count))
545 + driver_deferred_probe_trigger();
546 } else if (ret != -ENODEV && ret != -ENXIO) {
547 /* driver matched but the probe failed */
548 printk(KERN_WARNING
549 diff --git a/drivers/base/topology.c b/drivers/base/topology.c
550 index ae989c57cd5e..bcd19886fa1a 100644
551 --- a/drivers/base/topology.c
552 +++ b/drivers/base/topology.c
553 @@ -40,8 +40,7 @@
554 static ssize_t show_##name(struct device *dev, \
555 struct device_attribute *attr, char *buf) \
556 { \
557 - unsigned int cpu = dev->id; \
558 - return sprintf(buf, "%d\n", topology_##name(cpu)); \
559 + return sprintf(buf, "%d\n", topology_##name(dev->id)); \
560 }
561
562 #if defined(topology_thread_cpumask) || defined(topology_core_cpumask) || \
563 diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
564 index 1735b0d17e29..ddd9a098bc67 100644
565 --- a/drivers/block/xen-blkfront.c
566 +++ b/drivers/block/xen-blkfront.c
567 @@ -104,7 +104,7 @@ struct blkfront_info
568 struct work_struct work;
569 struct gnttab_free_callback callback;
570 struct blk_shadow shadow[BLK_RING_SIZE];
571 - struct list_head persistent_gnts;
572 + struct list_head grants;
573 unsigned int persistent_gnts_c;
574 unsigned long shadow_free;
575 unsigned int feature_flush;
576 @@ -175,15 +175,17 @@ static int fill_grant_buffer(struct blkfront_info *info, int num)
577 if (!gnt_list_entry)
578 goto out_of_memory;
579
580 - granted_page = alloc_page(GFP_NOIO);
581 - if (!granted_page) {
582 - kfree(gnt_list_entry);
583 - goto out_of_memory;
584 + if (info->feature_persistent) {
585 + granted_page = alloc_page(GFP_NOIO);
586 + if (!granted_page) {
587 + kfree(gnt_list_entry);
588 + goto out_of_memory;
589 + }
590 + gnt_list_entry->pfn = page_to_pfn(granted_page);
591 }
592
593 - gnt_list_entry->pfn = page_to_pfn(granted_page);
594 gnt_list_entry->gref = GRANT_INVALID_REF;
595 - list_add(&gnt_list_entry->node, &info->persistent_gnts);
596 + list_add(&gnt_list_entry->node, &info->grants);
597 i++;
598 }
599
600 @@ -191,9 +193,10 @@ static int fill_grant_buffer(struct blkfront_info *info, int num)
601
602 out_of_memory:
603 list_for_each_entry_safe(gnt_list_entry, n,
604 - &info->persistent_gnts, node) {
605 + &info->grants, node) {
606 list_del(&gnt_list_entry->node);
607 - __free_page(pfn_to_page(gnt_list_entry->pfn));
608 + if (info->feature_persistent)
609 + __free_page(pfn_to_page(gnt_list_entry->pfn));
610 kfree(gnt_list_entry);
611 i--;
612 }
613 @@ -202,14 +205,14 @@ out_of_memory:
614 }
615
616 static struct grant *get_grant(grant_ref_t *gref_head,
617 + unsigned long pfn,
618 struct blkfront_info *info)
619 {
620 struct grant *gnt_list_entry;
621 unsigned long buffer_mfn;
622
623 - BUG_ON(list_empty(&info->persistent_gnts));
624 - gnt_list_entry = list_first_entry(&info->persistent_gnts, struct grant,
625 - node);
626 + BUG_ON(list_empty(&info->grants));
627 + gnt_list_entry = list_first_entry(&info->grants, struct grant, node);
628 list_del(&gnt_list_entry->node);
629
630 if (gnt_list_entry->gref != GRANT_INVALID_REF) {
631 @@ -220,6 +223,10 @@ static struct grant *get_grant(grant_ref_t *gref_head,
632 /* Assign a gref to this page */
633 gnt_list_entry->gref = gnttab_claim_grant_reference(gref_head);
634 BUG_ON(gnt_list_entry->gref == -ENOSPC);
635 + if (!info->feature_persistent) {
636 + BUG_ON(!pfn);
637 + gnt_list_entry->pfn = pfn;
638 + }
639 buffer_mfn = pfn_to_mfn(gnt_list_entry->pfn);
640 gnttab_grant_foreign_access_ref(gnt_list_entry->gref,
641 info->xbdev->otherend_id,
642 @@ -430,12 +437,12 @@ static int blkif_queue_request(struct request *req)
643 fsect = sg->offset >> 9;
644 lsect = fsect + (sg->length >> 9) - 1;
645
646 - gnt_list_entry = get_grant(&gref_head, info);
647 + gnt_list_entry = get_grant(&gref_head, page_to_pfn(sg_page(sg)), info);
648 ref = gnt_list_entry->gref;
649
650 info->shadow[id].grants_used[i] = gnt_list_entry;
651
652 - if (rq_data_dir(req)) {
653 + if (rq_data_dir(req) && info->feature_persistent) {
654 char *bvec_data;
655 void *shared_data;
656
657 @@ -828,16 +835,17 @@ static void blkif_free(struct blkfront_info *info, int suspend)
658 blk_stop_queue(info->rq);
659
660 /* Remove all persistent grants */
661 - if (!list_empty(&info->persistent_gnts)) {
662 + if (!list_empty(&info->grants)) {
663 list_for_each_entry_safe(persistent_gnt, n,
664 - &info->persistent_gnts, node) {
665 + &info->grants, node) {
666 list_del(&persistent_gnt->node);
667 if (persistent_gnt->gref != GRANT_INVALID_REF) {
668 gnttab_end_foreign_access(persistent_gnt->gref,
669 0, 0UL);
670 info->persistent_gnts_c--;
671 }
672 - __free_page(pfn_to_page(persistent_gnt->pfn));
673 + if (info->feature_persistent)
674 + __free_page(pfn_to_page(persistent_gnt->pfn));
675 kfree(persistent_gnt);
676 }
677 }
678 @@ -874,7 +882,7 @@ static void blkif_completion(struct blk_shadow *s, struct blkfront_info *info,
679
680 nseg = s->req.u.rw.nr_segments;
681
682 - if (bret->operation == BLKIF_OP_READ) {
683 + if (bret->operation == BLKIF_OP_READ && info->feature_persistent) {
684 /*
685 * Copy the data received from the backend into the bvec.
686 * Since bv_offset can be different than 0, and bv_len different
687 @@ -894,9 +902,30 @@ static void blkif_completion(struct blk_shadow *s, struct blkfront_info *info,
688 }
689 }
690 /* Add the persistent grant into the list of free grants */
691 - for (i = 0; i < s->req.u.rw.nr_segments; i++) {
692 - list_add(&s->grants_used[i]->node, &info->persistent_gnts);
693 - info->persistent_gnts_c++;
694 + for (i = 0; i < nseg; i++) {
695 + if (gnttab_query_foreign_access(s->grants_used[i]->gref)) {
696 + /*
697 + * If the grant is still mapped by the backend (the
698 + * backend has chosen to make this grant persistent)
699 + * we add it at the head of the list, so it will be
700 + * reused first.
701 + */
702 + if (!info->feature_persistent)
703 + pr_alert_ratelimited("backed has not unmapped grant: %u\n",
704 + s->grants_used[i]->gref);
705 + list_add(&s->grants_used[i]->node, &info->grants);
706 + info->persistent_gnts_c++;
707 + } else {
708 + /*
709 + * If the grant is not mapped by the backend we end the
710 + * foreign access and add it to the tail of the list,
711 + * so it will not be picked again unless we run out of
712 + * persistent grants.
713 + */
714 + gnttab_end_foreign_access(s->grants_used[i]->gref, 0, 0UL);
715 + s->grants_used[i]->gref = GRANT_INVALID_REF;
716 + list_add_tail(&s->grants_used[i]->node, &info->grants);
717 + }
718 }
719 }
720
721 @@ -1034,12 +1063,6 @@ static int setup_blkring(struct xenbus_device *dev,
722 for (i = 0; i < BLK_RING_SIZE; i++)
723 sg_init_table(info->shadow[i].sg, BLKIF_MAX_SEGMENTS_PER_REQUEST);
724
725 - /* Allocate memory for grants */
726 - err = fill_grant_buffer(info, BLK_RING_SIZE *
727 - BLKIF_MAX_SEGMENTS_PER_REQUEST);
728 - if (err)
729 - goto fail;
730 -
731 err = xenbus_grant_ring(dev, virt_to_mfn(info->ring.sring));
732 if (err < 0) {
733 free_page((unsigned long)sring);
734 @@ -1198,7 +1221,7 @@ static int blkfront_probe(struct xenbus_device *dev,
735 spin_lock_init(&info->io_lock);
736 info->xbdev = dev;
737 info->vdevice = vdevice;
738 - INIT_LIST_HEAD(&info->persistent_gnts);
739 + INIT_LIST_HEAD(&info->grants);
740 info->persistent_gnts_c = 0;
741 info->connected = BLKIF_STATE_DISCONNECTED;
742 INIT_WORK(&info->work, blkif_restart_queue);
743 @@ -1227,7 +1250,8 @@ static int blkif_recover(struct blkfront_info *info)
744 int i;
745 struct blkif_request *req;
746 struct blk_shadow *copy;
747 - int j;
748 + unsigned int persistent;
749 + int j, rc;
750
751 /* Stage 1: Make a safe copy of the shadow state. */
752 copy = kmemdup(info->shadow, sizeof(info->shadow),
753 @@ -1242,6 +1266,24 @@ static int blkif_recover(struct blkfront_info *info)
754 info->shadow_free = info->ring.req_prod_pvt;
755 info->shadow[BLK_RING_SIZE-1].req.u.rw.id = 0x0fffffff;
756
757 + /* Check if the backend supports persistent grants */
758 + rc = xenbus_gather(XBT_NIL, info->xbdev->otherend,
759 + "feature-persistent", "%u", &persistent,
760 + NULL);
761 + if (rc)
762 + info->feature_persistent = 0;
763 + else
764 + info->feature_persistent = persistent;
765 +
766 + /* Allocate memory for grants */
767 + rc = fill_grant_buffer(info, BLK_RING_SIZE *
768 + BLKIF_MAX_SEGMENTS_PER_REQUEST);
769 + if (rc) {
770 + xenbus_dev_fatal(info->xbdev, rc, "setting grant buffer failed");
771 + kfree(copy);
772 + return rc;
773 + }
774 +
775 /* Stage 3: Find pending requests and requeue them. */
776 for (i = 0; i < BLK_RING_SIZE; i++) {
777 /* Not in use? */
778 @@ -1306,8 +1348,12 @@ static int blkfront_resume(struct xenbus_device *dev)
779 blkif_free(info, info->connected == BLKIF_STATE_CONNECTED);
780
781 err = talk_to_blkback(dev, info);
782 - if (info->connected == BLKIF_STATE_SUSPENDED && !err)
783 - err = blkif_recover(info);
784 +
785 + /*
786 + * We have to wait for the backend to switch to
787 + * connected state, since we want to read which
788 + * features it supports.
789 + */
790
791 return err;
792 }
793 @@ -1411,9 +1457,16 @@ static void blkfront_connect(struct blkfront_info *info)
794 sectors);
795 set_capacity(info->gd, sectors);
796 revalidate_disk(info->gd);
797 + return;
798
799 - /* fall through */
800 case BLKIF_STATE_SUSPENDED:
801 + /*
802 + * If we are recovering from suspension, we need to wait
803 + * for the backend to announce it's features before
804 + * reconnecting, we need to know if the backend supports
805 + * persistent grants.
806 + */
807 + blkif_recover(info);
808 return;
809
810 default:
811 @@ -1481,6 +1534,14 @@ static void blkfront_connect(struct blkfront_info *info)
812 else
813 info->feature_persistent = persistent;
814
815 + /* Allocate memory for grants */
816 + err = fill_grant_buffer(info, BLK_RING_SIZE *
817 + BLKIF_MAX_SEGMENTS_PER_REQUEST);
818 + if (err) {
819 + xenbus_dev_fatal(info->xbdev, err, "setting grant buffer failed");
820 + return;
821 + }
822 +
823 err = xlvbd_alloc_gendisk(sectors, info, binfo, sector_size);
824 if (err) {
825 xenbus_dev_fatal(info->xbdev, err, "xlvbd_add at %s",
826 diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c
827 index 0a327f4154a2..2acabdaecec8 100644
828 --- a/drivers/bluetooth/ath3k.c
829 +++ b/drivers/bluetooth/ath3k.c
830 @@ -82,6 +82,7 @@ static struct usb_device_id ath3k_table[] = {
831 { USB_DEVICE(0x04CA, 0x3004) },
832 { USB_DEVICE(0x04CA, 0x3005) },
833 { USB_DEVICE(0x04CA, 0x3006) },
834 + { USB_DEVICE(0x04CA, 0x3007) },
835 { USB_DEVICE(0x04CA, 0x3008) },
836 { USB_DEVICE(0x13d3, 0x3362) },
837 { USB_DEVICE(0x0CF3, 0xE004) },
838 @@ -124,6 +125,7 @@ static struct usb_device_id ath3k_blist_tbl[] = {
839 { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
840 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
841 { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
842 + { USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
843 { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
844 { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
845 { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
846 diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
847 index 58491f1b2799..45aa8e760124 100644
848 --- a/drivers/bluetooth/btusb.c
849 +++ b/drivers/bluetooth/btusb.c
850 @@ -146,6 +146,7 @@ static struct usb_device_id blacklist_table[] = {
851 { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
852 { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
853 { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
854 + { USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
855 { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
856 { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 },
857 { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 },
858 diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
859 index 8740f46b4d0d..5dcc8305abd1 100644
860 --- a/drivers/bus/mvebu-mbus.c
861 +++ b/drivers/bus/mvebu-mbus.c
862 @@ -250,12 +250,6 @@ static int mvebu_mbus_window_conflicts(struct mvebu_mbus_state *mbus,
863 */
864 if ((u64)base < wend && end > wbase)
865 return 0;
866 -
867 - /*
868 - * Check if target/attribute conflicts
869 - */
870 - if (target == wtarget && attr == wattr)
871 - return 0;
872 }
873
874 return 1;
875 diff --git a/drivers/char/ipmi/ipmi_kcs_sm.c b/drivers/char/ipmi/ipmi_kcs_sm.c
876 index e53fc24c6af3..e1ddcf938519 100644
877 --- a/drivers/char/ipmi/ipmi_kcs_sm.c
878 +++ b/drivers/char/ipmi/ipmi_kcs_sm.c
879 @@ -251,8 +251,9 @@ static inline int check_obf(struct si_sm_data *kcs, unsigned char status,
880 if (!GET_STATUS_OBF(status)) {
881 kcs->obf_timeout -= time;
882 if (kcs->obf_timeout < 0) {
883 - start_error_recovery(kcs, "OBF not ready in time");
884 - return 1;
885 + kcs->obf_timeout = OBF_RETRY_TIMEOUT;
886 + start_error_recovery(kcs, "OBF not ready in time");
887 + return 1;
888 }
889 return 0;
890 }
891 diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
892 index af4b23ffc5a6..40b3f756f904 100644
893 --- a/drivers/char/ipmi/ipmi_si_intf.c
894 +++ b/drivers/char/ipmi/ipmi_si_intf.c
895 @@ -244,6 +244,9 @@ struct smi_info {
896 /* The timer for this si. */
897 struct timer_list si_timer;
898
899 + /* This flag is set, if the timer is running (timer_pending() isn't enough) */
900 + bool timer_running;
901 +
902 /* The time (in jiffies) the last timeout occurred at. */
903 unsigned long last_timeout_jiffies;
904
905 @@ -427,6 +430,13 @@ static void start_clear_flags(struct smi_info *smi_info)
906 smi_info->si_state = SI_CLEARING_FLAGS;
907 }
908
909 +static void smi_mod_timer(struct smi_info *smi_info, unsigned long new_val)
910 +{
911 + smi_info->last_timeout_jiffies = jiffies;
912 + mod_timer(&smi_info->si_timer, new_val);
913 + smi_info->timer_running = true;
914 +}
915 +
916 /*
917 * When we have a situtaion where we run out of memory and cannot
918 * allocate messages, we just leave them in the BMC and run the system
919 @@ -439,8 +449,7 @@ static inline void disable_si_irq(struct smi_info *smi_info)
920 start_disable_irq(smi_info);
921 smi_info->interrupt_disabled = 1;
922 if (!atomic_read(&smi_info->stop_operation))
923 - mod_timer(&smi_info->si_timer,
924 - jiffies + SI_TIMEOUT_JIFFIES);
925 + smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES);
926 }
927 }
928
929 @@ -900,15 +909,7 @@ static void sender(void *send_info,
930 list_add_tail(&msg->link, &smi_info->xmit_msgs);
931
932 if (smi_info->si_state == SI_NORMAL && smi_info->curr_msg == NULL) {
933 - /*
934 - * last_timeout_jiffies is updated here to avoid
935 - * smi_timeout() handler passing very large time_diff
936 - * value to smi_event_handler() that causes
937 - * the send command to abort.
938 - */
939 - smi_info->last_timeout_jiffies = jiffies;
940 -
941 - mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES);
942 + smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES);
943
944 if (smi_info->thread)
945 wake_up_process(smi_info->thread);
946 @@ -997,6 +998,17 @@ static int ipmi_thread(void *data)
947
948 spin_lock_irqsave(&(smi_info->si_lock), flags);
949 smi_result = smi_event_handler(smi_info, 0);
950 +
951 + /*
952 + * If the driver is doing something, there is a possible
953 + * race with the timer. If the timer handler see idle,
954 + * and the thread here sees something else, the timer
955 + * handler won't restart the timer even though it is
956 + * required. So start it here if necessary.
957 + */
958 + if (smi_result != SI_SM_IDLE && !smi_info->timer_running)
959 + smi_mod_timer(smi_info, jiffies + SI_TIMEOUT_JIFFIES);
960 +
961 spin_unlock_irqrestore(&(smi_info->si_lock), flags);
962 busy_wait = ipmi_thread_busy_wait(smi_result, smi_info,
963 &busy_until);
964 @@ -1066,10 +1078,6 @@ static void smi_timeout(unsigned long data)
965 * SI_USEC_PER_JIFFY);
966 smi_result = smi_event_handler(smi_info, time_diff);
967
968 - spin_unlock_irqrestore(&(smi_info->si_lock), flags);
969 -
970 - smi_info->last_timeout_jiffies = jiffies_now;
971 -
972 if ((smi_info->irq) && (!smi_info->interrupt_disabled)) {
973 /* Running with interrupts, only do long timeouts. */
974 timeout = jiffies + SI_TIMEOUT_JIFFIES;
975 @@ -1091,7 +1099,10 @@ static void smi_timeout(unsigned long data)
976
977 do_mod_timer:
978 if (smi_result != SI_SM_IDLE)
979 - mod_timer(&(smi_info->si_timer), timeout);
980 + smi_mod_timer(smi_info, timeout);
981 + else
982 + smi_info->timer_running = false;
983 + spin_unlock_irqrestore(&(smi_info->si_lock), flags);
984 }
985
986 static irqreturn_t si_irq_handler(int irq, void *data)
987 @@ -1139,8 +1150,7 @@ static int smi_start_processing(void *send_info,
988
989 /* Set up the timer that drives the interface. */
990 setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi);
991 - new_smi->last_timeout_jiffies = jiffies;
992 - mod_timer(&new_smi->si_timer, jiffies + SI_TIMEOUT_JIFFIES);
993 + smi_mod_timer(new_smi, jiffies + SI_TIMEOUT_JIFFIES);
994
995 /*
996 * Check if the user forcefully enabled the daemon.
997 diff --git a/drivers/clk/versatile/clk-vexpress-osc.c b/drivers/clk/versatile/clk-vexpress-osc.c
998 index 256c8be74df8..8b8798bb93f3 100644
999 --- a/drivers/clk/versatile/clk-vexpress-osc.c
1000 +++ b/drivers/clk/versatile/clk-vexpress-osc.c
1001 @@ -102,7 +102,7 @@ void __init vexpress_osc_of_setup(struct device_node *node)
1002
1003 osc = kzalloc(sizeof(*osc), GFP_KERNEL);
1004 if (!osc)
1005 - goto error;
1006 + return;
1007
1008 osc->func = vexpress_config_func_get_by_node(node);
1009 if (!osc->func) {
1010 diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
1011 index 662fcc065821..b7960185919d 100644
1012 --- a/drivers/clocksource/exynos_mct.c
1013 +++ b/drivers/clocksource/exynos_mct.c
1014 @@ -429,8 +429,6 @@ static int __cpuinit exynos4_local_timer_setup(struct clock_event_device *evt)
1015 evt->set_mode = exynos4_tick_set_mode;
1016 evt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
1017 evt->rating = 450;
1018 - clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1),
1019 - 0xf, 0x7fffffff);
1020
1021 exynos4_mct_write(TICK_BASE_CNT, mevt->base + MCT_L_TCNTB_OFFSET);
1022
1023 @@ -448,6 +446,8 @@ static int __cpuinit exynos4_local_timer_setup(struct clock_event_device *evt)
1024 } else {
1025 enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0);
1026 }
1027 + clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1),
1028 + 0xf, 0x7fffffff);
1029
1030 return 0;
1031 }
1032 diff --git a/drivers/crypto/caam/error.c b/drivers/crypto/caam/error.c
1033 index 9f25f5296029..0eabd81e1a90 100644
1034 --- a/drivers/crypto/caam/error.c
1035 +++ b/drivers/crypto/caam/error.c
1036 @@ -16,9 +16,13 @@
1037 char *tmp; \
1038 \
1039 tmp = kmalloc(sizeof(format) + max_alloc, GFP_ATOMIC); \
1040 - sprintf(tmp, format, param); \
1041 - strcat(str, tmp); \
1042 - kfree(tmp); \
1043 + if (likely(tmp)) { \
1044 + sprintf(tmp, format, param); \
1045 + strcat(str, tmp); \
1046 + kfree(tmp); \
1047 + } else { \
1048 + strcat(str, "kmalloc failure in SPRINTFCAT"); \
1049 + } \
1050 }
1051
1052 static void report_jump_idx(u32 status, char *outstr)
1053 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
1054 index 54ae96f7bec6..8814b0dbfc4f 100644
1055 --- a/drivers/gpu/drm/i915/intel_display.c
1056 +++ b/drivers/gpu/drm/i915/intel_display.c
1057 @@ -9123,15 +9123,6 @@ void intel_modeset_init(struct drm_device *dev)
1058 intel_disable_fbc(dev);
1059 }
1060
1061 -static void
1062 -intel_connector_break_all_links(struct intel_connector *connector)
1063 -{
1064 - connector->base.dpms = DRM_MODE_DPMS_OFF;
1065 - connector->base.encoder = NULL;
1066 - connector->encoder->connectors_active = false;
1067 - connector->encoder->base.crtc = NULL;
1068 -}
1069 -
1070 static void intel_enable_pipe_a(struct drm_device *dev)
1071 {
1072 struct intel_connector *connector;
1073 @@ -9213,8 +9204,17 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
1074 if (connector->encoder->base.crtc != &crtc->base)
1075 continue;
1076
1077 - intel_connector_break_all_links(connector);
1078 + connector->base.dpms = DRM_MODE_DPMS_OFF;
1079 + connector->base.encoder = NULL;
1080 }
1081 + /* multiple connectors may have the same encoder:
1082 + * handle them and break crtc link separately */
1083 + list_for_each_entry(connector, &dev->mode_config.connector_list,
1084 + base.head)
1085 + if (connector->encoder->base.crtc == &crtc->base) {
1086 + connector->encoder->base.crtc = NULL;
1087 + connector->encoder->connectors_active = false;
1088 + }
1089
1090 WARN_ON(crtc->active);
1091 crtc->base.enabled = false;
1092 @@ -9285,6 +9285,8 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder)
1093 drm_get_encoder_name(&encoder->base));
1094 encoder->disable(encoder);
1095 }
1096 + encoder->base.crtc = NULL;
1097 + encoder->connectors_active = false;
1098
1099 /* Inconsistent output/port/pipe state happens presumably due to
1100 * a bug in one of the get_hw_state functions. Or someplace else
1101 @@ -9295,8 +9297,8 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder)
1102 base.head) {
1103 if (connector->encoder != encoder)
1104 continue;
1105 -
1106 - intel_connector_break_all_links(connector);
1107 + connector->base.dpms = DRM_MODE_DPMS_OFF;
1108 + connector->base.encoder = NULL;
1109 }
1110 }
1111 /* Enabled encoders without active connectors will be fixed in
1112 diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c b/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
1113 index c728380d3d62..ea19acd20784 100644
1114 --- a/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
1115 +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/fan.c
1116 @@ -54,8 +54,10 @@ nouveau_fan_update(struct nouveau_fan *fan, bool immediate, int target)
1117
1118 /* check that we're not already at the target duty cycle */
1119 duty = fan->get(therm);
1120 - if (duty == target)
1121 - goto done;
1122 + if (duty == target) {
1123 + spin_unlock_irqrestore(&fan->lock, flags);
1124 + return 0;
1125 + }
1126
1127 /* smooth out the fanspeed increase/decrease */
1128 if (!immediate && duty >= 0) {
1129 @@ -73,8 +75,15 @@ nouveau_fan_update(struct nouveau_fan *fan, bool immediate, int target)
1130
1131 nv_debug(therm, "FAN update: %d\n", duty);
1132 ret = fan->set(therm, duty);
1133 - if (ret)
1134 - goto done;
1135 + if (ret) {
1136 + spin_unlock_irqrestore(&fan->lock, flags);
1137 + return ret;
1138 + }
1139 +
1140 + /* fan speed updated, drop the fan lock before grabbing the
1141 + * alarm-scheduling lock and risking a deadlock
1142 + */
1143 + spin_unlock_irqrestore(&fan->lock, flags);
1144
1145 /* schedule next fan update, if not at target speed already */
1146 if (list_empty(&fan->alarm.head) && target != duty) {
1147 @@ -92,8 +101,6 @@ nouveau_fan_update(struct nouveau_fan *fan, bool immediate, int target)
1148 ptimer->alarm(ptimer, delay * 1000 * 1000, &fan->alarm);
1149 }
1150
1151 -done:
1152 - spin_unlock_irqrestore(&fan->lock, flags);
1153 return ret;
1154 }
1155
1156 diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
1157 index d97f20069d3e..5cec3a0c6c85 100644
1158 --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
1159 +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
1160 @@ -372,9 +372,6 @@ bool nouveau_acpi_rom_supported(struct pci_dev *pdev)
1161 acpi_status status;
1162 acpi_handle dhandle, rom_handle;
1163
1164 - if (!nouveau_dsm_priv.dsm_detected && !nouveau_dsm_priv.optimus_detected)
1165 - return false;
1166 -
1167 dhandle = DEVICE_ACPI_HANDLE(&pdev->dev);
1168 if (!dhandle)
1169 return false;
1170 diff --git a/drivers/gpu/drm/radeon/radeon_atpx_handler.c b/drivers/gpu/drm/radeon/radeon_atpx_handler.c
1171 index cbb06d7c89b5..8c44ef57864b 100644
1172 --- a/drivers/gpu/drm/radeon/radeon_atpx_handler.c
1173 +++ b/drivers/gpu/drm/radeon/radeon_atpx_handler.c
1174 @@ -523,6 +523,13 @@ static bool radeon_atpx_detect(void)
1175 has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true);
1176 }
1177
1178 + /* some newer PX laptops mark the dGPU as a non-VGA display device */
1179 + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) {
1180 + vga_count++;
1181 +
1182 + has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true);
1183 + }
1184 +
1185 if (has_atpx && vga_count == 2) {
1186 acpi_get_name(radeon_atpx_priv.atpx.handle, ACPI_FULL_PATHNAME, &buffer);
1187 printk(KERN_INFO "VGA switcheroo: detected switching method %s handle\n",
1188 diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c
1189 index 21d2d5280fc1..5715429279fb 100644
1190 --- a/drivers/gpu/drm/radeon/radeon_uvd.c
1191 +++ b/drivers/gpu/drm/radeon/radeon_uvd.c
1192 @@ -449,6 +449,10 @@ static int radeon_uvd_cs_reloc(struct radeon_cs_parser *p,
1193 cmd = radeon_get_ib_value(p, p->idx) >> 1;
1194
1195 if (cmd < 0x4) {
1196 + if (end <= start) {
1197 + DRM_ERROR("invalid reloc offset %X!\n", offset);
1198 + return -EINVAL;
1199 + }
1200 if ((end - start) < buf_sizes[cmd]) {
1201 DRM_ERROR("buffer to small (%d / %d)!\n",
1202 (unsigned)(end - start), buf_sizes[cmd]);
1203 diff --git a/drivers/gpu/host1x/hw/intr_hw.c b/drivers/gpu/host1x/hw/intr_hw.c
1204 index b592eef1efcb..b083509325e4 100644
1205 --- a/drivers/gpu/host1x/hw/intr_hw.c
1206 +++ b/drivers/gpu/host1x/hw/intr_hw.c
1207 @@ -48,7 +48,7 @@ static irqreturn_t syncpt_thresh_isr(int irq, void *dev_id)
1208 unsigned long reg;
1209 int i, id;
1210
1211 - for (i = 0; i <= BIT_WORD(host->info->nb_pts); i++) {
1212 + for (i = 0; i < DIV_ROUND_UP(host->info->nb_pts, 32); i++) {
1213 reg = host1x_sync_readl(host,
1214 HOST1X_SYNC_SYNCPT_THRESH_CPU0_INT_STATUS(i));
1215 for_each_set_bit(id, &reg, BITS_PER_LONG) {
1216 @@ -65,7 +65,7 @@ static void _host1x_intr_disable_all_syncpt_intrs(struct host1x *host)
1217 {
1218 u32 i;
1219
1220 - for (i = 0; i <= BIT_WORD(host->info->nb_pts); ++i) {
1221 + for (i = 0; i < DIV_ROUND_UP(host->info->nb_pts, 32); ++i) {
1222 host1x_sync_writel(host, 0xffffffffu,
1223 HOST1X_SYNC_SYNCPT_THRESH_INT_DISABLE(i));
1224 host1x_sync_writel(host, 0xffffffffu,
1225 diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
1226 index d4fac934b220..fd02cb79a99c 100644
1227 --- a/drivers/hv/connection.c
1228 +++ b/drivers/hv/connection.c
1229 @@ -55,6 +55,9 @@ static __u32 vmbus_get_next_version(__u32 current_version)
1230 case (VERSION_WIN8):
1231 return VERSION_WIN7;
1232
1233 + case (VERSION_WIN8_1):
1234 + return VERSION_WIN8;
1235 +
1236 case (VERSION_WS2008):
1237 default:
1238 return VERSION_INVAL;
1239 @@ -80,6 +83,9 @@ static int vmbus_negotiate_version(struct vmbus_channel_msginfo *msginfo,
1240 (void *)((unsigned long)vmbus_connection.monitor_pages +
1241 PAGE_SIZE));
1242
1243 + if (version == VERSION_WIN8_1)
1244 + msg->target_vcpu = hv_context.vp_index[smp_processor_id()];
1245 +
1246 /*
1247 * Add to list before we send the request since we may
1248 * receive the response before returning from this routine
1249 diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
1250 index 142e1cb8dea7..361f50b221bd 100644
1251 --- a/drivers/hwmon/emc1403.c
1252 +++ b/drivers/hwmon/emc1403.c
1253 @@ -162,7 +162,7 @@ static ssize_t store_hyst(struct device *dev,
1254 if (retval < 0)
1255 goto fail;
1256
1257 - hyst = val - retval * 1000;
1258 + hyst = retval * 1000 - val;
1259 hyst = DIV_ROUND_CLOSEST(hyst, 1000);
1260 if (hyst < 0 || hyst > 255) {
1261 retval = -ERANGE;
1262 @@ -295,7 +295,7 @@ static int emc1403_detect(struct i2c_client *client,
1263 }
1264
1265 id = i2c_smbus_read_byte_data(client, THERMAL_REVISION_REG);
1266 - if (id != 0x01)
1267 + if (id < 0x01 || id > 0x04)
1268 return -ENODEV;
1269
1270 return 0;
1271 diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
1272 index 49423e913459..d4fe13ee543e 100644
1273 --- a/drivers/i2c/busses/Kconfig
1274 +++ b/drivers/i2c/busses/Kconfig
1275 @@ -109,6 +109,8 @@ config I2C_I801
1276 Avoton (SOC)
1277 Wellsburg (PCH)
1278 Coleto Creek (PCH)
1279 + Wildcat Point-LP (PCH)
1280 + BayTrail (SOC)
1281
1282 This driver can also be built as a module. If so, the module
1283 will be called i2c-i801.
1284 diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c
1285 index c41ca6354fc5..f24a7385260a 100644
1286 --- a/drivers/i2c/busses/i2c-designware-core.c
1287 +++ b/drivers/i2c/busses/i2c-designware-core.c
1288 @@ -380,6 +380,9 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
1289 ic_con &= ~DW_IC_CON_10BITADDR_MASTER;
1290 dw_writel(dev, ic_con, DW_IC_CON);
1291
1292 + /* enforce disabled interrupts (due to HW issues) */
1293 + i2c_dw_disable_int(dev);
1294 +
1295 /* Enable the adapter */
1296 __i2c_dw_enable(dev, true);
1297
1298 diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
1299 index 4ebceed6bc66..783fa75e13ae 100644
1300 --- a/drivers/i2c/busses/i2c-i801.c
1301 +++ b/drivers/i2c/busses/i2c-i801.c
1302 @@ -59,6 +59,8 @@
1303 Wellsburg (PCH) MS 0x8d7e 32 hard yes yes yes
1304 Wellsburg (PCH) MS 0x8d7f 32 hard yes yes yes
1305 Coleto Creek (PCH) 0x23b0 32 hard yes yes yes
1306 + Wildcat Point-LP (PCH) 0x9ca2 32 hard yes yes yes
1307 + BayTrail (SOC) 0x0f12 32 hard yes yes yes
1308
1309 Features supported by this driver:
1310 Software PEC no
1311 @@ -161,6 +163,7 @@
1312 STATUS_ERROR_FLAGS)
1313
1314 /* Older devices have their ID defined in <linux/pci_ids.h> */
1315 +#define PCI_DEVICE_ID_INTEL_BAYTRAIL_SMBUS 0x0f12
1316 #define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS 0x1c22
1317 #define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS 0x1d22
1318 /* Patsburg also has three 'Integrated Device Function' SMBus controllers */
1319 @@ -178,6 +181,7 @@
1320 #define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS1 0x8d7e
1321 #define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS2 0x8d7f
1322 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS 0x9c22
1323 +#define PCI_DEVICE_ID_INTEL_WILDCATPOINT_LP_SMBUS 0x9ca2
1324
1325 struct i801_mux_config {
1326 char *gpio_chip;
1327 @@ -820,6 +824,8 @@ static DEFINE_PCI_DEVICE_TABLE(i801_ids) = {
1328 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS1) },
1329 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS2) },
1330 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COLETOCREEK_SMBUS) },
1331 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WILDCATPOINT_LP_SMBUS) },
1332 + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BAYTRAIL_SMBUS) },
1333 { 0, }
1334 };
1335
1336 diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
1337 index 4ba4a95b6b26..8a806f5c40cf 100644
1338 --- a/drivers/i2c/busses/i2c-rcar.c
1339 +++ b/drivers/i2c/busses/i2c-rcar.c
1340 @@ -541,6 +541,12 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap,
1341
1342 ret = -EINVAL;
1343 for (i = 0; i < num; i++) {
1344 + /* This HW can't send STOP after address phase */
1345 + if (msgs[i].len == 0) {
1346 + ret = -EOPNOTSUPP;
1347 + break;
1348 + }
1349 +
1350 /*-------------- spin lock -----------------*/
1351 spin_lock_irqsave(&priv->lock, flags);
1352
1353 @@ -605,7 +611,8 @@ static int rcar_i2c_master_xfer(struct i2c_adapter *adap,
1354
1355 static u32 rcar_i2c_func(struct i2c_adapter *adap)
1356 {
1357 - return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
1358 + /* This HW can't do SMBUS_QUICK and NOSTART */
1359 + return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
1360 }
1361
1362 static const struct i2c_algorithm rcar_i2c_algo = {
1363 diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
1364 index cab1c91b75a3..a72aad9561b0 100644
1365 --- a/drivers/i2c/busses/i2c-s3c2410.c
1366 +++ b/drivers/i2c/busses/i2c-s3c2410.c
1367 @@ -1204,10 +1204,10 @@ static int s3c24xx_i2c_resume(struct device *dev)
1368 struct platform_device *pdev = to_platform_device(dev);
1369 struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev);
1370
1371 - i2c->suspended = 0;
1372 clk_prepare_enable(i2c->clk);
1373 s3c24xx_i2c_init(i2c);
1374 clk_disable_unprepare(i2c->clk);
1375 + i2c->suspended = 0;
1376
1377 return 0;
1378 }
1379 diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1380 index fe4c61e219f3..111ac381b40b 100644
1381 --- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1382 +++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
1383 @@ -660,6 +660,7 @@ static int inv_mpu_probe(struct i2c_client *client,
1384 {
1385 struct inv_mpu6050_state *st;
1386 struct iio_dev *indio_dev;
1387 + struct inv_mpu6050_platform_data *pdata;
1388 int result;
1389
1390 if (!i2c_check_functionality(client->adapter,
1391 @@ -675,8 +676,10 @@ static int inv_mpu_probe(struct i2c_client *client,
1392 }
1393 st = iio_priv(indio_dev);
1394 st->client = client;
1395 - st->plat_data = *(struct inv_mpu6050_platform_data
1396 - *)dev_get_platdata(&client->dev);
1397 + pdata = (struct inv_mpu6050_platform_data
1398 + *)dev_get_platdata(&client->dev);
1399 + if (pdata)
1400 + st->plat_data = *pdata;
1401 /* power is turned on inside check chip type*/
1402 result = inv_check_and_setup_chip(st, id);
1403 if (result)
1404 diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
1405 index ce6c603a3cc9..988e29d18bb4 100644
1406 --- a/drivers/infiniband/ulp/isert/ib_isert.c
1407 +++ b/drivers/infiniband/ulp/isert/ib_isert.c
1408 @@ -27,6 +27,7 @@
1409 #include <target/target_core_base.h>
1410 #include <target/target_core_fabric.h>
1411 #include <target/iscsi/iscsi_transport.h>
1412 +#include <linux/semaphore.h>
1413
1414 #include "isert_proto.h"
1415 #include "ib_isert.h"
1416 @@ -459,11 +460,11 @@ isert_connect_request(struct rdma_cm_id *cma_id, struct rdma_cm_event *event)
1417 goto out_conn_dev;
1418
1419 mutex_lock(&isert_np->np_accept_mutex);
1420 - list_add_tail(&isert_np->np_accept_list, &isert_conn->conn_accept_node);
1421 + list_add_tail(&isert_conn->conn_accept_node, &isert_np->np_accept_list);
1422 mutex_unlock(&isert_np->np_accept_mutex);
1423
1424 - pr_debug("isert_connect_request() waking up np_accept_wq: %p\n", np);
1425 - wake_up(&isert_np->np_accept_wq);
1426 + pr_debug("isert_connect_request() up np_sem np: %p\n", np);
1427 + up(&isert_np->np_sem);
1428 return 0;
1429
1430 out_conn_dev:
1431 @@ -2042,7 +2043,7 @@ isert_setup_np(struct iscsi_np *np,
1432 pr_err("Unable to allocate struct isert_np\n");
1433 return -ENOMEM;
1434 }
1435 - init_waitqueue_head(&isert_np->np_accept_wq);
1436 + sema_init(&isert_np->np_sem, 0);
1437 mutex_init(&isert_np->np_accept_mutex);
1438 INIT_LIST_HEAD(&isert_np->np_accept_list);
1439 init_completion(&isert_np->np_login_comp);
1440 @@ -2091,18 +2092,6 @@ out:
1441 }
1442
1443 static int
1444 -isert_check_accept_queue(struct isert_np *isert_np)
1445 -{
1446 - int empty;
1447 -
1448 - mutex_lock(&isert_np->np_accept_mutex);
1449 - empty = list_empty(&isert_np->np_accept_list);
1450 - mutex_unlock(&isert_np->np_accept_mutex);
1451 -
1452 - return empty;
1453 -}
1454 -
1455 -static int
1456 isert_rdma_accept(struct isert_conn *isert_conn)
1457 {
1458 struct rdma_cm_id *cm_id = isert_conn->conn_cm_id;
1459 @@ -2186,16 +2175,14 @@ isert_accept_np(struct iscsi_np *np, struct iscsi_conn *conn)
1460 int max_accept = 0, ret;
1461
1462 accept_wait:
1463 - ret = wait_event_interruptible(isert_np->np_accept_wq,
1464 - !isert_check_accept_queue(isert_np) ||
1465 - np->np_thread_state == ISCSI_NP_THREAD_RESET);
1466 + ret = down_interruptible(&isert_np->np_sem);
1467 if (max_accept > 5)
1468 return -ENODEV;
1469
1470 spin_lock_bh(&np->np_thread_lock);
1471 if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
1472 spin_unlock_bh(&np->np_thread_lock);
1473 - pr_err("ISCSI_NP_THREAD_RESET for isert_accept_np\n");
1474 + pr_debug("ISCSI_NP_THREAD_RESET for isert_accept_np\n");
1475 return -ENODEV;
1476 }
1477 spin_unlock_bh(&np->np_thread_lock);
1478 diff --git a/drivers/infiniband/ulp/isert/ib_isert.h b/drivers/infiniband/ulp/isert/ib_isert.h
1479 index b9d6cc6917cf..dfe4a2ebef0d 100644
1480 --- a/drivers/infiniband/ulp/isert/ib_isert.h
1481 +++ b/drivers/infiniband/ulp/isert/ib_isert.h
1482 @@ -131,7 +131,7 @@ struct isert_device {
1483 };
1484
1485 struct isert_np {
1486 - wait_queue_head_t np_accept_wq;
1487 + struct semaphore np_sem;
1488 struct rdma_cm_id *np_cm_id;
1489 struct mutex np_accept_mutex;
1490 struct list_head np_accept_list;
1491 diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
1492 index 2626773ff29b..2dd1d0dd4f7d 100644
1493 --- a/drivers/input/keyboard/atkbd.c
1494 +++ b/drivers/input/keyboard/atkbd.c
1495 @@ -243,6 +243,12 @@ static void (*atkbd_platform_fixup)(struct atkbd *, const void *data);
1496 static void *atkbd_platform_fixup_data;
1497 static unsigned int (*atkbd_platform_scancode_fixup)(struct atkbd *, unsigned int);
1498
1499 +/*
1500 + * Certain keyboards to not like ATKBD_CMD_RESET_DIS and stop responding
1501 + * to many commands until full reset (ATKBD_CMD_RESET_BAT) is performed.
1502 + */
1503 +static bool atkbd_skip_deactivate;
1504 +
1505 static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,
1506 ssize_t (*handler)(struct atkbd *, char *));
1507 static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count,
1508 @@ -768,7 +774,8 @@ static int atkbd_probe(struct atkbd *atkbd)
1509 * Make sure nothing is coming from the keyboard and disturbs our
1510 * internal state.
1511 */
1512 - atkbd_deactivate(atkbd);
1513 + if (!atkbd_skip_deactivate)
1514 + atkbd_deactivate(atkbd);
1515
1516 return 0;
1517 }
1518 @@ -1638,6 +1645,12 @@ static int __init atkbd_setup_scancode_fixup(const struct dmi_system_id *id)
1519 return 1;
1520 }
1521
1522 +static int __init atkbd_deactivate_fixup(const struct dmi_system_id *id)
1523 +{
1524 + atkbd_skip_deactivate = true;
1525 + return 1;
1526 +}
1527 +
1528 static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
1529 {
1530 .matches = {
1531 @@ -1775,6 +1788,20 @@ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
1532 .callback = atkbd_setup_scancode_fixup,
1533 .driver_data = atkbd_oqo_01plus_scancode_fixup,
1534 },
1535 + {
1536 + .matches = {
1537 + DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"),
1538 + DMI_MATCH(DMI_PRODUCT_NAME, "LW25-B7HV"),
1539 + },
1540 + .callback = atkbd_deactivate_fixup,
1541 + },
1542 + {
1543 + .matches = {
1544 + DMI_MATCH(DMI_SYS_VENDOR, "LG Electronics"),
1545 + DMI_MATCH(DMI_PRODUCT_NAME, "P1-J273B"),
1546 + },
1547 + .callback = atkbd_deactivate_fixup,
1548 + },
1549 { }
1550 };
1551
1552 diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
1553 index 1fb1a7b5a754..76f1d37ac0ff 100644
1554 --- a/drivers/input/mouse/elantech.c
1555 +++ b/drivers/input/mouse/elantech.c
1556 @@ -11,6 +11,7 @@
1557 */
1558
1559 #include <linux/delay.h>
1560 +#include <linux/dmi.h>
1561 #include <linux/slab.h>
1562 #include <linux/module.h>
1563 #include <linux/input.h>
1564 @@ -801,7 +802,11 @@ static int elantech_set_absolute_mode(struct psmouse *psmouse)
1565 break;
1566
1567 case 3:
1568 - etd->reg_10 = 0x0b;
1569 + if (etd->set_hw_resolution)
1570 + etd->reg_10 = 0x0b;
1571 + else
1572 + etd->reg_10 = 0x03;
1573 +
1574 if (elantech_write_reg(psmouse, 0x10, etd->reg_10))
1575 rc = -1;
1576
1577 @@ -1301,6 +1306,22 @@ static int elantech_reconnect(struct psmouse *psmouse)
1578 }
1579
1580 /*
1581 + * Some hw_version 3 models go into error state when we try to set bit 3 of r10
1582 + */
1583 +static const struct dmi_system_id no_hw_res_dmi_table[] = {
1584 +#if defined(CONFIG_DMI) && defined(CONFIG_X86)
1585 + {
1586 + /* Gigabyte U2442 */
1587 + .matches = {
1588 + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"),
1589 + DMI_MATCH(DMI_PRODUCT_NAME, "U2442"),
1590 + },
1591 + },
1592 +#endif
1593 + { }
1594 +};
1595 +
1596 +/*
1597 * determine hardware version and set some properties according to it.
1598 */
1599 static int elantech_set_properties(struct elantech_data *etd)
1600 @@ -1351,6 +1372,9 @@ static int elantech_set_properties(struct elantech_data *etd)
1601 etd->reports_pressure = true;
1602 }
1603
1604 + /* Enable real hardware resolution on hw_version 3 ? */
1605 + etd->set_hw_resolution = !dmi_check_system(no_hw_res_dmi_table);
1606 +
1607 return 0;
1608 }
1609
1610 diff --git a/drivers/input/mouse/elantech.h b/drivers/input/mouse/elantech.h
1611 index 46db3be45ac9..c1c15ab6872d 100644
1612 --- a/drivers/input/mouse/elantech.h
1613 +++ b/drivers/input/mouse/elantech.h
1614 @@ -129,6 +129,7 @@ struct elantech_data {
1615 bool paritycheck;
1616 bool jumpy_cursor;
1617 bool reports_pressure;
1618 + bool set_hw_resolution;
1619 unsigned char hw_version;
1620 unsigned int fw_version;
1621 unsigned int single_finger_reports;
1622 diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
1623 index d60c9b7ad1b8..f36f7b88f260 100644
1624 --- a/drivers/input/mouse/synaptics.c
1625 +++ b/drivers/input/mouse/synaptics.c
1626 @@ -1552,7 +1552,7 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
1627 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
1628 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T540"),
1629 },
1630 - .driver_data = (int []){1024, 5056, 2058, 4832},
1631 + .driver_data = (int []){1024, 5112, 2024, 4832},
1632 },
1633 {
1634 /* Lenovo ThinkPad L540 */
1635 @@ -1563,6 +1563,14 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
1636 .driver_data = (int []){1024, 5112, 2024, 4832},
1637 },
1638 {
1639 + /* Lenovo ThinkPad W540 */
1640 + .matches = {
1641 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
1642 + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad W540"),
1643 + },
1644 + .driver_data = (int []){1024, 5112, 2024, 4832},
1645 + },
1646 + {
1647 /* Lenovo Yoga S1 */
1648 .matches = {
1649 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
1650 diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
1651 index a3c338942f10..6f849cbcac6f 100644
1652 --- a/drivers/iommu/amd_iommu.c
1653 +++ b/drivers/iommu/amd_iommu.c
1654 @@ -3959,7 +3959,7 @@ static struct irq_remap_table *get_irq_table(u16 devid, bool ioapic)
1655 iommu_flush_dte(iommu, devid);
1656 if (devid != alias) {
1657 irq_lookup_table[alias] = table;
1658 - set_dte_irq_entry(devid, table);
1659 + set_dte_irq_entry(alias, table);
1660 iommu_flush_dte(iommu, alias);
1661 }
1662
1663 diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
1664 index 19ceaa60e0f4..4e11218d644e 100644
1665 --- a/drivers/irqchip/irq-gic.c
1666 +++ b/drivers/irqchip/irq-gic.c
1667 @@ -246,10 +246,14 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
1668 bool force)
1669 {
1670 void __iomem *reg = gic_dist_base(d) + GIC_DIST_TARGET + (gic_irq(d) & ~3);
1671 - unsigned int shift = (gic_irq(d) % 4) * 8;
1672 - unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask);
1673 + unsigned int cpu, shift = (gic_irq(d) % 4) * 8;
1674 u32 val, mask, bit;
1675
1676 + if (!force)
1677 + cpu = cpumask_any_and(mask_val, cpu_online_mask);
1678 + else
1679 + cpu = cpumask_first(mask_val);
1680 +
1681 if (cpu >= NR_GIC_CPU_IF || cpu >= nr_cpu_ids)
1682 return -EINVAL;
1683
1684 diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c
1685 index faf52c005e8c..5d64b2431415 100644
1686 --- a/drivers/leds/leds-pwm.c
1687 +++ b/drivers/leds/leds-pwm.c
1688 @@ -82,6 +82,15 @@ static inline size_t sizeof_pwm_leds_priv(int num_leds)
1689 (sizeof(struct led_pwm_data) * num_leds);
1690 }
1691
1692 +static void led_pwm_cleanup(struct led_pwm_priv *priv)
1693 +{
1694 + while (priv->num_leds--) {
1695 + led_classdev_unregister(&priv->leds[priv->num_leds].cdev);
1696 + if (priv->leds[priv->num_leds].can_sleep)
1697 + cancel_work_sync(&priv->leds[priv->num_leds].work);
1698 + }
1699 +}
1700 +
1701 static struct led_pwm_priv *led_pwm_create_of(struct platform_device *pdev)
1702 {
1703 struct device_node *node = pdev->dev.of_node;
1704 @@ -139,8 +148,7 @@ static struct led_pwm_priv *led_pwm_create_of(struct platform_device *pdev)
1705
1706 return priv;
1707 err:
1708 - while (priv->num_leds--)
1709 - led_classdev_unregister(&priv->leds[priv->num_leds].cdev);
1710 + led_pwm_cleanup(priv);
1711
1712 return NULL;
1713 }
1714 @@ -200,8 +208,8 @@ static int led_pwm_probe(struct platform_device *pdev)
1715 return 0;
1716
1717 err:
1718 - while (i--)
1719 - led_classdev_unregister(&priv->leds[i].cdev);
1720 + priv->num_leds = i;
1721 + led_pwm_cleanup(priv);
1722
1723 return ret;
1724 }
1725 @@ -209,13 +217,8 @@ err:
1726 static int led_pwm_remove(struct platform_device *pdev)
1727 {
1728 struct led_pwm_priv *priv = platform_get_drvdata(pdev);
1729 - int i;
1730
1731 - for (i = 0; i < priv->num_leds; i++) {
1732 - led_classdev_unregister(&priv->leds[i].cdev);
1733 - if (priv->leds[i].can_sleep)
1734 - cancel_work_sync(&priv->leds[i].work);
1735 - }
1736 + led_pwm_cleanup(priv);
1737
1738 return 0;
1739 }
1740 diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
1741 index 6d2d41ae9e32..5177ba54559b 100644
1742 --- a/drivers/md/dm-crypt.c
1743 +++ b/drivers/md/dm-crypt.c
1744 @@ -18,7 +18,6 @@
1745 #include <linux/crypto.h>
1746 #include <linux/workqueue.h>
1747 #include <linux/backing-dev.h>
1748 -#include <linux/percpu.h>
1749 #include <linux/atomic.h>
1750 #include <linux/scatterlist.h>
1751 #include <asm/page.h>
1752 @@ -44,6 +43,7 @@ struct convert_context {
1753 unsigned int idx_out;
1754 sector_t cc_sector;
1755 atomic_t cc_pending;
1756 + struct ablkcipher_request *req;
1757 };
1758
1759 /*
1760 @@ -105,15 +105,7 @@ struct iv_lmk_private {
1761 enum flags { DM_CRYPT_SUSPENDED, DM_CRYPT_KEY_VALID };
1762
1763 /*
1764 - * Duplicated per-CPU state for cipher.
1765 - */
1766 -struct crypt_cpu {
1767 - struct ablkcipher_request *req;
1768 -};
1769 -
1770 -/*
1771 - * The fields in here must be read only after initialization,
1772 - * changing state should be in crypt_cpu.
1773 + * The fields in here must be read only after initialization.
1774 */
1775 struct crypt_config {
1776 struct dm_dev *dev;
1777 @@ -143,12 +135,6 @@ struct crypt_config {
1778 sector_t iv_offset;
1779 unsigned int iv_size;
1780
1781 - /*
1782 - * Duplicated per cpu state. Access through
1783 - * per_cpu_ptr() only.
1784 - */
1785 - struct crypt_cpu __percpu *cpu;
1786 -
1787 /* ESSIV: struct crypto_cipher *essiv_tfm */
1788 void *iv_private;
1789 struct crypto_ablkcipher **tfms;
1790 @@ -184,11 +170,6 @@ static void clone_init(struct dm_crypt_io *, struct bio *);
1791 static void kcryptd_queue_crypt(struct dm_crypt_io *io);
1792 static u8 *iv_of_dmreq(struct crypt_config *cc, struct dm_crypt_request *dmreq);
1793
1794 -static struct crypt_cpu *this_crypt_config(struct crypt_config *cc)
1795 -{
1796 - return this_cpu_ptr(cc->cpu);
1797 -}
1798 -
1799 /*
1800 * Use this to access cipher attributes that are the same for each CPU.
1801 */
1802 @@ -738,16 +719,15 @@ static void kcryptd_async_done(struct crypto_async_request *async_req,
1803 static void crypt_alloc_req(struct crypt_config *cc,
1804 struct convert_context *ctx)
1805 {
1806 - struct crypt_cpu *this_cc = this_crypt_config(cc);
1807 unsigned key_index = ctx->cc_sector & (cc->tfms_count - 1);
1808
1809 - if (!this_cc->req)
1810 - this_cc->req = mempool_alloc(cc->req_pool, GFP_NOIO);
1811 + if (!ctx->req)
1812 + ctx->req = mempool_alloc(cc->req_pool, GFP_NOIO);
1813
1814 - ablkcipher_request_set_tfm(this_cc->req, cc->tfms[key_index]);
1815 - ablkcipher_request_set_callback(this_cc->req,
1816 + ablkcipher_request_set_tfm(ctx->req, cc->tfms[key_index]);
1817 + ablkcipher_request_set_callback(ctx->req,
1818 CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP,
1819 - kcryptd_async_done, dmreq_of_req(cc, this_cc->req));
1820 + kcryptd_async_done, dmreq_of_req(cc, ctx->req));
1821 }
1822
1823 /*
1824 @@ -756,7 +736,6 @@ static void crypt_alloc_req(struct crypt_config *cc,
1825 static int crypt_convert(struct crypt_config *cc,
1826 struct convert_context *ctx)
1827 {
1828 - struct crypt_cpu *this_cc = this_crypt_config(cc);
1829 int r;
1830
1831 atomic_set(&ctx->cc_pending, 1);
1832 @@ -768,7 +747,7 @@ static int crypt_convert(struct crypt_config *cc,
1833
1834 atomic_inc(&ctx->cc_pending);
1835
1836 - r = crypt_convert_block(cc, ctx, this_cc->req);
1837 + r = crypt_convert_block(cc, ctx, ctx->req);
1838
1839 switch (r) {
1840 /* async */
1841 @@ -777,7 +756,7 @@ static int crypt_convert(struct crypt_config *cc,
1842 INIT_COMPLETION(ctx->restart);
1843 /* fall through*/
1844 case -EINPROGRESS:
1845 - this_cc->req = NULL;
1846 + ctx->req = NULL;
1847 ctx->cc_sector++;
1848 continue;
1849
1850 @@ -876,6 +855,7 @@ static struct dm_crypt_io *crypt_io_alloc(struct crypt_config *cc,
1851 io->sector = sector;
1852 io->error = 0;
1853 io->base_io = NULL;
1854 + io->ctx.req = NULL;
1855 atomic_set(&io->io_pending, 0);
1856
1857 return io;
1858 @@ -901,6 +881,8 @@ static void crypt_dec_pending(struct dm_crypt_io *io)
1859 if (!atomic_dec_and_test(&io->io_pending))
1860 return;
1861
1862 + if (io->ctx.req)
1863 + mempool_free(io->ctx.req, cc->req_pool);
1864 mempool_free(io, cc->io_pool);
1865
1866 if (likely(!base_io))
1867 @@ -1326,8 +1308,6 @@ static int crypt_wipe_key(struct crypt_config *cc)
1868 static void crypt_dtr(struct dm_target *ti)
1869 {
1870 struct crypt_config *cc = ti->private;
1871 - struct crypt_cpu *cpu_cc;
1872 - int cpu;
1873
1874 ti->private = NULL;
1875
1876 @@ -1339,13 +1319,6 @@ static void crypt_dtr(struct dm_target *ti)
1877 if (cc->crypt_queue)
1878 destroy_workqueue(cc->crypt_queue);
1879
1880 - if (cc->cpu)
1881 - for_each_possible_cpu(cpu) {
1882 - cpu_cc = per_cpu_ptr(cc->cpu, cpu);
1883 - if (cpu_cc->req)
1884 - mempool_free(cpu_cc->req, cc->req_pool);
1885 - }
1886 -
1887 crypt_free_tfms(cc);
1888
1889 if (cc->bs)
1890 @@ -1364,9 +1337,6 @@ static void crypt_dtr(struct dm_target *ti)
1891 if (cc->dev)
1892 dm_put_device(ti, cc->dev);
1893
1894 - if (cc->cpu)
1895 - free_percpu(cc->cpu);
1896 -
1897 kzfree(cc->cipher);
1898 kzfree(cc->cipher_string);
1899
1900 @@ -1421,13 +1391,6 @@ static int crypt_ctr_cipher(struct dm_target *ti,
1901 if (tmp)
1902 DMWARN("Ignoring unexpected additional cipher options");
1903
1904 - cc->cpu = __alloc_percpu(sizeof(*(cc->cpu)),
1905 - __alignof__(struct crypt_cpu));
1906 - if (!cc->cpu) {
1907 - ti->error = "Cannot allocate per cpu state";
1908 - goto bad_mem;
1909 - }
1910 -
1911 /*
1912 * For compatibility with the original dm-crypt mapping format, if
1913 * only the cipher name is supplied, use cbc-plain.
1914 diff --git a/drivers/md/md.c b/drivers/md/md.c
1915 index a2dda416c9cb..00a99fe797d4 100644
1916 --- a/drivers/md/md.c
1917 +++ b/drivers/md/md.c
1918 @@ -8481,7 +8481,8 @@ static int md_notify_reboot(struct notifier_block *this,
1919 if (mddev_trylock(mddev)) {
1920 if (mddev->pers)
1921 __md_stop_writes(mddev);
1922 - mddev->safemode = 2;
1923 + if (mddev->persistent)
1924 + mddev->safemode = 2;
1925 mddev_unlock(mddev);
1926 }
1927 need_delay = 1;
1928 diff --git a/drivers/media/i2c/ov7670.c b/drivers/media/i2c/ov7670.c
1929 index 617ad3fff4aa..3ead3a83f04a 100644
1930 --- a/drivers/media/i2c/ov7670.c
1931 +++ b/drivers/media/i2c/ov7670.c
1932 @@ -1110,7 +1110,7 @@ static int ov7670_enum_framesizes(struct v4l2_subdev *sd,
1933 * windows that fall outside that.
1934 */
1935 for (i = 0; i < n_win_sizes; i++) {
1936 - struct ov7670_win_size *win = &info->devtype->win_sizes[index];
1937 + struct ov7670_win_size *win = &info->devtype->win_sizes[i];
1938 if (info->min_width && win->width < info->min_width)
1939 continue;
1940 if (info->min_height && win->height < info->min_height)
1941 diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
1942 index 1957c0df08fd..79715f9feb0a 100644
1943 --- a/drivers/media/media-device.c
1944 +++ b/drivers/media/media-device.c
1945 @@ -93,6 +93,7 @@ static long media_device_enum_entities(struct media_device *mdev,
1946 struct media_entity *ent;
1947 struct media_entity_desc u_ent;
1948
1949 + memset(&u_ent, 0, sizeof(u_ent));
1950 if (copy_from_user(&u_ent.id, &uent->id, sizeof(u_ent.id)))
1951 return -EFAULT;
1952
1953 diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
1954 index 1d7dbd5c0fba..3e8ef11f67aa 100644
1955 --- a/drivers/media/platform/omap3isp/isp.c
1956 +++ b/drivers/media/platform/omap3isp/isp.c
1957 @@ -2249,6 +2249,7 @@ static int isp_probe(struct platform_device *pdev)
1958 ret = iommu_attach_device(isp->domain, &pdev->dev);
1959 if (ret) {
1960 dev_err(&pdev->dev, "can't attach iommu device: %d\n", ret);
1961 + ret = -EPROBE_DEFER;
1962 goto free_domain;
1963 }
1964
1965 @@ -2287,6 +2288,7 @@ detach_dev:
1966 iommu_detach_device(isp->domain, &pdev->dev);
1967 free_domain:
1968 iommu_domain_free(isp->domain);
1969 + isp->domain = NULL;
1970 error_isp:
1971 isp_xclk_cleanup(isp);
1972 omap3isp_put(isp);
1973 diff --git a/drivers/media/tuners/fc2580.c b/drivers/media/tuners/fc2580.c
1974 index 3aecaf465094..f0c9c42867de 100644
1975 --- a/drivers/media/tuners/fc2580.c
1976 +++ b/drivers/media/tuners/fc2580.c
1977 @@ -195,7 +195,7 @@ static int fc2580_set_params(struct dvb_frontend *fe)
1978
1979 f_ref = 2UL * priv->cfg->clock / r_val;
1980 n_val = div_u64_rem(f_vco, f_ref, &k_val);
1981 - k_val_reg = 1UL * k_val * (1 << 20) / f_ref;
1982 + k_val_reg = div_u64(1ULL * k_val * (1 << 20), f_ref);
1983
1984 ret = fc2580_wr_reg(priv, 0x18, r18_val | ((k_val_reg >> 16) & 0xff));
1985 if (ret < 0)
1986 @@ -348,8 +348,8 @@ static int fc2580_set_params(struct dvb_frontend *fe)
1987 if (ret < 0)
1988 goto err;
1989
1990 - ret = fc2580_wr_reg(priv, 0x37, 1UL * priv->cfg->clock * \
1991 - fc2580_if_filter_lut[i].mul / 1000000000);
1992 + ret = fc2580_wr_reg(priv, 0x37, div_u64(1ULL * priv->cfg->clock *
1993 + fc2580_if_filter_lut[i].mul, 1000000000));
1994 if (ret < 0)
1995 goto err;
1996
1997 diff --git a/drivers/media/tuners/fc2580_priv.h b/drivers/media/tuners/fc2580_priv.h
1998 index be38a9e637e0..646c99452136 100644
1999 --- a/drivers/media/tuners/fc2580_priv.h
2000 +++ b/drivers/media/tuners/fc2580_priv.h
2001 @@ -22,6 +22,7 @@
2002 #define FC2580_PRIV_H
2003
2004 #include "fc2580.h"
2005 +#include <linux/math64.h>
2006
2007 struct fc2580_reg_val {
2008 u8 reg;
2009 diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
2010 index f56b729581e7..e2b0a0969ebb 100644
2011 --- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
2012 +++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
2013 @@ -178,6 +178,9 @@ struct v4l2_create_buffers32 {
2014
2015 static int __get_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up)
2016 {
2017 + if (get_user(kp->type, &up->type))
2018 + return -EFAULT;
2019 +
2020 switch (kp->type) {
2021 case V4L2_BUF_TYPE_VIDEO_CAPTURE:
2022 case V4L2_BUF_TYPE_VIDEO_OUTPUT:
2023 @@ -204,17 +207,16 @@ static int __get_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __us
2024
2025 static int get_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user *up)
2026 {
2027 - if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_format32)) ||
2028 - get_user(kp->type, &up->type))
2029 - return -EFAULT;
2030 + if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_format32)))
2031 + return -EFAULT;
2032 return __get_v4l2_format32(kp, up);
2033 }
2034
2035 static int get_v4l2_create32(struct v4l2_create_buffers *kp, struct v4l2_create_buffers32 __user *up)
2036 {
2037 if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_create_buffers32)) ||
2038 - copy_from_user(kp, up, offsetof(struct v4l2_create_buffers32, format.fmt)))
2039 - return -EFAULT;
2040 + copy_from_user(kp, up, offsetof(struct v4l2_create_buffers32, format)))
2041 + return -EFAULT;
2042 return __get_v4l2_format32(&kp->format, &up->format);
2043 }
2044
2045 diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
2046 index e752f5d4995d..0c9b2f1c6939 100644
2047 --- a/drivers/net/wireless/ath/ath9k/xmit.c
2048 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
2049 @@ -1255,14 +1255,16 @@ void ath_tx_aggr_sleep(struct ieee80211_sta *sta, struct ath_softc *sc,
2050 for (tidno = 0, tid = &an->tid[tidno];
2051 tidno < IEEE80211_NUM_TIDS; tidno++, tid++) {
2052
2053 - if (!tid->sched)
2054 - continue;
2055 -
2056 ac = tid->ac;
2057 txq = ac->txq;
2058
2059 ath_txq_lock(sc, txq);
2060
2061 + if (!tid->sched) {
2062 + ath_txq_unlock(sc, txq);
2063 + continue;
2064 + }
2065 +
2066 buffered = !skb_queue_empty(&tid->buf_q);
2067
2068 tid->sched = false;
2069 diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
2070 index 3a6544710c8a..8e8543cfe489 100644
2071 --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
2072 +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
2073 @@ -426,6 +426,12 @@ static int brcms_ops_start(struct ieee80211_hw *hw)
2074 bool blocked;
2075 int err;
2076
2077 + if (!wl->ucode.bcm43xx_bomminor) {
2078 + err = brcms_request_fw(wl, wl->wlc->hw->d11core);
2079 + if (err)
2080 + return -ENOENT;
2081 + }
2082 +
2083 ieee80211_wake_queues(hw);
2084 spin_lock_bh(&wl->lock);
2085 blocked = brcms_rfkill_set_hw_state(wl);
2086 @@ -433,14 +439,6 @@ static int brcms_ops_start(struct ieee80211_hw *hw)
2087 if (!blocked)
2088 wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
2089
2090 - if (!wl->ucode.bcm43xx_bomminor) {
2091 - err = brcms_request_fw(wl, wl->wlc->hw->d11core);
2092 - if (err) {
2093 - brcms_remove(wl->wlc->hw->d11core);
2094 - return -ENOENT;
2095 - }
2096 - }
2097 -
2098 spin_lock_bh(&wl->lock);
2099 /* avoid acknowledging frames before a non-monitor device is added */
2100 wl->mute_tx = true;
2101 diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
2102 index f8cff1f0b6b7..2b724fc4e306 100644
2103 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c
2104 +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
2105 @@ -623,20 +623,18 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
2106 bss_conf->bssid);
2107
2108 /*
2109 - * Update the beacon. This is only required on USB devices. PCI
2110 - * devices fetch beacons periodically.
2111 - */
2112 - if (changes & BSS_CHANGED_BEACON && rt2x00_is_usb(rt2x00dev))
2113 - rt2x00queue_update_beacon(rt2x00dev, vif);
2114 -
2115 - /*
2116 * Start/stop beaconing.
2117 */
2118 if (changes & BSS_CHANGED_BEACON_ENABLED) {
2119 if (!bss_conf->enable_beacon && intf->enable_beacon) {
2120 - rt2x00queue_clear_beacon(rt2x00dev, vif);
2121 rt2x00dev->intf_beaconing--;
2122 intf->enable_beacon = false;
2123 + /*
2124 + * Clear beacon in the H/W for this vif. This is needed
2125 + * to disable beaconing on this particular interface
2126 + * and keep it running on other interfaces.
2127 + */
2128 + rt2x00queue_clear_beacon(rt2x00dev, vif);
2129
2130 if (rt2x00dev->intf_beaconing == 0) {
2131 /*
2132 @@ -647,11 +645,15 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
2133 rt2x00queue_stop_queue(rt2x00dev->bcn);
2134 mutex_unlock(&intf->beacon_skb_mutex);
2135 }
2136 -
2137 -
2138 } else if (bss_conf->enable_beacon && !intf->enable_beacon) {
2139 rt2x00dev->intf_beaconing++;
2140 intf->enable_beacon = true;
2141 + /*
2142 + * Upload beacon to the H/W. This is only required on
2143 + * USB devices. PCI devices fetch beacons periodically.
2144 + */
2145 + if (rt2x00_is_usb(rt2x00dev))
2146 + rt2x00queue_update_beacon(rt2x00dev, vif);
2147
2148 if (rt2x00dev->intf_beaconing == 1) {
2149 /*
2150 diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
2151 index 324aa581938e..c3f2b55501ae 100644
2152 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
2153 +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
2154 @@ -1001,7 +1001,7 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw)
2155 err = _rtl92cu_init_mac(hw);
2156 if (err) {
2157 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "init mac failed!\n");
2158 - return err;
2159 + goto exit;
2160 }
2161 err = rtl92c_download_fw(hw);
2162 if (err) {
2163 diff --git a/drivers/pci/hotplug/shpchp_ctrl.c b/drivers/pci/hotplug/shpchp_ctrl.c
2164 index 58499277903a..6efc2ec5e4db 100644
2165 --- a/drivers/pci/hotplug/shpchp_ctrl.c
2166 +++ b/drivers/pci/hotplug/shpchp_ctrl.c
2167 @@ -282,8 +282,8 @@ static int board_added(struct slot *p_slot)
2168 return WRONG_BUS_FREQUENCY;
2169 }
2170
2171 - bsp = ctrl->pci_dev->bus->cur_bus_speed;
2172 - msp = ctrl->pci_dev->bus->max_bus_speed;
2173 + bsp = ctrl->pci_dev->subordinate->cur_bus_speed;
2174 + msp = ctrl->pci_dev->subordinate->max_bus_speed;
2175
2176 /* Check if there are other slots or devices on the same bus */
2177 if (!list_empty(&ctrl->pci_dev->subordinate->devices))
2178 diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c
2179 index 660b109487ae..8032917b6636 100644
2180 --- a/drivers/target/target_core_device.c
2181 +++ b/drivers/target/target_core_device.c
2182 @@ -796,10 +796,10 @@ int se_dev_set_emulate_write_cache(struct se_device *dev, int flag)
2183 pr_err("emulate_write_cache not supported for pSCSI\n");
2184 return -EINVAL;
2185 }
2186 - if (dev->transport->get_write_cache) {
2187 - pr_warn("emulate_write_cache cannot be changed when underlying"
2188 - " HW reports WriteCacheEnabled, ignoring request\n");
2189 - return 0;
2190 + if (flag &&
2191 + dev->transport->get_write_cache) {
2192 + pr_err("emulate_write_cache not supported for this device\n");
2193 + return -EINVAL;
2194 }
2195
2196 dev->dev_attrib.emulate_write_cache = flag;
2197 diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
2198 index b167665b7de2..d8c06a3d391e 100644
2199 --- a/drivers/tty/serial/8250/8250_core.c
2200 +++ b/drivers/tty/serial/8250/8250_core.c
2201 @@ -1520,7 +1520,7 @@ int serial8250_handle_irq(struct uart_port *port, unsigned int iir)
2202 status = serial8250_rx_chars(up, status);
2203 }
2204 serial8250_modem_status(up);
2205 - if (status & UART_LSR_THRE)
2206 + if (!up->dma && (status & UART_LSR_THRE))
2207 serial8250_tx_chars(up);
2208
2209 spin_unlock_irqrestore(&port->lock, flags);
2210 diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c
2211 index 7046769608d4..ab9096dc3849 100644
2212 --- a/drivers/tty/serial/8250/8250_dma.c
2213 +++ b/drivers/tty/serial/8250/8250_dma.c
2214 @@ -20,12 +20,15 @@ static void __dma_tx_complete(void *param)
2215 struct uart_8250_port *p = param;
2216 struct uart_8250_dma *dma = p->dma;
2217 struct circ_buf *xmit = &p->port.state->xmit;
2218 -
2219 - dma->tx_running = 0;
2220 + unsigned long flags;
2221
2222 dma_sync_single_for_cpu(dma->txchan->device->dev, dma->tx_addr,
2223 UART_XMIT_SIZE, DMA_TO_DEVICE);
2224
2225 + spin_lock_irqsave(&p->port.lock, flags);
2226 +
2227 + dma->tx_running = 0;
2228 +
2229 xmit->tail += dma->tx_size;
2230 xmit->tail &= UART_XMIT_SIZE - 1;
2231 p->port.icount.tx += dma->tx_size;
2232 @@ -35,6 +38,8 @@ static void __dma_tx_complete(void *param)
2233
2234 if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port))
2235 serial8250_tx_dma(p);
2236 +
2237 + spin_unlock_irqrestore(&p->port.lock, flags);
2238 }
2239
2240 static void __dma_rx_complete(void *param)
2241 diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
2242 index 073b938f9135..55e96131753e 100644
2243 --- a/drivers/usb/gadget/at91_udc.c
2244 +++ b/drivers/usb/gadget/at91_udc.c
2245 @@ -1703,16 +1703,6 @@ static int at91udc_probe(struct platform_device *pdev)
2246 return -ENODEV;
2247 }
2248
2249 - if (pdev->num_resources != 2) {
2250 - DBG("invalid num_resources\n");
2251 - return -ENODEV;
2252 - }
2253 - if ((pdev->resource[0].flags != IORESOURCE_MEM)
2254 - || (pdev->resource[1].flags != IORESOURCE_IRQ)) {
2255 - DBG("invalid resource type\n");
2256 - return -ENODEV;
2257 - }
2258 -
2259 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
2260 if (!res)
2261 return -ENXIO;
2262 diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
2263 index 3c0a49a298dd..bfcf38383f74 100644
2264 --- a/drivers/usb/host/ehci-fsl.c
2265 +++ b/drivers/usb/host/ehci-fsl.c
2266 @@ -261,7 +261,8 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
2267 break;
2268 }
2269
2270 - if (pdata->have_sysif_regs && pdata->controller_ver &&
2271 + if (pdata->have_sysif_regs &&
2272 + pdata->controller_ver > FSL_USB_VER_1_6 &&
2273 (phy_mode == FSL_USB2_PHY_ULPI)) {
2274 /* check PHY_CLK_VALID to get phy clk valid */
2275 if (!spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
2276 diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
2277 index 60ff4220e8b4..cd908066fde9 100644
2278 --- a/drivers/usb/host/ohci-hub.c
2279 +++ b/drivers/usb/host/ohci-hub.c
2280 @@ -90,6 +90,24 @@ __acquires(ohci->lock)
2281 dl_done_list (ohci);
2282 finish_unlinks (ohci, ohci_frame_no(ohci));
2283
2284 + /*
2285 + * Some controllers don't handle "global" suspend properly if
2286 + * there are unsuspended ports. For these controllers, put all
2287 + * the enabled ports into suspend before suspending the root hub.
2288 + */
2289 + if (ohci->flags & OHCI_QUIRK_GLOBAL_SUSPEND) {
2290 + __hc32 __iomem *portstat = ohci->regs->roothub.portstatus;
2291 + int i;
2292 + unsigned temp;
2293 +
2294 + for (i = 0; i < ohci->num_ports; (++i, ++portstat)) {
2295 + temp = ohci_readl(ohci, portstat);
2296 + if ((temp & (RH_PS_PES | RH_PS_PSS)) ==
2297 + RH_PS_PES)
2298 + ohci_writel(ohci, RH_PS_PSS, portstat);
2299 + }
2300 + }
2301 +
2302 /* maybe resume can wake root hub */
2303 if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) {
2304 ohci->hc_control |= OHCI_CTRL_RWE;
2305 diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
2306 index ef6782bd1fa9..67af8eef6537 100644
2307 --- a/drivers/usb/host/ohci-pci.c
2308 +++ b/drivers/usb/host/ohci-pci.c
2309 @@ -172,6 +172,7 @@ static int ohci_quirk_amd700(struct usb_hcd *hcd)
2310 pci_dev_put(amd_smbus_dev);
2311 amd_smbus_dev = NULL;
2312
2313 + ohci->flags |= OHCI_QUIRK_GLOBAL_SUSPEND;
2314 return 0;
2315 }
2316
2317 diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
2318 index d3299143d9e2..f2521f3185d2 100644
2319 --- a/drivers/usb/host/ohci.h
2320 +++ b/drivers/usb/host/ohci.h
2321 @@ -405,6 +405,8 @@ struct ohci_hcd {
2322 #define OHCI_QUIRK_HUB_POWER 0x100 /* distrust firmware power/oc setup */
2323 #define OHCI_QUIRK_AMD_PLL 0x200 /* AMD PLL quirk*/
2324 #define OHCI_QUIRK_AMD_PREFETCH 0x400 /* pre-fetch for ISO transfer */
2325 +#define OHCI_QUIRK_GLOBAL_SUSPEND 0x800 /* must suspend ports */
2326 +
2327 // there are also chip quirks/bugs in init logic
2328
2329 struct work_struct nec_work; /* Worker for NEC quirk */
2330 diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
2331 index 7ed681a714a5..6c0a542e8ec1 100644
2332 --- a/drivers/usb/serial/qcserial.c
2333 +++ b/drivers/usb/serial/qcserial.c
2334 @@ -151,6 +151,21 @@ static const struct usb_device_id id_table[] = {
2335 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */
2336 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */
2337 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */
2338 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 0)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
2339 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
2340 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a2, 3)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card Modem */
2341 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 0)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Device Management */
2342 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 2)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card NMEA */
2343 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a3, 3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card Modem */
2344 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 0)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Device Management */
2345 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 2)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card NMEA */
2346 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a4, 3)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card Modem */
2347 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 0)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
2348 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 2)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
2349 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a8, 3)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card Modem */
2350 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 0)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Device Management */
2351 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 2)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card NMEA */
2352 + {USB_DEVICE_INTERFACE_NUMBER(0x413c, 0x81a9, 3)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card Modem */
2353
2354 { } /* Terminating entry */
2355 };
2356 diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c
2357 index 4ef2a80728f7..008d805c3d21 100644
2358 --- a/drivers/usb/storage/shuttle_usbat.c
2359 +++ b/drivers/usb/storage/shuttle_usbat.c
2360 @@ -1851,7 +1851,7 @@ static int usbat_probe(struct usb_interface *intf,
2361 us->transport_name = "Shuttle USBAT";
2362 us->transport = usbat_flash_transport;
2363 us->transport_reset = usb_stor_CB_reset;
2364 - us->max_lun = 1;
2365 + us->max_lun = 0;
2366
2367 result = usb_stor_probe2(us);
2368 return result;
2369 diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
2370 index adbeb255616a..042c83b01046 100644
2371 --- a/drivers/usb/storage/unusual_devs.h
2372 +++ b/drivers/usb/storage/unusual_devs.h
2373 @@ -234,6 +234,20 @@ UNUSUAL_DEV( 0x0421, 0x0495, 0x0370, 0x0370,
2374 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2375 US_FL_MAX_SECTORS_64 ),
2376
2377 +/* Reported by Daniele Forsi <dforsi@gmail.com> */
2378 +UNUSUAL_DEV( 0x0421, 0x04b9, 0x0350, 0x0350,
2379 + "Nokia",
2380 + "5300",
2381 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2382 + US_FL_MAX_SECTORS_64 ),
2383 +
2384 +/* Patch submitted by Victor A. Santos <victoraur.santos@gmail.com> */
2385 +UNUSUAL_DEV( 0x0421, 0x05af, 0x0742, 0x0742,
2386 + "Nokia",
2387 + "305",
2388 + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2389 + US_FL_MAX_SECTORS_64),
2390 +
2391 /* Patch submitted by Mikhail Zolotaryov <lebon@lebon.org.ua> */
2392 UNUSUAL_DEV( 0x0421, 0x06aa, 0x1110, 0x1110,
2393 "Nokia",
2394 diff --git a/fs/exec.c b/fs/exec.c
2395 index bb60cda5ee30..dd6aa61c8548 100644
2396 --- a/fs/exec.c
2397 +++ b/fs/exec.c
2398 @@ -654,10 +654,10 @@ int setup_arg_pages(struct linux_binprm *bprm,
2399 unsigned long rlim_stack;
2400
2401 #ifdef CONFIG_STACK_GROWSUP
2402 - /* Limit stack size to 1GB */
2403 + /* Limit stack size */
2404 stack_base = rlimit_max(RLIMIT_STACK);
2405 - if (stack_base > (1 << 30))
2406 - stack_base = 1 << 30;
2407 + if (stack_base > STACK_SIZE_MAX)
2408 + stack_base = STACK_SIZE_MAX;
2409
2410 /* Make sure we didn't let the argument array grow too large. */
2411 if (vma->vm_end - vma->vm_start > stack_base)
2412 diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c
2413 index 8a50b3c18093..e15bcbd5043c 100644
2414 --- a/fs/nfsd/nfs4acl.c
2415 +++ b/fs/nfsd/nfs4acl.c
2416 @@ -385,8 +385,10 @@ sort_pacl(struct posix_acl *pacl)
2417 * by uid/gid. */
2418 int i, j;
2419
2420 - if (pacl->a_count <= 4)
2421 - return; /* no users or groups */
2422 + /* no users or groups */
2423 + if (!pacl || pacl->a_count <= 4)
2424 + return;
2425 +
2426 i = 1;
2427 while (pacl->a_entries[i].e_tag == ACL_USER)
2428 i++;
2429 @@ -513,13 +515,12 @@ posix_state_to_acl(struct posix_acl_state *state, unsigned int flags)
2430
2431 /*
2432 * ACLs with no ACEs are treated differently in the inheritable
2433 - * and effective cases: when there are no inheritable ACEs, we
2434 - * set a zero-length default posix acl:
2435 + * and effective cases: when there are no inheritable ACEs,
2436 + * calls ->set_acl with a NULL ACL structure.
2437 */
2438 - if (state->empty && (flags & NFS4_ACL_TYPE_DEFAULT)) {
2439 - pacl = posix_acl_alloc(0, GFP_KERNEL);
2440 - return pacl ? pacl : ERR_PTR(-ENOMEM);
2441 - }
2442 + if (state->empty && (flags & NFS4_ACL_TYPE_DEFAULT))
2443 + return NULL;
2444 +
2445 /*
2446 * When there are no effective ACEs, the following will end
2447 * up setting a 3-element effective posix ACL with all
2448 diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
2449 index 442509285ca9..ae6a50b7a617 100644
2450 --- a/fs/nfsd/nfs4state.c
2451 +++ b/fs/nfsd/nfs4state.c
2452 @@ -1081,6 +1081,18 @@ static struct nfs4_client *alloc_client(struct xdr_netobj name)
2453 return NULL;
2454 }
2455 clp->cl_name.len = name.len;
2456 + INIT_LIST_HEAD(&clp->cl_sessions);
2457 + idr_init(&clp->cl_stateids);
2458 + atomic_set(&clp->cl_refcount, 0);
2459 + clp->cl_cb_state = NFSD4_CB_UNKNOWN;
2460 + INIT_LIST_HEAD(&clp->cl_idhash);
2461 + INIT_LIST_HEAD(&clp->cl_openowners);
2462 + INIT_LIST_HEAD(&clp->cl_delegations);
2463 + INIT_LIST_HEAD(&clp->cl_lru);
2464 + INIT_LIST_HEAD(&clp->cl_callbacks);
2465 + INIT_LIST_HEAD(&clp->cl_revoked);
2466 + spin_lock_init(&clp->cl_lock);
2467 + rpc_init_wait_queue(&clp->cl_cb_waitq, "Backchannel slot table");
2468 return clp;
2469 }
2470
2471 @@ -1098,6 +1110,7 @@ free_client(struct nfs4_client *clp)
2472 WARN_ON_ONCE(atomic_read(&ses->se_ref));
2473 free_session(ses);
2474 }
2475 + rpc_destroy_wait_queue(&clp->cl_cb_waitq);
2476 free_svc_cred(&clp->cl_cred);
2477 kfree(clp->cl_name.data);
2478 idr_destroy(&clp->cl_stateids);
2479 @@ -1315,7 +1328,6 @@ static struct nfs4_client *create_client(struct xdr_netobj name,
2480 if (clp == NULL)
2481 return NULL;
2482
2483 - INIT_LIST_HEAD(&clp->cl_sessions);
2484 ret = copy_cred(&clp->cl_cred, &rqstp->rq_cred);
2485 if (ret) {
2486 spin_lock(&nn->client_lock);
2487 @@ -1323,20 +1335,9 @@ static struct nfs4_client *create_client(struct xdr_netobj name,
2488 spin_unlock(&nn->client_lock);
2489 return NULL;
2490 }
2491 - idr_init(&clp->cl_stateids);
2492 - atomic_set(&clp->cl_refcount, 0);
2493 - clp->cl_cb_state = NFSD4_CB_UNKNOWN;
2494 - INIT_LIST_HEAD(&clp->cl_idhash);
2495 - INIT_LIST_HEAD(&clp->cl_openowners);
2496 - INIT_LIST_HEAD(&clp->cl_delegations);
2497 - INIT_LIST_HEAD(&clp->cl_lru);
2498 - INIT_LIST_HEAD(&clp->cl_callbacks);
2499 - INIT_LIST_HEAD(&clp->cl_revoked);
2500 - spin_lock_init(&clp->cl_lock);
2501 nfsd4_init_callback(&clp->cl_cb_null);
2502 clp->cl_time = get_seconds();
2503 clear_bit(0, &clp->cl_cb_slot_busy);
2504 - rpc_init_wait_queue(&clp->cl_cb_waitq, "Backchannel slot table");
2505 copy_verf(clp, verf);
2506 rpc_copy_addr((struct sockaddr *) &clp->cl_addr, sa);
2507 gen_confirm(clp);
2508 @@ -3598,9 +3599,16 @@ out:
2509 static __be32
2510 nfsd4_free_lock_stateid(struct nfs4_ol_stateid *stp)
2511 {
2512 - if (check_for_locks(stp->st_file, lockowner(stp->st_stateowner)))
2513 + struct nfs4_lockowner *lo = lockowner(stp->st_stateowner);
2514 +
2515 + if (check_for_locks(stp->st_file, lo))
2516 return nfserr_locks_held;
2517 - release_lock_stateid(stp);
2518 + /*
2519 + * Currently there's a 1-1 lock stateid<->lockowner
2520 + * correspondance, and we have to delete the lockowner when we
2521 + * delete the lock stateid:
2522 + */
2523 + unhash_lockowner(lo);
2524 return nfs_ok;
2525 }
2526
2527 @@ -4044,6 +4052,10 @@ static bool same_lockowner_ino(struct nfs4_lockowner *lo, struct inode *inode, c
2528
2529 if (!same_owner_str(&lo->lo_owner, owner, clid))
2530 return false;
2531 + if (list_empty(&lo->lo_owner.so_stateids)) {
2532 + WARN_ON_ONCE(1);
2533 + return false;
2534 + }
2535 lst = list_first_entry(&lo->lo_owner.so_stateids,
2536 struct nfs4_ol_stateid, st_perstateowner);
2537 return lst->st_file->fi_inode == inode;
2538 diff --git a/fs/posix_acl.c b/fs/posix_acl.c
2539 index 8bd2135b7f82..3542f1f814e2 100644
2540 --- a/fs/posix_acl.c
2541 +++ b/fs/posix_acl.c
2542 @@ -158,6 +158,12 @@ posix_acl_equiv_mode(const struct posix_acl *acl, umode_t *mode_p)
2543 umode_t mode = 0;
2544 int not_equiv = 0;
2545
2546 + /*
2547 + * A null ACL can always be presented as mode bits.
2548 + */
2549 + if (!acl)
2550 + return 0;
2551 +
2552 FOREACH_ACL_ENTRY(pa, acl, pe) {
2553 switch (pa->e_tag) {
2554 case ACL_USER_OBJ:
2555 diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
2556 index 99d0fbcbaf79..7a13848d635c 100644
2557 --- a/include/linux/ftrace.h
2558 +++ b/include/linux/ftrace.h
2559 @@ -524,6 +524,7 @@ static inline int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_a
2560 extern int ftrace_arch_read_dyn_info(char *buf, int size);
2561
2562 extern int skip_trace(unsigned long ip);
2563 +extern void ftrace_module_init(struct module *mod);
2564
2565 extern void ftrace_disable_daemon(void);
2566 extern void ftrace_enable_daemon(void);
2567 @@ -533,6 +534,7 @@ static inline int ftrace_force_update(void) { return 0; }
2568 static inline void ftrace_disable_daemon(void) { }
2569 static inline void ftrace_enable_daemon(void) { }
2570 static inline void ftrace_release_mod(struct module *mod) {}
2571 +static inline void ftrace_module_init(struct module *mod) {}
2572 static inline int register_ftrace_command(struct ftrace_func_command *cmd)
2573 {
2574 return -EINVAL;
2575 diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
2576 index c2559847d7ee..422eac8538fd 100644
2577 --- a/include/linux/hyperv.h
2578 +++ b/include/linux/hyperv.h
2579 @@ -483,15 +483,18 @@ hv_get_ringbuffer_availbytes(struct hv_ring_buffer_info *rbi,
2580 * 0 . 13 (Windows Server 2008)
2581 * 1 . 1 (Windows 7)
2582 * 2 . 4 (Windows 8)
2583 + * 3 . 0 (Windows 8 R2)
2584 */
2585
2586 #define VERSION_WS2008 ((0 << 16) | (13))
2587 #define VERSION_WIN7 ((1 << 16) | (1))
2588 #define VERSION_WIN8 ((2 << 16) | (4))
2589 +#define VERSION_WIN8_1 ((3 << 16) | (0))
2590 +
2591
2592 #define VERSION_INVAL -1
2593
2594 -#define VERSION_CURRENT VERSION_WIN8
2595 +#define VERSION_CURRENT VERSION_WIN8_1
2596
2597 /* Make maximum size of pipe payload of 16K */
2598 #define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384)
2599 @@ -894,7 +897,7 @@ struct vmbus_channel_relid_released {
2600 struct vmbus_channel_initiate_contact {
2601 struct vmbus_channel_message_header header;
2602 u32 vmbus_version_requested;
2603 - u32 padding2;
2604 + u32 target_vcpu; /* The VCPU the host should respond to */
2605 u64 interrupt_page;
2606 u64 monitor_page1;
2607 u64 monitor_page2;
2608 diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
2609 index 5fa5afeeb759..6de0f2c14ec0 100644
2610 --- a/include/linux/interrupt.h
2611 +++ b/include/linux/interrupt.h
2612 @@ -239,7 +239,40 @@ static inline int check_wakeup_irqs(void) { return 0; }
2613
2614 extern cpumask_var_t irq_default_affinity;
2615
2616 -extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask);
2617 +/* Internal implementation. Use the helpers below */
2618 +extern int __irq_set_affinity(unsigned int irq, const struct cpumask *cpumask,
2619 + bool force);
2620 +
2621 +/**
2622 + * irq_set_affinity - Set the irq affinity of a given irq
2623 + * @irq: Interrupt to set affinity
2624 + * @mask: cpumask
2625 + *
2626 + * Fails if cpumask does not contain an online CPU
2627 + */
2628 +static inline int
2629 +irq_set_affinity(unsigned int irq, const struct cpumask *cpumask)
2630 +{
2631 + return __irq_set_affinity(irq, cpumask, false);
2632 +}
2633 +
2634 +/**
2635 + * irq_force_affinity - Force the irq affinity of a given irq
2636 + * @irq: Interrupt to set affinity
2637 + * @mask: cpumask
2638 + *
2639 + * Same as irq_set_affinity, but without checking the mask against
2640 + * online cpus.
2641 + *
2642 + * Solely for low level cpu hotplug code, where we need to make per
2643 + * cpu interrupts affine before the cpu becomes online.
2644 + */
2645 +static inline int
2646 +irq_force_affinity(unsigned int irq, const struct cpumask *cpumask)
2647 +{
2648 + return __irq_set_affinity(irq, cpumask, true);
2649 +}
2650 +
2651 extern int irq_can_set_affinity(unsigned int irq);
2652 extern int irq_select_affinity(unsigned int irq);
2653
2654 @@ -275,6 +308,11 @@ static inline int irq_set_affinity(unsigned int irq, const struct cpumask *m)
2655 return -EINVAL;
2656 }
2657
2658 +static inline int irq_force_affinity(unsigned int irq, const struct cpumask *cpumask)
2659 +{
2660 + return 0;
2661 +}
2662 +
2663 static inline int irq_can_set_affinity(unsigned int irq)
2664 {
2665 return 0;
2666 diff --git a/include/linux/irq.h b/include/linux/irq.h
2667 index bc4e06611958..d591bfe1475b 100644
2668 --- a/include/linux/irq.h
2669 +++ b/include/linux/irq.h
2670 @@ -375,7 +375,8 @@ extern void remove_percpu_irq(unsigned int irq, struct irqaction *act);
2671
2672 extern void irq_cpu_online(void);
2673 extern void irq_cpu_offline(void);
2674 -extern int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *cpumask);
2675 +extern int irq_set_affinity_locked(struct irq_data *data,
2676 + const struct cpumask *cpumask, bool force);
2677
2678 #ifdef CONFIG_GENERIC_HARDIRQS
2679
2680 diff --git a/include/trace/events/module.h b/include/trace/events/module.h
2681 index 161932737416..ca298c7157ae 100644
2682 --- a/include/trace/events/module.h
2683 +++ b/include/trace/events/module.h
2684 @@ -78,7 +78,7 @@ DECLARE_EVENT_CLASS(module_refcnt,
2685
2686 TP_fast_assign(
2687 __entry->ip = ip;
2688 - __entry->refcnt = __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs);
2689 + __entry->refcnt = __this_cpu_read(mod->refptr->incs) - __this_cpu_read(mod->refptr->decs);
2690 __assign_str(name, mod->name);
2691 ),
2692
2693 diff --git a/include/uapi/drm/tegra_drm.h b/include/uapi/drm/tegra_drm.h
2694 index 6e132a2f7420..86b1f9942d0a 100644
2695 --- a/include/uapi/drm/tegra_drm.h
2696 +++ b/include/uapi/drm/tegra_drm.h
2697 @@ -103,7 +103,6 @@ struct drm_tegra_submit {
2698 __u32 num_waitchks;
2699 __u32 waitchk_mask;
2700 __u32 timeout;
2701 - __u32 pad;
2702 __u64 syncpts;
2703 __u64 cmdbufs;
2704 __u64 relocs;
2705 diff --git a/kernel/futex.c b/kernel/futex.c
2706 index 3bc18bf48d0c..625a4e659e7a 100644
2707 --- a/kernel/futex.c
2708 +++ b/kernel/futex.c
2709 @@ -592,6 +592,55 @@ void exit_pi_state_list(struct task_struct *curr)
2710 raw_spin_unlock_irq(&curr->pi_lock);
2711 }
2712
2713 +/*
2714 + * We need to check the following states:
2715 + *
2716 + * Waiter | pi_state | pi->owner | uTID | uODIED | ?
2717 + *
2718 + * [1] NULL | --- | --- | 0 | 0/1 | Valid
2719 + * [2] NULL | --- | --- | >0 | 0/1 | Valid
2720 + *
2721 + * [3] Found | NULL | -- | Any | 0/1 | Invalid
2722 + *
2723 + * [4] Found | Found | NULL | 0 | 1 | Valid
2724 + * [5] Found | Found | NULL | >0 | 1 | Invalid
2725 + *
2726 + * [6] Found | Found | task | 0 | 1 | Valid
2727 + *
2728 + * [7] Found | Found | NULL | Any | 0 | Invalid
2729 + *
2730 + * [8] Found | Found | task | ==taskTID | 0/1 | Valid
2731 + * [9] Found | Found | task | 0 | 0 | Invalid
2732 + * [10] Found | Found | task | !=taskTID | 0/1 | Invalid
2733 + *
2734 + * [1] Indicates that the kernel can acquire the futex atomically. We
2735 + * came came here due to a stale FUTEX_WAITERS/FUTEX_OWNER_DIED bit.
2736 + *
2737 + * [2] Valid, if TID does not belong to a kernel thread. If no matching
2738 + * thread is found then it indicates that the owner TID has died.
2739 + *
2740 + * [3] Invalid. The waiter is queued on a non PI futex
2741 + *
2742 + * [4] Valid state after exit_robust_list(), which sets the user space
2743 + * value to FUTEX_WAITERS | FUTEX_OWNER_DIED.
2744 + *
2745 + * [5] The user space value got manipulated between exit_robust_list()
2746 + * and exit_pi_state_list()
2747 + *
2748 + * [6] Valid state after exit_pi_state_list() which sets the new owner in
2749 + * the pi_state but cannot access the user space value.
2750 + *
2751 + * [7] pi_state->owner can only be NULL when the OWNER_DIED bit is set.
2752 + *
2753 + * [8] Owner and user space value match
2754 + *
2755 + * [9] There is no transient state which sets the user space TID to 0
2756 + * except exit_robust_list(), but this is indicated by the
2757 + * FUTEX_OWNER_DIED bit. See [4]
2758 + *
2759 + * [10] There is no transient state which leaves owner and user space
2760 + * TID out of sync.
2761 + */
2762 static int
2763 lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
2764 union futex_key *key, struct futex_pi_state **ps)
2765 @@ -607,12 +656,13 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
2766 plist_for_each_entry_safe(this, next, head, list) {
2767 if (match_futex(&this->key, key)) {
2768 /*
2769 - * Another waiter already exists - bump up
2770 - * the refcount and return its pi_state:
2771 + * Sanity check the waiter before increasing
2772 + * the refcount and attaching to it.
2773 */
2774 pi_state = this->pi_state;
2775 /*
2776 - * Userspace might have messed up non-PI and PI futexes
2777 + * Userspace might have messed up non-PI and
2778 + * PI futexes [3]
2779 */
2780 if (unlikely(!pi_state))
2781 return -EINVAL;
2782 @@ -620,34 +670,70 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
2783 WARN_ON(!atomic_read(&pi_state->refcount));
2784
2785 /*
2786 - * When pi_state->owner is NULL then the owner died
2787 - * and another waiter is on the fly. pi_state->owner
2788 - * is fixed up by the task which acquires
2789 - * pi_state->rt_mutex.
2790 - *
2791 - * We do not check for pid == 0 which can happen when
2792 - * the owner died and robust_list_exit() cleared the
2793 - * TID.
2794 + * Handle the owner died case:
2795 */
2796 - if (pid && pi_state->owner) {
2797 + if (uval & FUTEX_OWNER_DIED) {
2798 + /*
2799 + * exit_pi_state_list sets owner to NULL and
2800 + * wakes the topmost waiter. The task which
2801 + * acquires the pi_state->rt_mutex will fixup
2802 + * owner.
2803 + */
2804 + if (!pi_state->owner) {
2805 + /*
2806 + * No pi state owner, but the user
2807 + * space TID is not 0. Inconsistent
2808 + * state. [5]
2809 + */
2810 + if (pid)
2811 + return -EINVAL;
2812 + /*
2813 + * Take a ref on the state and
2814 + * return. [4]
2815 + */
2816 + goto out_state;
2817 + }
2818 +
2819 /*
2820 - * Bail out if user space manipulated the
2821 - * futex value.
2822 + * If TID is 0, then either the dying owner
2823 + * has not yet executed exit_pi_state_list()
2824 + * or some waiter acquired the rtmutex in the
2825 + * pi state, but did not yet fixup the TID in
2826 + * user space.
2827 + *
2828 + * Take a ref on the state and return. [6]
2829 */
2830 - if (pid != task_pid_vnr(pi_state->owner))
2831 + if (!pid)
2832 + goto out_state;
2833 + } else {
2834 + /*
2835 + * If the owner died bit is not set,
2836 + * then the pi_state must have an
2837 + * owner. [7]
2838 + */
2839 + if (!pi_state->owner)
2840 return -EINVAL;
2841 }
2842
2843 + /*
2844 + * Bail out if user space manipulated the
2845 + * futex value. If pi state exists then the
2846 + * owner TID must be the same as the user
2847 + * space TID. [9/10]
2848 + */
2849 + if (pid != task_pid_vnr(pi_state->owner))
2850 + return -EINVAL;
2851 +
2852 + out_state:
2853 atomic_inc(&pi_state->refcount);
2854 *ps = pi_state;
2855 -
2856 return 0;
2857 }
2858 }
2859
2860 /*
2861 * We are the first waiter - try to look up the real owner and attach
2862 - * the new pi_state to it, but bail out when TID = 0
2863 + * the new pi_state to it, but bail out when TID = 0 [1]
2864 */
2865 if (!pid)
2866 return -ESRCH;
2867 @@ -655,6 +741,11 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
2868 if (!p)
2869 return -ESRCH;
2870
2871 + if (!p->mm) {
2872 + put_task_struct(p);
2873 + return -EPERM;
2874 + }
2875 +
2876 /*
2877 * We need to look at the task state flags to figure out,
2878 * whether the task is exiting. To protect against the do_exit
2879 @@ -675,6 +766,9 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
2880 return ret;
2881 }
2882
2883 + /*
2884 + * No existing pi state. First waiter. [2]
2885 + */
2886 pi_state = alloc_pi_state();
2887
2888 /*
2889 @@ -746,10 +840,18 @@ retry:
2890 return -EDEADLK;
2891
2892 /*
2893 - * Surprise - we got the lock. Just return to userspace:
2894 + * Surprise - we got the lock, but we do not trust user space at all.
2895 */
2896 - if (unlikely(!curval))
2897 - return 1;
2898 + if (unlikely(!curval)) {
2899 + /*
2900 + * We verify whether there is kernel state for this
2901 + * futex. If not, we can safely assume, that the 0 ->
2902 + * TID transition is correct. If state exists, we do
2903 + * not bother to fixup the user space state as it was
2904 + * corrupted already.
2905 + */
2906 + return futex_top_waiter(hb, key) ? -EINVAL : 1;
2907 + }
2908
2909 uval = curval;
2910
2911 @@ -879,6 +981,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this)
2912 struct task_struct *new_owner;
2913 struct futex_pi_state *pi_state = this->pi_state;
2914 u32 uninitialized_var(curval), newval;
2915 + int ret = 0;
2916
2917 if (!pi_state)
2918 return -EINVAL;
2919 @@ -902,23 +1005,19 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this)
2920 new_owner = this->task;
2921
2922 /*
2923 - * We pass it to the next owner. (The WAITERS bit is always
2924 - * kept enabled while there is PI state around. We must also
2925 - * preserve the owner died bit.)
2926 + * We pass it to the next owner. The WAITERS bit is always
2927 + * kept enabled while there is PI state around. We cleanup the
2928 + * owner died bit, because we are the owner.
2929 */
2930 - if (!(uval & FUTEX_OWNER_DIED)) {
2931 - int ret = 0;
2932 + newval = FUTEX_WAITERS | task_pid_vnr(new_owner);
2933
2934 - newval = FUTEX_WAITERS | task_pid_vnr(new_owner);
2935 -
2936 - if (cmpxchg_futex_value_locked(&curval, uaddr, uval, newval))
2937 - ret = -EFAULT;
2938 - else if (curval != uval)
2939 - ret = -EINVAL;
2940 - if (ret) {
2941 - raw_spin_unlock(&pi_state->pi_mutex.wait_lock);
2942 - return ret;
2943 - }
2944 + if (cmpxchg_futex_value_locked(&curval, uaddr, uval, newval))
2945 + ret = -EFAULT;
2946 + else if (curval != uval)
2947 + ret = -EINVAL;
2948 + if (ret) {
2949 + raw_spin_unlock(&pi_state->pi_mutex.wait_lock);
2950 + return ret;
2951 }
2952
2953 raw_spin_lock_irq(&pi_state->owner->pi_lock);
2954 @@ -1197,7 +1296,7 @@ void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key,
2955 *
2956 * Return:
2957 * 0 - failed to acquire the lock atomically;
2958 - * 1 - acquired the lock;
2959 + * >0 - acquired the lock, return value is vpid of the top_waiter
2960 * <0 - error
2961 */
2962 static int futex_proxy_trylock_atomic(u32 __user *pifutex,
2963 @@ -1208,7 +1307,7 @@ static int futex_proxy_trylock_atomic(u32 __user *pifutex,
2964 {
2965 struct futex_q *top_waiter = NULL;
2966 u32 curval;
2967 - int ret;
2968 + int ret, vpid;
2969
2970 if (get_futex_value_locked(&curval, pifutex))
2971 return -EFAULT;
2972 @@ -1236,11 +1335,13 @@ static int futex_proxy_trylock_atomic(u32 __user *pifutex,
2973 * the contended case or if set_waiters is 1. The pi_state is returned
2974 * in ps in contended cases.
2975 */
2976 + vpid = task_pid_vnr(top_waiter->task);
2977 ret = futex_lock_pi_atomic(pifutex, hb2, key2, ps, top_waiter->task,
2978 set_waiters);
2979 - if (ret == 1)
2980 + if (ret == 1) {
2981 requeue_pi_wake_futex(top_waiter, key2, hb2);
2982 -
2983 + return vpid;
2984 + }
2985 return ret;
2986 }
2987
2988 @@ -1272,10 +1373,16 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
2989 struct futex_hash_bucket *hb1, *hb2;
2990 struct plist_head *head1;
2991 struct futex_q *this, *next;
2992 - u32 curval2;
2993
2994 if (requeue_pi) {
2995 /*
2996 + * Requeue PI only works on two distinct uaddrs. This
2997 + * check is only valid for private futexes. See below.
2998 + */
2999 + if (uaddr1 == uaddr2)
3000 + return -EINVAL;
3001 +
3002 + /*
3003 * requeue_pi requires a pi_state, try to allocate it now
3004 * without any locks in case it fails.
3005 */
3006 @@ -1313,6 +1420,15 @@ retry:
3007 if (unlikely(ret != 0))
3008 goto out_put_key1;
3009
3010 + /*
3011 + * The check above which compares uaddrs is not sufficient for
3012 + * shared futexes. We need to compare the keys:
3013 + */
3014 + if (requeue_pi && match_futex(&key1, &key2)) {
3015 + ret = -EINVAL;
3016 + goto out_put_keys;
3017 + }
3018 +
3019 hb1 = hash_futex(&key1);
3020 hb2 = hash_futex(&key2);
3021
3022 @@ -1358,16 +1474,25 @@ retry_private:
3023 * At this point the top_waiter has either taken uaddr2 or is
3024 * waiting on it. If the former, then the pi_state will not
3025 * exist yet, look it up one more time to ensure we have a
3026 - * reference to it.
3027 + * reference to it. If the lock was taken, ret contains the
3028 + * vpid of the top waiter task.
3029 */
3030 - if (ret == 1) {
3031 + if (ret > 0) {
3032 WARN_ON(pi_state);
3033 drop_count++;
3034 task_count++;
3035 - ret = get_futex_value_locked(&curval2, uaddr2);
3036 - if (!ret)
3037 - ret = lookup_pi_state(curval2, hb2, &key2,
3038 - &pi_state);
3039 + /*
3040 + * If we acquired the lock, then the user
3041 + * space value of uaddr2 should be vpid. It
3042 + * cannot be changed by the top waiter as it
3043 + * is blocked on hb2 lock if it tries to do
3044 + * so. If something fiddled with it behind our
3045 + * back the pi state lookup might unearth
3046 + * it. So we rather use the known value than
3047 + * rereading and handing potential crap to
3048 + * lookup_pi_state.
3049 + */
3050 + ret = lookup_pi_state(ret, hb2, &key2, &pi_state);
3051 }
3052
3053 switch (ret) {
3054 @@ -2137,9 +2262,10 @@ retry:
3055 /*
3056 * To avoid races, try to do the TID -> 0 atomic transition
3057 * again. If it succeeds then we can return without waking
3058 - * anyone else up:
3059 + * anyone else up. We only try this if neither the waiters nor
3060 + * the owner died bit are set.
3061 */
3062 - if (!(uval & FUTEX_OWNER_DIED) &&
3063 + if (!(uval & ~FUTEX_TID_MASK) &&
3064 cmpxchg_futex_value_locked(&uval, uaddr, vpid, 0))
3065 goto pi_faulted;
3066 /*
3067 @@ -2171,11 +2297,9 @@ retry:
3068 /*
3069 * No waiters - kernel unlocks the futex:
3070 */
3071 - if (!(uval & FUTEX_OWNER_DIED)) {
3072 - ret = unlock_futex_pi(uaddr, uval);
3073 - if (ret == -EFAULT)
3074 - goto pi_faulted;
3075 - }
3076 + ret = unlock_futex_pi(uaddr, uval);
3077 + if (ret == -EFAULT)
3078 + goto pi_faulted;
3079
3080 out_unlock:
3081 spin_unlock(&hb->lock);
3082 @@ -2334,6 +2458,15 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
3083 if (ret)
3084 goto out_key2;
3085
3086 + /*
3087 + * The check above which compares uaddrs is not sufficient for
3088 + * shared futexes. We need to compare the keys:
3089 + */
3090 + if (match_futex(&q.key, &key2)) {
3091 + ret = -EINVAL;
3092 + goto out_put_keys;
3093 + }
3094 +
3095 /* Queue the futex_q, drop the hb lock, wait for wakeup. */
3096 futex_wait_queue_me(hb, &q, to);
3097
3098 diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
3099 index 2288fbdada16..aadf4b7a607c 100644
3100 --- a/kernel/hrtimer.c
3101 +++ b/kernel/hrtimer.c
3102 @@ -245,6 +245,11 @@ again:
3103 goto again;
3104 }
3105 timer->base = new_base;
3106 + } else {
3107 + if (cpu != this_cpu && hrtimer_check_target(timer, new_base)) {
3108 + cpu = this_cpu;
3109 + goto again;
3110 + }
3111 }
3112 return new_base;
3113 }
3114 @@ -580,6 +585,23 @@ hrtimer_force_reprogram(struct hrtimer_cpu_base *cpu_base, int skip_equal)
3115
3116 cpu_base->expires_next.tv64 = expires_next.tv64;
3117
3118 + /*
3119 + * If a hang was detected in the last timer interrupt then we
3120 + * leave the hang delay active in the hardware. We want the
3121 + * system to make progress. That also prevents the following
3122 + * scenario:
3123 + * T1 expires 50ms from now
3124 + * T2 expires 5s from now
3125 + *
3126 + * T1 is removed, so this code is called and would reprogram
3127 + * the hardware to 5s from now. Any hrtimer_start after that
3128 + * will not reprogram the hardware due to hang_detected being
3129 + * set. So we'd effectivly block all timers until the T2 event
3130 + * fires.
3131 + */
3132 + if (cpu_base->hang_detected)
3133 + return;
3134 +
3135 if (cpu_base->expires_next.tv64 != KTIME_MAX)
3136 tick_program_event(cpu_base->expires_next, 1);
3137 }
3138 @@ -977,11 +999,8 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
3139 /* Remove an active timer from the queue: */
3140 ret = remove_hrtimer(timer, base);
3141
3142 - /* Switch the timer base, if necessary: */
3143 - new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
3144 -
3145 if (mode & HRTIMER_MODE_REL) {
3146 - tim = ktime_add_safe(tim, new_base->get_time());
3147 + tim = ktime_add_safe(tim, base->get_time());
3148 /*
3149 * CONFIG_TIME_LOW_RES is a temporary way for architectures
3150 * to signal that they simply return xtime in
3151 @@ -996,6 +1015,9 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
3152
3153 hrtimer_set_expires_range_ns(timer, tim, delta_ns);
3154
3155 + /* Switch the timer base, if necessary: */
3156 + new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
3157 +
3158 timer_stats_hrtimer_set_start_info(timer);
3159
3160 leftmost = enqueue_hrtimer(timer, new_base);
3161 diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
3162 index 9bd5c8a6c8ee..8815abfdf2cb 100644
3163 --- a/kernel/irq/manage.c
3164 +++ b/kernel/irq/manage.c
3165 @@ -150,7 +150,7 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask,
3166 struct irq_chip *chip = irq_data_get_irq_chip(data);
3167 int ret;
3168
3169 - ret = chip->irq_set_affinity(data, mask, false);
3170 + ret = chip->irq_set_affinity(data, mask, force);
3171 switch (ret) {
3172 case IRQ_SET_MASK_OK:
3173 cpumask_copy(data->affinity, mask);
3174 @@ -162,7 +162,8 @@ int irq_do_set_affinity(struct irq_data *data, const struct cpumask *mask,
3175 return ret;
3176 }
3177
3178 -int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
3179 +int irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask,
3180 + bool force)
3181 {
3182 struct irq_chip *chip = irq_data_get_irq_chip(data);
3183 struct irq_desc *desc = irq_data_to_desc(data);
3184 @@ -172,7 +173,7 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
3185 return -EINVAL;
3186
3187 if (irq_can_move_pcntxt(data)) {
3188 - ret = irq_do_set_affinity(data, mask, false);
3189 + ret = irq_do_set_affinity(data, mask, force);
3190 } else {
3191 irqd_set_move_pending(data);
3192 irq_copy_pending(desc, mask);
3193 @@ -187,13 +188,7 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
3194 return ret;
3195 }
3196
3197 -/**
3198 - * irq_set_affinity - Set the irq affinity of a given irq
3199 - * @irq: Interrupt to set affinity
3200 - * @mask: cpumask
3201 - *
3202 - */
3203 -int irq_set_affinity(unsigned int irq, const struct cpumask *mask)
3204 +int __irq_set_affinity(unsigned int irq, const struct cpumask *mask, bool force)
3205 {
3206 struct irq_desc *desc = irq_to_desc(irq);
3207 unsigned long flags;
3208 @@ -203,7 +198,7 @@ int irq_set_affinity(unsigned int irq, const struct cpumask *mask)
3209 return -EINVAL;
3210
3211 raw_spin_lock_irqsave(&desc->lock, flags);
3212 - ret = __irq_set_affinity_locked(irq_desc_get_irq_data(desc), mask);
3213 + ret = irq_set_affinity_locked(irq_desc_get_irq_data(desc), mask, force);
3214 raw_spin_unlock_irqrestore(&desc->lock, flags);
3215 return ret;
3216 }
3217 diff --git a/kernel/module.c b/kernel/module.c
3218 index fa53db8aadeb..10a3af821d28 100644
3219 --- a/kernel/module.c
3220 +++ b/kernel/module.c
3221 @@ -3279,6 +3279,9 @@ static int load_module(struct load_info *info, const char __user *uargs,
3222
3223 dynamic_debug_setup(info->debug, info->num_debug);
3224
3225 + /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */
3226 + ftrace_module_init(mod);
3227 +
3228 /* Finally it's fully formed, ready to start executing. */
3229 err = complete_formation(mod, info);
3230 if (err)
3231 diff --git a/kernel/timer.c b/kernel/timer.c
3232 index 15bc1b41021d..20f45ea6f5a4 100644
3233 --- a/kernel/timer.c
3234 +++ b/kernel/timer.c
3235 @@ -822,7 +822,7 @@ unsigned long apply_slack(struct timer_list *timer, unsigned long expires)
3236
3237 bit = find_last_bit(&mask, BITS_PER_LONG);
3238
3239 - mask = (1 << bit) - 1;
3240 + mask = (1UL << bit) - 1;
3241
3242 expires_limit = expires_limit & ~(mask);
3243
3244 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
3245 index 4b93b8412252..797d3b91a30b 100644
3246 --- a/kernel/trace/ftrace.c
3247 +++ b/kernel/trace/ftrace.c
3248 @@ -4222,16 +4222,11 @@ static void ftrace_init_module(struct module *mod,
3249 ftrace_process_locs(mod, start, end);
3250 }
3251
3252 -static int ftrace_module_notify_enter(struct notifier_block *self,
3253 - unsigned long val, void *data)
3254 +void ftrace_module_init(struct module *mod)
3255 {
3256 - struct module *mod = data;
3257 -
3258 - if (val == MODULE_STATE_COMING)
3259 - ftrace_init_module(mod, mod->ftrace_callsites,
3260 - mod->ftrace_callsites +
3261 - mod->num_ftrace_callsites);
3262 - return 0;
3263 + ftrace_init_module(mod, mod->ftrace_callsites,
3264 + mod->ftrace_callsites +
3265 + mod->num_ftrace_callsites);
3266 }
3267
3268 static int ftrace_module_notify_exit(struct notifier_block *self,
3269 @@ -4245,11 +4240,6 @@ static int ftrace_module_notify_exit(struct notifier_block *self,
3270 return 0;
3271 }
3272 #else
3273 -static int ftrace_module_notify_enter(struct notifier_block *self,
3274 - unsigned long val, void *data)
3275 -{
3276 - return 0;
3277 -}
3278 static int ftrace_module_notify_exit(struct notifier_block *self,
3279 unsigned long val, void *data)
3280 {
3281 @@ -4257,11 +4247,6 @@ static int ftrace_module_notify_exit(struct notifier_block *self,
3282 }
3283 #endif /* CONFIG_MODULES */
3284
3285 -struct notifier_block ftrace_module_enter_nb = {
3286 - .notifier_call = ftrace_module_notify_enter,
3287 - .priority = INT_MAX, /* Run before anything that can use kprobes */
3288 -};
3289 -
3290 struct notifier_block ftrace_module_exit_nb = {
3291 .notifier_call = ftrace_module_notify_exit,
3292 .priority = INT_MIN, /* Run after anything that can remove kprobes */
3293 @@ -4298,10 +4283,6 @@ void __init ftrace_init(void)
3294 __start_mcount_loc,
3295 __stop_mcount_loc);
3296
3297 - ret = register_module_notifier(&ftrace_module_enter_nb);
3298 - if (ret)
3299 - pr_warning("Failed to register trace ftrace module enter notifier\n");
3300 -
3301 ret = register_module_notifier(&ftrace_module_exit_nb);
3302 if (ret)
3303 pr_warning("Failed to register trace ftrace module exit notifier\n");
3304 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
3305 index db7a6ac7c0a8..652f36dd40de 100644
3306 --- a/kernel/workqueue.c
3307 +++ b/kernel/workqueue.c
3308 @@ -1881,6 +1881,12 @@ static void send_mayday(struct work_struct *work)
3309
3310 /* mayday mayday mayday */
3311 if (list_empty(&pwq->mayday_node)) {
3312 + /*
3313 + * If @pwq is for an unbound wq, its base ref may be put at
3314 + * any time due to an attribute change. Pin @pwq until the
3315 + * rescuer is done with it.
3316 + */
3317 + get_pwq(pwq);
3318 list_add_tail(&pwq->mayday_node, &wq->maydays);
3319 wake_up_process(wq->rescuer->task);
3320 }
3321 @@ -2356,6 +2362,7 @@ static int rescuer_thread(void *__rescuer)
3322 struct worker *rescuer = __rescuer;
3323 struct workqueue_struct *wq = rescuer->rescue_wq;
3324 struct list_head *scheduled = &rescuer->scheduled;
3325 + bool should_stop;
3326
3327 set_user_nice(current, RESCUER_NICE_LEVEL);
3328
3329 @@ -2367,11 +2374,15 @@ static int rescuer_thread(void *__rescuer)
3330 repeat:
3331 set_current_state(TASK_INTERRUPTIBLE);
3332
3333 - if (kthread_should_stop()) {
3334 - __set_current_state(TASK_RUNNING);
3335 - rescuer->task->flags &= ~PF_WQ_WORKER;
3336 - return 0;
3337 - }
3338 + /*
3339 + * By the time the rescuer is requested to stop, the workqueue
3340 + * shouldn't have any work pending, but @wq->maydays may still have
3341 + * pwq(s) queued. This can happen by non-rescuer workers consuming
3342 + * all the work items before the rescuer got to them. Go through
3343 + * @wq->maydays processing before acting on should_stop so that the
3344 + * list is always empty on exit.
3345 + */
3346 + should_stop = kthread_should_stop();
3347
3348 /* see whether any pwq is asking for help */
3349 spin_lock_irq(&wq_mayday_lock);
3350 @@ -2403,6 +2414,12 @@ repeat:
3351 process_scheduled_works(rescuer);
3352
3353 /*
3354 + * Put the reference grabbed by send_mayday(). @pool won't
3355 + * go away while we're holding its lock.
3356 + */
3357 + put_pwq(pwq);
3358 +
3359 + /*
3360 * Leave this pool. If keep_working() is %true, notify a
3361 * regular worker; otherwise, we end up with 0 concurrency
3362 * and stalling the execution.
3363 @@ -2417,6 +2434,12 @@ repeat:
3364
3365 spin_unlock_irq(&wq_mayday_lock);
3366
3367 + if (should_stop) {
3368 + __set_current_state(TASK_RUNNING);
3369 + rescuer->task->flags &= ~PF_WQ_WORKER;
3370 + return 0;
3371 + }
3372 +
3373 /* rescuers should never participate in concurrency management */
3374 WARN_ON_ONCE(!(rescuer->flags & WORKER_NOT_RUNNING));
3375 schedule();
3376 @@ -4043,7 +4066,8 @@ static void wq_update_unbound_numa(struct workqueue_struct *wq, int cpu,
3377 if (!pwq) {
3378 pr_warning("workqueue: allocation failed while updating NUMA affinity of \"%s\"\n",
3379 wq->name);
3380 - goto out_unlock;
3381 + mutex_lock(&wq->mutex);
3382 + goto use_dfl_pwq;
3383 }
3384
3385 /*
3386 diff --git a/mm/memory-failure.c b/mm/memory-failure.c
3387 index 59c62fa75c5a..4254eb021583 100644
3388 --- a/mm/memory-failure.c
3389 +++ b/mm/memory-failure.c
3390 @@ -1083,15 +1083,16 @@ int memory_failure(unsigned long pfn, int trapno, int flags)
3391 return 0;
3392 } else if (PageHuge(hpage)) {
3393 /*
3394 - * Check "just unpoisoned", "filter hit", and
3395 - * "race with other subpage."
3396 + * Check "filter hit" and "race with other subpage."
3397 */
3398 lock_page(hpage);
3399 - if (!PageHWPoison(hpage)
3400 - || (hwpoison_filter(p) && TestClearPageHWPoison(p))
3401 - || (p != hpage && TestSetPageHWPoison(hpage))) {
3402 - atomic_long_sub(nr_pages, &num_poisoned_pages);
3403 - return 0;
3404 + if (PageHWPoison(hpage)) {
3405 + if ((hwpoison_filter(p) && TestClearPageHWPoison(p))
3406 + || (p != hpage && TestSetPageHWPoison(hpage))) {
3407 + atomic_long_sub(nr_pages, &num_poisoned_pages);
3408 + unlock_page(hpage);
3409 + return 0;
3410 + }
3411 }
3412 set_page_hwpoison_huge_page(hpage);
3413 res = dequeue_hwpoisoned_huge_page(hpage);
3414 diff --git a/mm/memory.c b/mm/memory.c
3415 index 4b60011907d7..ebe0f285c0e7 100644
3416 --- a/mm/memory.c
3417 +++ b/mm/memory.c
3418 @@ -1937,12 +1937,17 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
3419 unsigned long address, unsigned int fault_flags)
3420 {
3421 struct vm_area_struct *vma;
3422 + vm_flags_t vm_flags;
3423 int ret;
3424
3425 vma = find_extend_vma(mm, address);
3426 if (!vma || address < vma->vm_start)
3427 return -EFAULT;
3428
3429 + vm_flags = (fault_flags & FAULT_FLAG_WRITE) ? VM_WRITE : VM_READ;
3430 + if (!(vm_flags & vma->vm_flags))
3431 + return -EFAULT;
3432 +
3433 ret = handle_mm_fault(mm, vma, address, fault_flags);
3434 if (ret & VM_FAULT_ERROR) {
3435 if (ret & VM_FAULT_OOM)
3436 diff --git a/mm/mremap.c b/mm/mremap.c
3437 index 463a25705ac6..2201d060c31b 100644
3438 --- a/mm/mremap.c
3439 +++ b/mm/mremap.c
3440 @@ -175,10 +175,17 @@ unsigned long move_page_tables(struct vm_area_struct *vma,
3441 break;
3442 if (pmd_trans_huge(*old_pmd)) {
3443 int err = 0;
3444 - if (extent == HPAGE_PMD_SIZE)
3445 + if (extent == HPAGE_PMD_SIZE) {
3446 + VM_BUG_ON(vma->vm_file || !vma->anon_vma);
3447 + /* See comment in move_ptes() */
3448 + if (need_rmap_locks)
3449 + anon_vma_lock_write(vma->anon_vma);
3450 err = move_huge_pmd(vma, new_vma, old_addr,
3451 new_addr, old_end,
3452 old_pmd, new_pmd);
3453 + if (need_rmap_locks)
3454 + anon_vma_unlock_write(vma->anon_vma);
3455 + }
3456 if (err > 0) {
3457 need_flush = true;
3458 continue;
3459 diff --git a/mm/percpu.c b/mm/percpu.c
3460 index 8c8e08f3a692..25e2ea52db82 100644
3461 --- a/mm/percpu.c
3462 +++ b/mm/percpu.c
3463 @@ -612,7 +612,7 @@ static struct pcpu_chunk *pcpu_alloc_chunk(void)
3464 chunk->map = pcpu_mem_zalloc(PCPU_DFL_MAP_ALLOC *
3465 sizeof(chunk->map[0]));
3466 if (!chunk->map) {
3467 - kfree(chunk);
3468 + pcpu_mem_free(chunk, pcpu_chunk_struct_size);
3469 return NULL;
3470 }
3471
3472 diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
3473 index 6c7f36379722..4c51c055d00f 100644
3474 --- a/net/bluetooth/hci_conn.c
3475 +++ b/net/bluetooth/hci_conn.c
3476 @@ -652,14 +652,17 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
3477 if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
3478 struct hci_cp_auth_requested cp;
3479
3480 - /* encrypt must be pending if auth is also pending */
3481 - set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
3482 -
3483 cp.handle = cpu_to_le16(conn->handle);
3484 hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
3485 sizeof(cp), &cp);
3486 +
3487 + /* If we're already encrypted set the REAUTH_PEND flag,
3488 + * otherwise set the ENCRYPT_PEND.
3489 + */
3490 if (conn->key_type != 0xff)
3491 set_bit(HCI_CONN_REAUTH_PEND, &conn->flags);
3492 + else
3493 + set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
3494 }
3495
3496 return 0;
3497 diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
3498 index cfca44f8d048..ab2ec7c414cb 100644
3499 --- a/net/bluetooth/hci_event.c
3500 +++ b/net/bluetooth/hci_event.c
3501 @@ -3051,6 +3051,12 @@ static void hci_key_refresh_complete_evt(struct hci_dev *hdev,
3502 if (!conn)
3503 goto unlock;
3504
3505 + /* For BR/EDR the necessary steps are taken through the
3506 + * auth_complete event.
3507 + */
3508 + if (conn->type != LE_LINK)
3509 + goto unlock;
3510 +
3511 if (!ev->status)
3512 conn->sec_level = conn->pending_sec_level;
3513
3514 diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
3515 index eb0a46a49bd4..b9d7df175700 100644
3516 --- a/net/ceph/messenger.c
3517 +++ b/net/ceph/messenger.c
3518 @@ -556,7 +556,7 @@ static int ceph_tcp_sendmsg(struct socket *sock, struct kvec *iov,
3519 return r;
3520 }
3521
3522 -static int ceph_tcp_sendpage(struct socket *sock, struct page *page,
3523 +static int __ceph_tcp_sendpage(struct socket *sock, struct page *page,
3524 int offset, size_t size, bool more)
3525 {
3526 int flags = MSG_DONTWAIT | MSG_NOSIGNAL | (more ? MSG_MORE : MSG_EOR);
3527 @@ -569,6 +569,24 @@ static int ceph_tcp_sendpage(struct socket *sock, struct page *page,
3528 return ret;
3529 }
3530
3531 +static int ceph_tcp_sendpage(struct socket *sock, struct page *page,
3532 + int offset, size_t size, bool more)
3533 +{
3534 + int ret;
3535 + struct kvec iov;
3536 +
3537 + /* sendpage cannot properly handle pages with page_count == 0,
3538 + * we need to fallback to sendmsg if that's the case */
3539 + if (page_count(page) >= 1)
3540 + return __ceph_tcp_sendpage(sock, page, offset, size, more);
3541 +
3542 + iov.iov_base = kmap(page) + offset;
3543 + iov.iov_len = size;
3544 + ret = ceph_tcp_sendmsg(sock, &iov, 1, size, more);
3545 + kunmap(page);
3546 +
3547 + return ret;
3548 +}
3549
3550 /*
3551 * Shutdown/close the socket for the given connection.
3552 diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
3553 index 92ef04c72c51..845563b81a0f 100644
3554 --- a/net/mac80211/ieee80211_i.h
3555 +++ b/net/mac80211/ieee80211_i.h
3556 @@ -311,6 +311,7 @@ struct ieee80211_roc_work {
3557
3558 bool started, abort, hw_begun, notified;
3559 bool to_be_freed;
3560 + bool on_channel;
3561
3562 unsigned long hw_start_time;
3563
3564 @@ -1270,6 +1271,7 @@ void ieee80211_sta_reset_conn_monitor(struct ieee80211_sub_if_data *sdata);
3565 void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata);
3566 void ieee80211_mgd_conn_tx_status(struct ieee80211_sub_if_data *sdata,
3567 __le16 fc, bool acked);
3568 +void ieee80211_mgd_quiesce(struct ieee80211_sub_if_data *sdata);
3569 void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata);
3570
3571 /* IBSS code */
3572 diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
3573 index 49bc2246bd86..fc94937cd7b3 100644
3574 --- a/net/mac80211/mlme.c
3575 +++ b/net/mac80211/mlme.c
3576 @@ -3754,6 +3754,32 @@ static void ieee80211_restart_sta_timer(struct ieee80211_sub_if_data *sdata)
3577 }
3578
3579 #ifdef CONFIG_PM
3580 +void ieee80211_mgd_quiesce(struct ieee80211_sub_if_data *sdata)
3581 +{
3582 + struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
3583 + u8 frame_buf[IEEE80211_DEAUTH_FRAME_LEN];
3584 +
3585 + mutex_lock(&ifmgd->mtx);
3586 +
3587 + if (ifmgd->auth_data) {
3588 + /*
3589 + * If we are trying to authenticate while suspending, cfg80211
3590 + * won't know and won't actually abort those attempts, thus we
3591 + * need to do that ourselves.
3592 + */
3593 + ieee80211_send_deauth_disassoc(sdata,
3594 + ifmgd->auth_data->bss->bssid,
3595 + IEEE80211_STYPE_DEAUTH,
3596 + WLAN_REASON_DEAUTH_LEAVING,
3597 + false, frame_buf);
3598 + ieee80211_destroy_auth_data(sdata, false);
3599 + cfg80211_send_deauth(sdata->dev, frame_buf,
3600 + IEEE80211_DEAUTH_FRAME_LEN);
3601 + }
3602 +
3603 + mutex_unlock(&ifmgd->mtx);
3604 +}
3605 +
3606 void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata)
3607 {
3608 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
3609 diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
3610 index 11d3f227e11e..0427a58b4397 100644
3611 --- a/net/mac80211/offchannel.c
3612 +++ b/net/mac80211/offchannel.c
3613 @@ -333,7 +333,7 @@ void ieee80211_sw_roc_work(struct work_struct *work)
3614 container_of(work, struct ieee80211_roc_work, work.work);
3615 struct ieee80211_sub_if_data *sdata = roc->sdata;
3616 struct ieee80211_local *local = sdata->local;
3617 - bool started;
3618 + bool started, on_channel;
3619
3620 mutex_lock(&local->mtx);
3621
3622 @@ -354,14 +354,24 @@ void ieee80211_sw_roc_work(struct work_struct *work)
3623 if (!roc->started) {
3624 struct ieee80211_roc_work *dep;
3625
3626 - /* start this ROC */
3627 - ieee80211_offchannel_stop_vifs(local);
3628 + WARN_ON(local->use_chanctx);
3629 +
3630 + /* If actually operating on the desired channel (with at least
3631 + * 20 MHz channel width) don't stop all the operations but still
3632 + * treat it as though the ROC operation started properly, so
3633 + * other ROC operations won't interfere with this one.
3634 + */
3635 + roc->on_channel = roc->chan == local->_oper_chandef.chan;
3636
3637 - /* switch channel etc */
3638 + /* start this ROC */
3639 ieee80211_recalc_idle(local);
3640
3641 - local->tmp_channel = roc->chan;
3642 - ieee80211_hw_config(local, 0);
3643 + if (!roc->on_channel) {
3644 + ieee80211_offchannel_stop_vifs(local);
3645 +
3646 + local->tmp_channel = roc->chan;
3647 + ieee80211_hw_config(local, 0);
3648 + }
3649
3650 /* tell userspace or send frame */
3651 ieee80211_handle_roc_started(roc);
3652 @@ -380,9 +390,10 @@ void ieee80211_sw_roc_work(struct work_struct *work)
3653 finish:
3654 list_del(&roc->list);
3655 started = roc->started;
3656 + on_channel = roc->on_channel;
3657 ieee80211_roc_notify_destroy(roc, !roc->abort);
3658
3659 - if (started) {
3660 + if (started && !on_channel) {
3661 ieee80211_flush_queues(local, NULL);
3662
3663 local->tmp_channel = NULL;
3664 diff --git a/net/mac80211/pm.c b/net/mac80211/pm.c
3665 index 340126204343..efb510e6f206 100644
3666 --- a/net/mac80211/pm.c
3667 +++ b/net/mac80211/pm.c
3668 @@ -101,10 +101,18 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
3669
3670 /* remove all interfaces that were created in the driver */
3671 list_for_each_entry(sdata, &local->interfaces, list) {
3672 - if (!ieee80211_sdata_running(sdata) ||
3673 - sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
3674 - sdata->vif.type == NL80211_IFTYPE_MONITOR)
3675 + if (!ieee80211_sdata_running(sdata))
3676 continue;
3677 + switch (sdata->vif.type) {
3678 + case NL80211_IFTYPE_AP_VLAN:
3679 + case NL80211_IFTYPE_MONITOR:
3680 + continue;
3681 + case NL80211_IFTYPE_STATION:
3682 + ieee80211_mgd_quiesce(sdata);
3683 + break;
3684 + default:
3685 + break;
3686 + }
3687
3688 drv_remove_interface(local, sdata);
3689 }
3690 diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
3691 index 5f055d7ee85b..1800db643a16 100644
3692 --- a/sound/pci/hda/hda_intel.c
3693 +++ b/sound/pci/hda/hda_intel.c
3694 @@ -3856,6 +3856,9 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
3695 /* Lynx Point */
3696 { PCI_DEVICE(0x8086, 0x8c20),
3697 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
3698 + /* 9 Series */
3699 + { PCI_DEVICE(0x8086, 0x8ca0),
3700 + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
3701 /* Wellsburg */
3702 { PCI_DEVICE(0x8086, 0x8d20),
3703 .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
3704 diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c
3705 index e3cd86514cea..1ae1f8bd9c36 100644
3706 --- a/sound/soc/codecs/wm8962.c
3707 +++ b/sound/soc/codecs/wm8962.c
3708 @@ -153,6 +153,7 @@ static struct reg_default wm8962_reg[] = {
3709 { 40, 0x0000 }, /* R40 - SPKOUTL volume */
3710 { 41, 0x0000 }, /* R41 - SPKOUTR volume */
3711
3712 + { 49, 0x0010 }, /* R49 - Class D Control 1 */
3713 { 51, 0x0003 }, /* R51 - Class D Control 2 */
3714
3715 { 56, 0x0506 }, /* R56 - Clocking 4 */
3716 @@ -794,7 +795,6 @@ static bool wm8962_volatile_register(struct device *dev, unsigned int reg)
3717 case WM8962_ALC2:
3718 case WM8962_THERMAL_SHUTDOWN_STATUS:
3719 case WM8962_ADDITIONAL_CONTROL_4:
3720 - case WM8962_CLASS_D_CONTROL_1:
3721 case WM8962_DC_SERVO_6:
3722 case WM8962_INTERRUPT_STATUS_1:
3723 case WM8962_INTERRUPT_STATUS_2:
3724 @@ -2901,13 +2901,22 @@ static int wm8962_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
3725 static int wm8962_mute(struct snd_soc_dai *dai, int mute)
3726 {
3727 struct snd_soc_codec *codec = dai->codec;
3728 - int val;
3729 + int val, ret;
3730
3731 if (mute)
3732 - val = WM8962_DAC_MUTE;
3733 + val = WM8962_DAC_MUTE | WM8962_DAC_MUTE_ALT;
3734 else
3735 val = 0;
3736
3737 + /**
3738 + * The DAC mute bit is mirrored in two registers, update both to keep
3739 + * the register cache consistent.
3740 + */
3741 + ret = snd_soc_update_bits(codec, WM8962_CLASS_D_CONTROL_1,
3742 + WM8962_DAC_MUTE_ALT, val);
3743 + if (ret < 0)
3744 + return ret;
3745 +
3746 return snd_soc_update_bits(codec, WM8962_ADC_DAC_CONTROL_1,
3747 WM8962_DAC_MUTE, val);
3748 }
3749 diff --git a/sound/soc/codecs/wm8962.h b/sound/soc/codecs/wm8962.h
3750 index a1a5d5294c19..910aafd09d21 100644
3751 --- a/sound/soc/codecs/wm8962.h
3752 +++ b/sound/soc/codecs/wm8962.h
3753 @@ -1954,6 +1954,10 @@
3754 #define WM8962_SPKOUTL_ENA_MASK 0x0040 /* SPKOUTL_ENA */
3755 #define WM8962_SPKOUTL_ENA_SHIFT 6 /* SPKOUTL_ENA */
3756 #define WM8962_SPKOUTL_ENA_WIDTH 1 /* SPKOUTL_ENA */
3757 +#define WM8962_DAC_MUTE_ALT 0x0010 /* DAC_MUTE */
3758 +#define WM8962_DAC_MUTE_ALT_MASK 0x0010 /* DAC_MUTE */
3759 +#define WM8962_DAC_MUTE_ALT_SHIFT 4 /* DAC_MUTE */
3760 +#define WM8962_DAC_MUTE_ALT_WIDTH 1 /* DAC_MUTE */
3761 #define WM8962_SPKOUTL_PGA_MUTE 0x0002 /* SPKOUTL_PGA_MUTE */
3762 #define WM8962_SPKOUTL_PGA_MUTE_MASK 0x0002 /* SPKOUTL_PGA_MUTE */
3763 #define WM8962_SPKOUTL_PGA_MUTE_SHIFT 1 /* SPKOUTL_PGA_MUTE */
3764 diff --git a/sound/usb/card.h b/sound/usb/card.h
3765 index bf2889a2cae5..82c2d80c8228 100644
3766 --- a/sound/usb/card.h
3767 +++ b/sound/usb/card.h
3768 @@ -90,6 +90,7 @@ struct snd_usb_endpoint {
3769 unsigned int curframesize; /* current packet size in frames (for capture) */
3770 unsigned int syncmaxsize; /* sync endpoint packet size */
3771 unsigned int fill_max:1; /* fill max packet size always */
3772 + unsigned int udh01_fb_quirk:1; /* corrupted feedback data */
3773 unsigned int datainterval; /* log_2 of data packet interval */
3774 unsigned int syncinterval; /* P for adaptive mode, 0 otherwise */
3775 unsigned char silence_value;
3776 diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
3777 index 659950e5b94f..308c02b2a597 100644
3778 --- a/sound/usb/endpoint.c
3779 +++ b/sound/usb/endpoint.c
3780 @@ -467,6 +467,10 @@ struct snd_usb_endpoint *snd_usb_add_endpoint(struct snd_usb_audio *chip,
3781 ep->syncinterval = 3;
3782
3783 ep->syncmaxsize = le16_to_cpu(get_endpoint(alts, 1)->wMaxPacketSize);
3784 +
3785 + if (chip->usb_id == USB_ID(0x0644, 0x8038) /* TEAC UD-H01 */ &&
3786 + ep->syncmaxsize == 4)
3787 + ep->udh01_fb_quirk = 1;
3788 }
3789
3790 list_add_tail(&ep->list, &chip->ep_list);
3791 @@ -1075,7 +1079,16 @@ void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep,
3792 if (f == 0)
3793 return;
3794
3795 - if (unlikely(ep->freqshift == INT_MIN)) {
3796 + if (unlikely(sender->udh01_fb_quirk)) {
3797 + /*
3798 + * The TEAC UD-H01 firmware sometimes changes the feedback value
3799 + * by +/- 0x1.0000.
3800 + */
3801 + if (f < ep->freqn - 0x8000)
3802 + f += 0x10000;
3803 + else if (f > ep->freqn + 0x8000)
3804 + f -= 0x10000;
3805 + } else if (unlikely(ep->freqshift == INT_MIN)) {
3806 /*
3807 * The first time we see a feedback value, determine its format
3808 * by shifting it left or right until it matches the nominal