Magellan Linux

Contents of /trunk/kernel-alx/patches-3.18/0104-3.18.5-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2553 - (show annotations) (download)
Wed Mar 18 09:24:38 2015 UTC (9 years, 1 month ago) by niro
File size: 132162 byte(s)
-import from kernel-magellan
1 diff --git a/Makefile b/Makefile
2 index 4e9328491c1e..6276fcaabf21 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 3
7 PATCHLEVEL = 18
8 -SUBLEVEL = 4
9 +SUBLEVEL = 5
10 EXTRAVERSION =
11 NAME = Diseased Newt
12
13 diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
14 index d238676a9107..e4d3aecc4ed2 100644
15 --- a/arch/arm/boot/dts/imx25.dtsi
16 +++ b/arch/arm/boot/dts/imx25.dtsi
17 @@ -369,7 +369,7 @@
18 compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
19 #pwm-cells = <2>;
20 reg = <0x53fa0000 0x4000>;
21 - clocks = <&clks 106>, <&clks 36>;
22 + clocks = <&clks 106>, <&clks 52>;
23 clock-names = "ipg", "per";
24 interrupts = <36>;
25 };
26 @@ -388,7 +388,7 @@
27 compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
28 #pwm-cells = <2>;
29 reg = <0x53fa8000 0x4000>;
30 - clocks = <&clks 107>, <&clks 36>;
31 + clocks = <&clks 107>, <&clks 52>;
32 clock-names = "ipg", "per";
33 interrupts = <41>;
34 };
35 @@ -429,7 +429,7 @@
36 pwm4: pwm@53fc8000 {
37 compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
38 reg = <0x53fc8000 0x4000>;
39 - clocks = <&clks 108>, <&clks 36>;
40 + clocks = <&clks 108>, <&clks 52>;
41 clock-names = "ipg", "per";
42 interrupts = <42>;
43 };
44 @@ -476,7 +476,7 @@
45 compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
46 #pwm-cells = <2>;
47 reg = <0x53fe0000 0x4000>;
48 - clocks = <&clks 105>, <&clks 36>;
49 + clocks = <&clks 105>, <&clks 52>;
50 clock-names = "ipg", "per";
51 interrupts = <26>;
52 };
53 diff --git a/arch/arm/crypto/aes_glue.c b/arch/arm/crypto/aes_glue.c
54 index 3003fa1f6fb4..0409b8f89782 100644
55 --- a/arch/arm/crypto/aes_glue.c
56 +++ b/arch/arm/crypto/aes_glue.c
57 @@ -93,6 +93,6 @@ module_exit(aes_fini);
58
59 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm (ASM)");
60 MODULE_LICENSE("GPL");
61 -MODULE_ALIAS("aes");
62 -MODULE_ALIAS("aes-asm");
63 +MODULE_ALIAS_CRYPTO("aes");
64 +MODULE_ALIAS_CRYPTO("aes-asm");
65 MODULE_AUTHOR("David McCullough <ucdevel@gmail.com>");
66 diff --git a/arch/arm/crypto/sha1_glue.c b/arch/arm/crypto/sha1_glue.c
67 index 84f2a756588b..e31b0440c613 100644
68 --- a/arch/arm/crypto/sha1_glue.c
69 +++ b/arch/arm/crypto/sha1_glue.c
70 @@ -171,5 +171,5 @@ module_exit(sha1_mod_fini);
71
72 MODULE_LICENSE("GPL");
73 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm (ARM)");
74 -MODULE_ALIAS("sha1");
75 +MODULE_ALIAS_CRYPTO("sha1");
76 MODULE_AUTHOR("David McCullough <ucdevel@gmail.com>");
77 diff --git a/arch/arm/crypto/sha1_neon_glue.c b/arch/arm/crypto/sha1_neon_glue.c
78 index 6f1b411b1d55..0b0083757d47 100644
79 --- a/arch/arm/crypto/sha1_neon_glue.c
80 +++ b/arch/arm/crypto/sha1_neon_glue.c
81 @@ -194,4 +194,4 @@ module_exit(sha1_neon_mod_fini);
82
83 MODULE_LICENSE("GPL");
84 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, NEON accelerated");
85 -MODULE_ALIAS("sha1");
86 +MODULE_ALIAS_CRYPTO("sha1");
87 diff --git a/arch/arm/crypto/sha512_neon_glue.c b/arch/arm/crypto/sha512_neon_glue.c
88 index 0d2758ff5e12..f3452c66059d 100644
89 --- a/arch/arm/crypto/sha512_neon_glue.c
90 +++ b/arch/arm/crypto/sha512_neon_glue.c
91 @@ -301,5 +301,5 @@ module_exit(sha512_neon_mod_fini);
92 MODULE_LICENSE("GPL");
93 MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, NEON accelerated");
94
95 -MODULE_ALIAS("sha512");
96 -MODULE_ALIAS("sha384");
97 +MODULE_ALIAS_CRYPTO("sha512");
98 +MODULE_ALIAS_CRYPTO("sha384");
99 diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
100 index c31f4c00b1fc..1163a3e9accd 100644
101 --- a/arch/arm/mach-mvebu/coherency.c
102 +++ b/arch/arm/mach-mvebu/coherency.c
103 @@ -398,9 +398,14 @@ static int coherency_type(void)
104 return type;
105 }
106
107 +/*
108 + * As a precaution, we currently completely disable hardware I/O
109 + * coherency, until enough testing is done with automatic I/O
110 + * synchronization barriers to validate that it is a proper solution.
111 + */
112 int coherency_available(void)
113 {
114 - return coherency_type() != COHERENCY_FABRIC_TYPE_NONE;
115 + return false;
116 }
117
118 int __init coherency_init(void)
119 diff --git a/arch/arm64/crypto/aes-ce-ccm-glue.c b/arch/arm64/crypto/aes-ce-ccm-glue.c
120 index 9e6cdde9b43d..0156a268e163 100644
121 --- a/arch/arm64/crypto/aes-ce-ccm-glue.c
122 +++ b/arch/arm64/crypto/aes-ce-ccm-glue.c
123 @@ -294,4 +294,4 @@ module_exit(aes_mod_exit);
124 MODULE_DESCRIPTION("Synchronous AES in CCM mode using ARMv8 Crypto Extensions");
125 MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>");
126 MODULE_LICENSE("GPL v2");
127 -MODULE_ALIAS("ccm(aes)");
128 +MODULE_ALIAS_CRYPTO("ccm(aes)");
129 diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c
130 index 79cd911ef88c..5f63a791b2fb 100644
131 --- a/arch/arm64/crypto/aes-glue.c
132 +++ b/arch/arm64/crypto/aes-glue.c
133 @@ -38,10 +38,10 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions");
134 #define aes_xts_encrypt neon_aes_xts_encrypt
135 #define aes_xts_decrypt neon_aes_xts_decrypt
136 MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 NEON");
137 -MODULE_ALIAS("ecb(aes)");
138 -MODULE_ALIAS("cbc(aes)");
139 -MODULE_ALIAS("ctr(aes)");
140 -MODULE_ALIAS("xts(aes)");
141 +MODULE_ALIAS_CRYPTO("ecb(aes)");
142 +MODULE_ALIAS_CRYPTO("cbc(aes)");
143 +MODULE_ALIAS_CRYPTO("ctr(aes)");
144 +MODULE_ALIAS_CRYPTO("xts(aes)");
145 #endif
146
147 MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>");
148 diff --git a/arch/powerpc/crypto/sha1.c b/arch/powerpc/crypto/sha1.c
149 index f9e8b9491efc..b51da9132744 100644
150 --- a/arch/powerpc/crypto/sha1.c
151 +++ b/arch/powerpc/crypto/sha1.c
152 @@ -154,4 +154,5 @@ module_exit(sha1_powerpc_mod_fini);
153 MODULE_LICENSE("GPL");
154 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
155
156 -MODULE_ALIAS("sha1-powerpc");
157 +MODULE_ALIAS_CRYPTO("sha1");
158 +MODULE_ALIAS_CRYPTO("sha1-powerpc");
159 diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c
160 index 23223cd63e54..1f272b24fc0b 100644
161 --- a/arch/s390/crypto/aes_s390.c
162 +++ b/arch/s390/crypto/aes_s390.c
163 @@ -979,7 +979,7 @@ static void __exit aes_s390_fini(void)
164 module_init(aes_s390_init);
165 module_exit(aes_s390_fini);
166
167 -MODULE_ALIAS("aes-all");
168 +MODULE_ALIAS_CRYPTO("aes-all");
169
170 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
171 MODULE_LICENSE("GPL");
172 diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c
173 index 7acb77f7ef1a..9e05cc453a40 100644
174 --- a/arch/s390/crypto/des_s390.c
175 +++ b/arch/s390/crypto/des_s390.c
176 @@ -619,8 +619,8 @@ static void __exit des_s390_exit(void)
177 module_init(des_s390_init);
178 module_exit(des_s390_exit);
179
180 -MODULE_ALIAS("des");
181 -MODULE_ALIAS("des3_ede");
182 +MODULE_ALIAS_CRYPTO("des");
183 +MODULE_ALIAS_CRYPTO("des3_ede");
184
185 MODULE_LICENSE("GPL");
186 MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");
187 diff --git a/arch/s390/crypto/ghash_s390.c b/arch/s390/crypto/ghash_s390.c
188 index d43485d142e9..7940dc90e80b 100644
189 --- a/arch/s390/crypto/ghash_s390.c
190 +++ b/arch/s390/crypto/ghash_s390.c
191 @@ -160,7 +160,7 @@ static void __exit ghash_mod_exit(void)
192 module_init(ghash_mod_init);
193 module_exit(ghash_mod_exit);
194
195 -MODULE_ALIAS("ghash");
196 +MODULE_ALIAS_CRYPTO("ghash");
197
198 MODULE_LICENSE("GPL");
199 MODULE_DESCRIPTION("GHASH Message Digest Algorithm, s390 implementation");
200 diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c
201 index a1b3a9dc9d8a..5b2bee323694 100644
202 --- a/arch/s390/crypto/sha1_s390.c
203 +++ b/arch/s390/crypto/sha1_s390.c
204 @@ -103,6 +103,6 @@ static void __exit sha1_s390_fini(void)
205 module_init(sha1_s390_init);
206 module_exit(sha1_s390_fini);
207
208 -MODULE_ALIAS("sha1");
209 +MODULE_ALIAS_CRYPTO("sha1");
210 MODULE_LICENSE("GPL");
211 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
212 diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c
213 index 9b853809a492..b74ff158108c 100644
214 --- a/arch/s390/crypto/sha256_s390.c
215 +++ b/arch/s390/crypto/sha256_s390.c
216 @@ -143,7 +143,7 @@ static void __exit sha256_s390_fini(void)
217 module_init(sha256_s390_init);
218 module_exit(sha256_s390_fini);
219
220 -MODULE_ALIAS("sha256");
221 -MODULE_ALIAS("sha224");
222 +MODULE_ALIAS_CRYPTO("sha256");
223 +MODULE_ALIAS_CRYPTO("sha224");
224 MODULE_LICENSE("GPL");
225 MODULE_DESCRIPTION("SHA256 and SHA224 Secure Hash Algorithm");
226 diff --git a/arch/s390/crypto/sha512_s390.c b/arch/s390/crypto/sha512_s390.c
227 index 32a81383b69c..0c36989ba182 100644
228 --- a/arch/s390/crypto/sha512_s390.c
229 +++ b/arch/s390/crypto/sha512_s390.c
230 @@ -86,7 +86,7 @@ static struct shash_alg sha512_alg = {
231 }
232 };
233
234 -MODULE_ALIAS("sha512");
235 +MODULE_ALIAS_CRYPTO("sha512");
236
237 static int sha384_init(struct shash_desc *desc)
238 {
239 @@ -126,7 +126,7 @@ static struct shash_alg sha384_alg = {
240 }
241 };
242
243 -MODULE_ALIAS("sha384");
244 +MODULE_ALIAS_CRYPTO("sha384");
245
246 static int __init init(void)
247 {
248 diff --git a/arch/sparc/crypto/aes_glue.c b/arch/sparc/crypto/aes_glue.c
249 index df922f52d76d..705408766ab0 100644
250 --- a/arch/sparc/crypto/aes_glue.c
251 +++ b/arch/sparc/crypto/aes_glue.c
252 @@ -499,6 +499,6 @@ module_exit(aes_sparc64_mod_fini);
253 MODULE_LICENSE("GPL");
254 MODULE_DESCRIPTION("AES Secure Hash Algorithm, sparc64 aes opcode accelerated");
255
256 -MODULE_ALIAS("aes");
257 +MODULE_ALIAS_CRYPTO("aes");
258
259 #include "crop_devid.c"
260 diff --git a/arch/sparc/crypto/camellia_glue.c b/arch/sparc/crypto/camellia_glue.c
261 index 888f6260b4ec..641f55cb61c3 100644
262 --- a/arch/sparc/crypto/camellia_glue.c
263 +++ b/arch/sparc/crypto/camellia_glue.c
264 @@ -322,6 +322,6 @@ module_exit(camellia_sparc64_mod_fini);
265 MODULE_LICENSE("GPL");
266 MODULE_DESCRIPTION("Camellia Cipher Algorithm, sparc64 camellia opcode accelerated");
267
268 -MODULE_ALIAS("aes");
269 +MODULE_ALIAS_CRYPTO("aes");
270
271 #include "crop_devid.c"
272 diff --git a/arch/sparc/crypto/crc32c_glue.c b/arch/sparc/crypto/crc32c_glue.c
273 index 5162fad912ce..d1064e46efe8 100644
274 --- a/arch/sparc/crypto/crc32c_glue.c
275 +++ b/arch/sparc/crypto/crc32c_glue.c
276 @@ -176,6 +176,6 @@ module_exit(crc32c_sparc64_mod_fini);
277 MODULE_LICENSE("GPL");
278 MODULE_DESCRIPTION("CRC32c (Castagnoli), sparc64 crc32c opcode accelerated");
279
280 -MODULE_ALIAS("crc32c");
281 +MODULE_ALIAS_CRYPTO("crc32c");
282
283 #include "crop_devid.c"
284 diff --git a/arch/sparc/crypto/des_glue.c b/arch/sparc/crypto/des_glue.c
285 index 3065bc61f9d3..d11500972994 100644
286 --- a/arch/sparc/crypto/des_glue.c
287 +++ b/arch/sparc/crypto/des_glue.c
288 @@ -532,6 +532,6 @@ module_exit(des_sparc64_mod_fini);
289 MODULE_LICENSE("GPL");
290 MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms, sparc64 des opcode accelerated");
291
292 -MODULE_ALIAS("des");
293 +MODULE_ALIAS_CRYPTO("des");
294
295 #include "crop_devid.c"
296 diff --git a/arch/sparc/crypto/md5_glue.c b/arch/sparc/crypto/md5_glue.c
297 index 09a9ea1dfb69..64c7ff5f72a9 100644
298 --- a/arch/sparc/crypto/md5_glue.c
299 +++ b/arch/sparc/crypto/md5_glue.c
300 @@ -185,6 +185,6 @@ module_exit(md5_sparc64_mod_fini);
301 MODULE_LICENSE("GPL");
302 MODULE_DESCRIPTION("MD5 Secure Hash Algorithm, sparc64 md5 opcode accelerated");
303
304 -MODULE_ALIAS("md5");
305 +MODULE_ALIAS_CRYPTO("md5");
306
307 #include "crop_devid.c"
308 diff --git a/arch/sparc/crypto/sha1_glue.c b/arch/sparc/crypto/sha1_glue.c
309 index 6cd5f29e1e0d..1b3e47accc74 100644
310 --- a/arch/sparc/crypto/sha1_glue.c
311 +++ b/arch/sparc/crypto/sha1_glue.c
312 @@ -180,6 +180,6 @@ module_exit(sha1_sparc64_mod_fini);
313 MODULE_LICENSE("GPL");
314 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, sparc64 sha1 opcode accelerated");
315
316 -MODULE_ALIAS("sha1");
317 +MODULE_ALIAS_CRYPTO("sha1");
318
319 #include "crop_devid.c"
320 diff --git a/arch/sparc/crypto/sha256_glue.c b/arch/sparc/crypto/sha256_glue.c
321 index 04f555ab2680..41f27cca2a22 100644
322 --- a/arch/sparc/crypto/sha256_glue.c
323 +++ b/arch/sparc/crypto/sha256_glue.c
324 @@ -237,7 +237,7 @@ module_exit(sha256_sparc64_mod_fini);
325 MODULE_LICENSE("GPL");
326 MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm, sparc64 sha256 opcode accelerated");
327
328 -MODULE_ALIAS("sha224");
329 -MODULE_ALIAS("sha256");
330 +MODULE_ALIAS_CRYPTO("sha224");
331 +MODULE_ALIAS_CRYPTO("sha256");
332
333 #include "crop_devid.c"
334 diff --git a/arch/sparc/crypto/sha512_glue.c b/arch/sparc/crypto/sha512_glue.c
335 index f04d1994d19a..9fff88541b8c 100644
336 --- a/arch/sparc/crypto/sha512_glue.c
337 +++ b/arch/sparc/crypto/sha512_glue.c
338 @@ -222,7 +222,7 @@ module_exit(sha512_sparc64_mod_fini);
339 MODULE_LICENSE("GPL");
340 MODULE_DESCRIPTION("SHA-384 and SHA-512 Secure Hash Algorithm, sparc64 sha512 opcode accelerated");
341
342 -MODULE_ALIAS("sha384");
343 -MODULE_ALIAS("sha512");
344 +MODULE_ALIAS_CRYPTO("sha384");
345 +MODULE_ALIAS_CRYPTO("sha512");
346
347 #include "crop_devid.c"
348 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
349 index 41a503c15862..3635fff7b32d 100644
350 --- a/arch/x86/Kconfig
351 +++ b/arch/x86/Kconfig
352 @@ -856,7 +856,7 @@ source "kernel/Kconfig.preempt"
353
354 config X86_UP_APIC
355 bool "Local APIC support on uniprocessors"
356 - depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI
357 + depends on X86_32 && !SMP && !X86_32_NON_STANDARD
358 ---help---
359 A local APIC (Advanced Programmable Interrupt Controller) is an
360 integrated interrupt controller in the CPU. If you have a single-CPU
361 @@ -867,6 +867,10 @@ config X86_UP_APIC
362 performance counters), and the NMI watchdog which detects hard
363 lockups.
364
365 +config X86_UP_APIC_MSI
366 + def_bool y
367 + select X86_UP_APIC if X86_32 && !SMP && !X86_32_NON_STANDARD && PCI_MSI
368 +
369 config X86_UP_IOAPIC
370 bool "IO-APIC support on uniprocessors"
371 depends on X86_UP_APIC
372 diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
373 index 30dd59a9f0b4..0c33a7c67ea5 100644
374 --- a/arch/x86/boot/compressed/misc.c
375 +++ b/arch/x86/boot/compressed/misc.c
376 @@ -361,6 +361,8 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
377 unsigned long output_len,
378 unsigned long run_size)
379 {
380 + unsigned char *output_orig = output;
381 +
382 real_mode = rmode;
383
384 sanitize_boot_params(real_mode);
385 @@ -409,7 +411,12 @@ asmlinkage __visible void *decompress_kernel(void *rmode, memptr heap,
386 debug_putstr("\nDecompressing Linux... ");
387 decompress(input_data, input_len, NULL, NULL, output, NULL, error);
388 parse_elf(output);
389 - handle_relocations(output, output_len);
390 + /*
391 + * 32-bit always performs relocations. 64-bit relocations are only
392 + * needed if kASLR has chosen a different load address.
393 + */
394 + if (!IS_ENABLED(CONFIG_X86_64) || output != output_orig)
395 + handle_relocations(output, output_len);
396 debug_putstr("done.\nBooting the kernel.\n");
397 return output;
398 }
399 diff --git a/arch/x86/crypto/aes_glue.c b/arch/x86/crypto/aes_glue.c
400 index aafe8ce0d65d..e26984f7ab8d 100644
401 --- a/arch/x86/crypto/aes_glue.c
402 +++ b/arch/x86/crypto/aes_glue.c
403 @@ -66,5 +66,5 @@ module_exit(aes_fini);
404
405 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, asm optimized");
406 MODULE_LICENSE("GPL");
407 -MODULE_ALIAS("aes");
408 -MODULE_ALIAS("aes-asm");
409 +MODULE_ALIAS_CRYPTO("aes");
410 +MODULE_ALIAS_CRYPTO("aes-asm");
411 diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
412 index 888950f29fd9..70fece226d17 100644
413 --- a/arch/x86/crypto/aesni-intel_glue.c
414 +++ b/arch/x86/crypto/aesni-intel_glue.c
415 @@ -1550,4 +1550,4 @@ module_exit(aesni_exit);
416
417 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized");
418 MODULE_LICENSE("GPL");
419 -MODULE_ALIAS("aes");
420 +MODULE_ALIAS_CRYPTO("aes");
421 diff --git a/arch/x86/crypto/blowfish_glue.c b/arch/x86/crypto/blowfish_glue.c
422 index 8af519ed73d1..17c05531dfd1 100644
423 --- a/arch/x86/crypto/blowfish_glue.c
424 +++ b/arch/x86/crypto/blowfish_glue.c
425 @@ -478,5 +478,5 @@ module_exit(fini);
426
427 MODULE_LICENSE("GPL");
428 MODULE_DESCRIPTION("Blowfish Cipher Algorithm, asm optimized");
429 -MODULE_ALIAS("blowfish");
430 -MODULE_ALIAS("blowfish-asm");
431 +MODULE_ALIAS_CRYPTO("blowfish");
432 +MODULE_ALIAS_CRYPTO("blowfish-asm");
433 diff --git a/arch/x86/crypto/camellia_aesni_avx2_glue.c b/arch/x86/crypto/camellia_aesni_avx2_glue.c
434 index 4209a76fcdaa..9a07fafe3831 100644
435 --- a/arch/x86/crypto/camellia_aesni_avx2_glue.c
436 +++ b/arch/x86/crypto/camellia_aesni_avx2_glue.c
437 @@ -582,5 +582,5 @@ module_exit(camellia_aesni_fini);
438
439 MODULE_LICENSE("GPL");
440 MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX2 optimized");
441 -MODULE_ALIAS("camellia");
442 -MODULE_ALIAS("camellia-asm");
443 +MODULE_ALIAS_CRYPTO("camellia");
444 +MODULE_ALIAS_CRYPTO("camellia-asm");
445 diff --git a/arch/x86/crypto/camellia_aesni_avx_glue.c b/arch/x86/crypto/camellia_aesni_avx_glue.c
446 index 87a041a10f4a..ed38d959add6 100644
447 --- a/arch/x86/crypto/camellia_aesni_avx_glue.c
448 +++ b/arch/x86/crypto/camellia_aesni_avx_glue.c
449 @@ -574,5 +574,5 @@ module_exit(camellia_aesni_fini);
450
451 MODULE_LICENSE("GPL");
452 MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX optimized");
453 -MODULE_ALIAS("camellia");
454 -MODULE_ALIAS("camellia-asm");
455 +MODULE_ALIAS_CRYPTO("camellia");
456 +MODULE_ALIAS_CRYPTO("camellia-asm");
457 diff --git a/arch/x86/crypto/camellia_glue.c b/arch/x86/crypto/camellia_glue.c
458 index c171dcbf192d..5c8b6266a394 100644
459 --- a/arch/x86/crypto/camellia_glue.c
460 +++ b/arch/x86/crypto/camellia_glue.c
461 @@ -1725,5 +1725,5 @@ module_exit(fini);
462
463 MODULE_LICENSE("GPL");
464 MODULE_DESCRIPTION("Camellia Cipher Algorithm, asm optimized");
465 -MODULE_ALIAS("camellia");
466 -MODULE_ALIAS("camellia-asm");
467 +MODULE_ALIAS_CRYPTO("camellia");
468 +MODULE_ALIAS_CRYPTO("camellia-asm");
469 diff --git a/arch/x86/crypto/cast5_avx_glue.c b/arch/x86/crypto/cast5_avx_glue.c
470 index e57e20ab5e0b..60ada677a928 100644
471 --- a/arch/x86/crypto/cast5_avx_glue.c
472 +++ b/arch/x86/crypto/cast5_avx_glue.c
473 @@ -491,4 +491,4 @@ module_exit(cast5_exit);
474
475 MODULE_DESCRIPTION("Cast5 Cipher Algorithm, AVX optimized");
476 MODULE_LICENSE("GPL");
477 -MODULE_ALIAS("cast5");
478 +MODULE_ALIAS_CRYPTO("cast5");
479 diff --git a/arch/x86/crypto/cast6_avx_glue.c b/arch/x86/crypto/cast6_avx_glue.c
480 index 09f3677393e4..0160f68a57ff 100644
481 --- a/arch/x86/crypto/cast6_avx_glue.c
482 +++ b/arch/x86/crypto/cast6_avx_glue.c
483 @@ -611,4 +611,4 @@ module_exit(cast6_exit);
484
485 MODULE_DESCRIPTION("Cast6 Cipher Algorithm, AVX optimized");
486 MODULE_LICENSE("GPL");
487 -MODULE_ALIAS("cast6");
488 +MODULE_ALIAS_CRYPTO("cast6");
489 diff --git a/arch/x86/crypto/crc32-pclmul_glue.c b/arch/x86/crypto/crc32-pclmul_glue.c
490 index 9d014a74ef96..1937fc1d8763 100644
491 --- a/arch/x86/crypto/crc32-pclmul_glue.c
492 +++ b/arch/x86/crypto/crc32-pclmul_glue.c
493 @@ -197,5 +197,5 @@ module_exit(crc32_pclmul_mod_fini);
494 MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>");
495 MODULE_LICENSE("GPL");
496
497 -MODULE_ALIAS("crc32");
498 -MODULE_ALIAS("crc32-pclmul");
499 +MODULE_ALIAS_CRYPTO("crc32");
500 +MODULE_ALIAS_CRYPTO("crc32-pclmul");
501 diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c
502 index 6812ad98355c..28640c3d6af7 100644
503 --- a/arch/x86/crypto/crc32c-intel_glue.c
504 +++ b/arch/x86/crypto/crc32c-intel_glue.c
505 @@ -280,5 +280,5 @@ MODULE_AUTHOR("Austin Zhang <austin.zhang@intel.com>, Kent Liu <kent.liu@intel.c
506 MODULE_DESCRIPTION("CRC32c (Castagnoli) optimization using Intel Hardware.");
507 MODULE_LICENSE("GPL");
508
509 -MODULE_ALIAS("crc32c");
510 -MODULE_ALIAS("crc32c-intel");
511 +MODULE_ALIAS_CRYPTO("crc32c");
512 +MODULE_ALIAS_CRYPTO("crc32c-intel");
513 diff --git a/arch/x86/crypto/crct10dif-pclmul_glue.c b/arch/x86/crypto/crct10dif-pclmul_glue.c
514 index 7845d7fd54c0..b6c67bf30fdf 100644
515 --- a/arch/x86/crypto/crct10dif-pclmul_glue.c
516 +++ b/arch/x86/crypto/crct10dif-pclmul_glue.c
517 @@ -147,5 +147,5 @@ MODULE_AUTHOR("Tim Chen <tim.c.chen@linux.intel.com>");
518 MODULE_DESCRIPTION("T10 DIF CRC calculation accelerated with PCLMULQDQ.");
519 MODULE_LICENSE("GPL");
520
521 -MODULE_ALIAS("crct10dif");
522 -MODULE_ALIAS("crct10dif-pclmul");
523 +MODULE_ALIAS_CRYPTO("crct10dif");
524 +MODULE_ALIAS_CRYPTO("crct10dif-pclmul");
525 diff --git a/arch/x86/crypto/des3_ede_glue.c b/arch/x86/crypto/des3_ede_glue.c
526 index 0e9c0668fe4e..38a14f818ef1 100644
527 --- a/arch/x86/crypto/des3_ede_glue.c
528 +++ b/arch/x86/crypto/des3_ede_glue.c
529 @@ -502,8 +502,8 @@ module_exit(des3_ede_x86_fini);
530
531 MODULE_LICENSE("GPL");
532 MODULE_DESCRIPTION("Triple DES EDE Cipher Algorithm, asm optimized");
533 -MODULE_ALIAS("des3_ede");
534 -MODULE_ALIAS("des3_ede-asm");
535 -MODULE_ALIAS("des");
536 -MODULE_ALIAS("des-asm");
537 +MODULE_ALIAS_CRYPTO("des3_ede");
538 +MODULE_ALIAS_CRYPTO("des3_ede-asm");
539 +MODULE_ALIAS_CRYPTO("des");
540 +MODULE_ALIAS_CRYPTO("des-asm");
541 MODULE_AUTHOR("Jussi Kivilinna <jussi.kivilinna@iki.fi>");
542 diff --git a/arch/x86/crypto/fpu.c b/arch/x86/crypto/fpu.c
543 index 98d7a188f46b..f368ba261739 100644
544 --- a/arch/x86/crypto/fpu.c
545 +++ b/arch/x86/crypto/fpu.c
546 @@ -17,6 +17,7 @@
547 #include <linux/kernel.h>
548 #include <linux/module.h>
549 #include <linux/slab.h>
550 +#include <linux/crypto.h>
551 #include <asm/i387.h>
552
553 struct crypto_fpu_ctx {
554 @@ -159,3 +160,5 @@ void __exit crypto_fpu_exit(void)
555 {
556 crypto_unregister_template(&crypto_fpu_tmpl);
557 }
558 +
559 +MODULE_ALIAS_CRYPTO("fpu");
560 diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c b/arch/x86/crypto/ghash-clmulni-intel_glue.c
561 index 88bb7ba8b175..8253d85aa165 100644
562 --- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
563 +++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
564 @@ -341,4 +341,4 @@ module_exit(ghash_pclmulqdqni_mod_exit);
565 MODULE_LICENSE("GPL");
566 MODULE_DESCRIPTION("GHASH Message Digest Algorithm, "
567 "acclerated by PCLMULQDQ-NI");
568 -MODULE_ALIAS("ghash");
569 +MODULE_ALIAS_CRYPTO("ghash");
570 diff --git a/arch/x86/crypto/salsa20_glue.c b/arch/x86/crypto/salsa20_glue.c
571 index 5e8e67739bb5..399a29d067d6 100644
572 --- a/arch/x86/crypto/salsa20_glue.c
573 +++ b/arch/x86/crypto/salsa20_glue.c
574 @@ -119,5 +119,5 @@ module_exit(fini);
575
576 MODULE_LICENSE("GPL");
577 MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm (optimized assembly version)");
578 -MODULE_ALIAS("salsa20");
579 -MODULE_ALIAS("salsa20-asm");
580 +MODULE_ALIAS_CRYPTO("salsa20");
581 +MODULE_ALIAS_CRYPTO("salsa20-asm");
582 diff --git a/arch/x86/crypto/serpent_avx2_glue.c b/arch/x86/crypto/serpent_avx2_glue.c
583 index 2fae489b1524..437e47a4d302 100644
584 --- a/arch/x86/crypto/serpent_avx2_glue.c
585 +++ b/arch/x86/crypto/serpent_avx2_glue.c
586 @@ -558,5 +558,5 @@ module_exit(fini);
587
588 MODULE_LICENSE("GPL");
589 MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX2 optimized");
590 -MODULE_ALIAS("serpent");
591 -MODULE_ALIAS("serpent-asm");
592 +MODULE_ALIAS_CRYPTO("serpent");
593 +MODULE_ALIAS_CRYPTO("serpent-asm");
594 diff --git a/arch/x86/crypto/serpent_avx_glue.c b/arch/x86/crypto/serpent_avx_glue.c
595 index ff4870870972..7e217398b4eb 100644
596 --- a/arch/x86/crypto/serpent_avx_glue.c
597 +++ b/arch/x86/crypto/serpent_avx_glue.c
598 @@ -617,4 +617,4 @@ module_exit(serpent_exit);
599
600 MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX optimized");
601 MODULE_LICENSE("GPL");
602 -MODULE_ALIAS("serpent");
603 +MODULE_ALIAS_CRYPTO("serpent");
604 diff --git a/arch/x86/crypto/serpent_sse2_glue.c b/arch/x86/crypto/serpent_sse2_glue.c
605 index 8c95f8637306..bf025adaea01 100644
606 --- a/arch/x86/crypto/serpent_sse2_glue.c
607 +++ b/arch/x86/crypto/serpent_sse2_glue.c
608 @@ -618,4 +618,4 @@ module_exit(serpent_sse2_exit);
609
610 MODULE_DESCRIPTION("Serpent Cipher Algorithm, SSE2 optimized");
611 MODULE_LICENSE("GPL");
612 -MODULE_ALIAS("serpent");
613 +MODULE_ALIAS_CRYPTO("serpent");
614 diff --git a/arch/x86/crypto/sha-mb/sha1_mb.c b/arch/x86/crypto/sha-mb/sha1_mb.c
615 index 99eefd812958..d42c9b7fadcf 100644
616 --- a/arch/x86/crypto/sha-mb/sha1_mb.c
617 +++ b/arch/x86/crypto/sha-mb/sha1_mb.c
618 @@ -932,4 +932,4 @@ module_exit(sha1_mb_mod_fini);
619 MODULE_LICENSE("GPL");
620 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, multi buffer accelerated");
621
622 -MODULE_ALIAS("sha1");
623 +MODULE_ALIAS_CRYPTO("sha1");
624 diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c
625 index 74d16ef707c7..6c20fe04a738 100644
626 --- a/arch/x86/crypto/sha1_ssse3_glue.c
627 +++ b/arch/x86/crypto/sha1_ssse3_glue.c
628 @@ -278,4 +278,4 @@ module_exit(sha1_ssse3_mod_fini);
629 MODULE_LICENSE("GPL");
630 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, Supplemental SSE3 accelerated");
631
632 -MODULE_ALIAS("sha1");
633 +MODULE_ALIAS_CRYPTO("sha1");
634 diff --git a/arch/x86/crypto/sha256_ssse3_glue.c b/arch/x86/crypto/sha256_ssse3_glue.c
635 index f248546da1ca..4dc100d82902 100644
636 --- a/arch/x86/crypto/sha256_ssse3_glue.c
637 +++ b/arch/x86/crypto/sha256_ssse3_glue.c
638 @@ -318,5 +318,5 @@ module_exit(sha256_ssse3_mod_fini);
639 MODULE_LICENSE("GPL");
640 MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm, Supplemental SSE3 accelerated");
641
642 -MODULE_ALIAS("sha256");
643 -MODULE_ALIAS("sha224");
644 +MODULE_ALIAS_CRYPTO("sha256");
645 +MODULE_ALIAS_CRYPTO("sha224");
646 diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c
647 index 8626b03e83b7..26a5898a6f26 100644
648 --- a/arch/x86/crypto/sha512_ssse3_glue.c
649 +++ b/arch/x86/crypto/sha512_ssse3_glue.c
650 @@ -326,5 +326,5 @@ module_exit(sha512_ssse3_mod_fini);
651 MODULE_LICENSE("GPL");
652 MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, Supplemental SSE3 accelerated");
653
654 -MODULE_ALIAS("sha512");
655 -MODULE_ALIAS("sha384");
656 +MODULE_ALIAS_CRYPTO("sha512");
657 +MODULE_ALIAS_CRYPTO("sha384");
658 diff --git a/arch/x86/crypto/twofish_avx_glue.c b/arch/x86/crypto/twofish_avx_glue.c
659 index 4e3c665be129..1ac531ea9bcc 100644
660 --- a/arch/x86/crypto/twofish_avx_glue.c
661 +++ b/arch/x86/crypto/twofish_avx_glue.c
662 @@ -579,4 +579,4 @@ module_exit(twofish_exit);
663
664 MODULE_DESCRIPTION("Twofish Cipher Algorithm, AVX optimized");
665 MODULE_LICENSE("GPL");
666 -MODULE_ALIAS("twofish");
667 +MODULE_ALIAS_CRYPTO("twofish");
668 diff --git a/arch/x86/crypto/twofish_glue.c b/arch/x86/crypto/twofish_glue.c
669 index 0a5202303501..77e06c2da83d 100644
670 --- a/arch/x86/crypto/twofish_glue.c
671 +++ b/arch/x86/crypto/twofish_glue.c
672 @@ -96,5 +96,5 @@ module_exit(fini);
673
674 MODULE_LICENSE("GPL");
675 MODULE_DESCRIPTION ("Twofish Cipher Algorithm, asm optimized");
676 -MODULE_ALIAS("twofish");
677 -MODULE_ALIAS("twofish-asm");
678 +MODULE_ALIAS_CRYPTO("twofish");
679 +MODULE_ALIAS_CRYPTO("twofish-asm");
680 diff --git a/arch/x86/crypto/twofish_glue_3way.c b/arch/x86/crypto/twofish_glue_3way.c
681 index 13e63b3e1dfb..56d8a08ee479 100644
682 --- a/arch/x86/crypto/twofish_glue_3way.c
683 +++ b/arch/x86/crypto/twofish_glue_3way.c
684 @@ -495,5 +495,5 @@ module_exit(fini);
685
686 MODULE_LICENSE("GPL");
687 MODULE_DESCRIPTION("Twofish Cipher Algorithm, 3-way parallel asm optimized");
688 -MODULE_ALIAS("twofish");
689 -MODULE_ALIAS("twofish-asm");
690 +MODULE_ALIAS_CRYPTO("twofish");
691 +MODULE_ALIAS_CRYPTO("twofish-asm");
692 diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
693 index 50d033a8947d..a94b82e8f156 100644
694 --- a/arch/x86/include/asm/desc.h
695 +++ b/arch/x86/include/asm/desc.h
696 @@ -251,7 +251,8 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
697 gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i];
698 }
699
700 -#define _LDT_empty(info) \
701 +/* This intentionally ignores lm, since 32-bit apps don't have that field. */
702 +#define LDT_empty(info) \
703 ((info)->base_addr == 0 && \
704 (info)->limit == 0 && \
705 (info)->contents == 0 && \
706 @@ -261,11 +262,18 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
707 (info)->seg_not_present == 1 && \
708 (info)->useable == 0)
709
710 -#ifdef CONFIG_X86_64
711 -#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0))
712 -#else
713 -#define LDT_empty(info) (_LDT_empty(info))
714 -#endif
715 +/* Lots of programs expect an all-zero user_desc to mean "no segment at all". */
716 +static inline bool LDT_zero(const struct user_desc *info)
717 +{
718 + return (info->base_addr == 0 &&
719 + info->limit == 0 &&
720 + info->contents == 0 &&
721 + info->read_exec_only == 0 &&
722 + info->seg_32bit == 0 &&
723 + info->limit_in_pages == 0 &&
724 + info->seg_not_present == 0 &&
725 + info->useable == 0);
726 +}
727
728 static inline void clear_LDT(void)
729 {
730 diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
731 index a450373e8e91..939155ffdece 100644
732 --- a/arch/x86/kernel/cpu/mshyperv.c
733 +++ b/arch/x86/kernel/cpu/mshyperv.c
734 @@ -107,6 +107,7 @@ static struct clocksource hyperv_cs = {
735 .rating = 400, /* use this when running on Hyperv*/
736 .read = read_hv_clock,
737 .mask = CLOCKSOURCE_MASK(64),
738 + .flags = CLOCK_SOURCE_IS_CONTINUOUS,
739 };
740
741 static void __init ms_hyperv_init_platform(void)
742 diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
743 index 922d28581024..37907756fc41 100644
744 --- a/arch/x86/kernel/irq.c
745 +++ b/arch/x86/kernel/irq.c
746 @@ -127,7 +127,7 @@ int arch_show_interrupts(struct seq_file *p, int prec)
747 seq_printf(p, " Machine check polls\n");
748 #endif
749 #if IS_ENABLED(CONFIG_HYPERV) || defined(CONFIG_XEN)
750 - seq_printf(p, "%*s: ", prec, "THR");
751 + seq_printf(p, "%*s: ", prec, "HYP");
752 for_each_online_cpu(j)
753 seq_printf(p, "%10u ", irq_stats(j)->irq_hv_callback_count);
754 seq_printf(p, " Hypervisor callback interrupts\n");
755 diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
756 index 4e942f31b1a7..7fc5e843f247 100644
757 --- a/arch/x86/kernel/tls.c
758 +++ b/arch/x86/kernel/tls.c
759 @@ -29,7 +29,28 @@ static int get_free_idx(void)
760
761 static bool tls_desc_okay(const struct user_desc *info)
762 {
763 - if (LDT_empty(info))
764 + /*
765 + * For historical reasons (i.e. no one ever documented how any
766 + * of the segmentation APIs work), user programs can and do
767 + * assume that a struct user_desc that's all zeros except for
768 + * entry_number means "no segment at all". This never actually
769 + * worked. In fact, up to Linux 3.19, a struct user_desc like
770 + * this would create a 16-bit read-write segment with base and
771 + * limit both equal to zero.
772 + *
773 + * That was close enough to "no segment at all" until we
774 + * hardened this function to disallow 16-bit TLS segments. Fix
775 + * it up by interpreting these zeroed segments the way that they
776 + * were almost certainly intended to be interpreted.
777 + *
778 + * The correct way to ask for "no segment at all" is to specify
779 + * a user_desc that satisfies LDT_empty. To keep everything
780 + * working, we accept both.
781 + *
782 + * Note that there's a similar kludge in modify_ldt -- look at
783 + * the distinction between modes 1 and 0x11.
784 + */
785 + if (LDT_empty(info) || LDT_zero(info))
786 return true;
787
788 /*
789 @@ -71,7 +92,7 @@ static void set_tls_desc(struct task_struct *p, int idx,
790 cpu = get_cpu();
791
792 while (n-- > 0) {
793 - if (LDT_empty(info))
794 + if (LDT_empty(info) || LDT_zero(info))
795 desc->a = desc->b = 0;
796 else
797 fill_ldt(desc, info);
798 diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
799 index b7e50bba3bbb..505449700e0c 100644
800 --- a/arch/x86/kernel/tsc.c
801 +++ b/arch/x86/kernel/tsc.c
802 @@ -617,7 +617,7 @@ static unsigned long quick_pit_calibrate(void)
803 goto success;
804 }
805 }
806 - pr_err("Fast TSC calibration failed\n");
807 + pr_info("Fast TSC calibration failed\n");
808 return 0;
809
810 success:
811 diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
812 index 22e7ed9e6d8e..c7327a7761ca 100644
813 --- a/arch/x86/kvm/emulate.c
814 +++ b/arch/x86/kvm/emulate.c
815 @@ -2345,7 +2345,7 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
816 * Not recognized on AMD in compat mode (but is recognized in legacy
817 * mode).
818 */
819 - if ((ctxt->mode == X86EMUL_MODE_PROT32) && (efer & EFER_LMA)
820 + if ((ctxt->mode != X86EMUL_MODE_PROT64) && (efer & EFER_LMA)
821 && !vendor_intel(ctxt))
822 return emulate_ud(ctxt);
823
824 @@ -2358,25 +2358,13 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
825 setup_syscalls_segments(ctxt, &cs, &ss);
826
827 ops->get_msr(ctxt, MSR_IA32_SYSENTER_CS, &msr_data);
828 - switch (ctxt->mode) {
829 - case X86EMUL_MODE_PROT32:
830 - if ((msr_data & 0xfffc) == 0x0)
831 - return emulate_gp(ctxt, 0);
832 - break;
833 - case X86EMUL_MODE_PROT64:
834 - if (msr_data == 0x0)
835 - return emulate_gp(ctxt, 0);
836 - break;
837 - default:
838 - break;
839 - }
840 + if ((msr_data & 0xfffc) == 0x0)
841 + return emulate_gp(ctxt, 0);
842
843 ctxt->eflags &= ~(EFLG_VM | EFLG_IF);
844 - cs_sel = (u16)msr_data;
845 - cs_sel &= ~SELECTOR_RPL_MASK;
846 + cs_sel = (u16)msr_data & ~SELECTOR_RPL_MASK;
847 ss_sel = cs_sel + 8;
848 - ss_sel &= ~SELECTOR_RPL_MASK;
849 - if (ctxt->mode == X86EMUL_MODE_PROT64 || (efer & EFER_LMA)) {
850 + if (efer & EFER_LMA) {
851 cs.d = 0;
852 cs.l = 1;
853 }
854 @@ -2385,10 +2373,11 @@ static int em_sysenter(struct x86_emulate_ctxt *ctxt)
855 ops->set_segment(ctxt, ss_sel, &ss, 0, VCPU_SREG_SS);
856
857 ops->get_msr(ctxt, MSR_IA32_SYSENTER_EIP, &msr_data);
858 - ctxt->_eip = msr_data;
859 + ctxt->_eip = (efer & EFER_LMA) ? msr_data : (u32)msr_data;
860
861 ops->get_msr(ctxt, MSR_IA32_SYSENTER_ESP, &msr_data);
862 - *reg_write(ctxt, VCPU_REGS_RSP) = msr_data;
863 + *reg_write(ctxt, VCPU_REGS_RSP) = (efer & EFER_LMA) ? msr_data :
864 + (u32)msr_data;
865
866 return X86EMUL_CONTINUE;
867 }
868 @@ -3788,8 +3777,8 @@ static const struct opcode group5[] = {
869 };
870
871 static const struct opcode group6[] = {
872 - DI(Prot, sldt),
873 - DI(Prot, str),
874 + DI(Prot | DstMem, sldt),
875 + DI(Prot | DstMem, str),
876 II(Prot | Priv | SrcMem16, em_lldt, lldt),
877 II(Prot | Priv | SrcMem16, em_ltr, ltr),
878 N, N, N, N,
879 diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
880 index 37c1435889ce..d0583eb61a5d 100644
881 --- a/arch/x86/pci/i386.c
882 +++ b/arch/x86/pci/i386.c
883 @@ -216,7 +216,7 @@ static void pcibios_allocate_bridge_resources(struct pci_dev *dev)
884 continue;
885 if (r->parent) /* Already allocated */
886 continue;
887 - if (!r->start || pci_claim_resource(dev, idx) < 0) {
888 + if (!r->start || pci_claim_bridge_resource(dev, idx) < 0) {
889 /*
890 * Something is wrong with the region.
891 * Invalidate the resource to prevent
892 diff --git a/crypto/842.c b/crypto/842.c
893 index 65c7a89cfa09..b48f4f108c47 100644
894 --- a/crypto/842.c
895 +++ b/crypto/842.c
896 @@ -180,3 +180,4 @@ module_exit(nx842_mod_exit);
897
898 MODULE_LICENSE("GPL");
899 MODULE_DESCRIPTION("842 Compression Algorithm");
900 +MODULE_ALIAS_CRYPTO("842");
901 diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c
902 index fd0d6b454975..3dd101144a58 100644
903 --- a/crypto/aes_generic.c
904 +++ b/crypto/aes_generic.c
905 @@ -1474,4 +1474,5 @@ module_exit(aes_fini);
906
907 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
908 MODULE_LICENSE("Dual BSD/GPL");
909 -MODULE_ALIAS("aes");
910 +MODULE_ALIAS_CRYPTO("aes");
911 +MODULE_ALIAS_CRYPTO("aes-generic");
912 diff --git a/crypto/algapi.c b/crypto/algapi.c
913 index e8d3a7dca8c4..71a8143e23b1 100644
914 --- a/crypto/algapi.c
915 +++ b/crypto/algapi.c
916 @@ -509,8 +509,8 @@ static struct crypto_template *__crypto_lookup_template(const char *name)
917
918 struct crypto_template *crypto_lookup_template(const char *name)
919 {
920 - return try_then_request_module(__crypto_lookup_template(name), "%s",
921 - name);
922 + return try_then_request_module(__crypto_lookup_template(name),
923 + "crypto-%s", name);
924 }
925 EXPORT_SYMBOL_GPL(crypto_lookup_template);
926
927 diff --git a/crypto/ansi_cprng.c b/crypto/ansi_cprng.c
928 index 666f1962a160..6f5bebc9bf01 100644
929 --- a/crypto/ansi_cprng.c
930 +++ b/crypto/ansi_cprng.c
931 @@ -476,4 +476,5 @@ module_param(dbg, int, 0);
932 MODULE_PARM_DESC(dbg, "Boolean to enable debugging (0/1 == off/on)");
933 module_init(prng_mod_init);
934 module_exit(prng_mod_fini);
935 -MODULE_ALIAS("stdrng");
936 +MODULE_ALIAS_CRYPTO("stdrng");
937 +MODULE_ALIAS_CRYPTO("ansi_cprng");
938 diff --git a/crypto/anubis.c b/crypto/anubis.c
939 index 008c8a4fb67c..4bb187c2a902 100644
940 --- a/crypto/anubis.c
941 +++ b/crypto/anubis.c
942 @@ -704,3 +704,4 @@ module_exit(anubis_mod_fini);
943
944 MODULE_LICENSE("GPL");
945 MODULE_DESCRIPTION("Anubis Cryptographic Algorithm");
946 +MODULE_ALIAS_CRYPTO("anubis");
947 diff --git a/crypto/api.c b/crypto/api.c
948 index a2b39c5f3649..2a81e98a0021 100644
949 --- a/crypto/api.c
950 +++ b/crypto/api.c
951 @@ -216,11 +216,11 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask)
952
953 alg = crypto_alg_lookup(name, type, mask);
954 if (!alg) {
955 - request_module("%s", name);
956 + request_module("crypto-%s", name);
957
958 if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask &
959 CRYPTO_ALG_NEED_FALLBACK))
960 - request_module("%s-all", name);
961 + request_module("crypto-%s-all", name);
962
963 alg = crypto_alg_lookup(name, type, mask);
964 }
965 diff --git a/crypto/arc4.c b/crypto/arc4.c
966 index 5a772c3657d5..f1a81925558f 100644
967 --- a/crypto/arc4.c
968 +++ b/crypto/arc4.c
969 @@ -166,3 +166,4 @@ module_exit(arc4_exit);
970 MODULE_LICENSE("GPL");
971 MODULE_DESCRIPTION("ARC4 Cipher Algorithm");
972 MODULE_AUTHOR("Jon Oberheide <jon@oberheide.org>");
973 +MODULE_ALIAS_CRYPTO("arc4");
974 diff --git a/crypto/authenc.c b/crypto/authenc.c
975 index e1223559d5df..78fb16cab13f 100644
976 --- a/crypto/authenc.c
977 +++ b/crypto/authenc.c
978 @@ -721,3 +721,4 @@ module_exit(crypto_authenc_module_exit);
979
980 MODULE_LICENSE("GPL");
981 MODULE_DESCRIPTION("Simple AEAD wrapper for IPsec");
982 +MODULE_ALIAS_CRYPTO("authenc");
983 diff --git a/crypto/authencesn.c b/crypto/authencesn.c
984 index 4be0dd4373a9..024bff2344fc 100644
985 --- a/crypto/authencesn.c
986 +++ b/crypto/authencesn.c
987 @@ -814,3 +814,4 @@ module_exit(crypto_authenc_esn_module_exit);
988 MODULE_LICENSE("GPL");
989 MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>");
990 MODULE_DESCRIPTION("AEAD wrapper for IPsec with extended sequence numbers");
991 +MODULE_ALIAS_CRYPTO("authencesn");
992 diff --git a/crypto/blowfish_generic.c b/crypto/blowfish_generic.c
993 index 8baf5447d35b..87b392a77a93 100644
994 --- a/crypto/blowfish_generic.c
995 +++ b/crypto/blowfish_generic.c
996 @@ -138,4 +138,5 @@ module_exit(blowfish_mod_fini);
997
998 MODULE_LICENSE("GPL");
999 MODULE_DESCRIPTION("Blowfish Cipher Algorithm");
1000 -MODULE_ALIAS("blowfish");
1001 +MODULE_ALIAS_CRYPTO("blowfish");
1002 +MODULE_ALIAS_CRYPTO("blowfish-generic");
1003 diff --git a/crypto/camellia_generic.c b/crypto/camellia_generic.c
1004 index 26bcd7a2d6b4..a02286bf319e 100644
1005 --- a/crypto/camellia_generic.c
1006 +++ b/crypto/camellia_generic.c
1007 @@ -1098,4 +1098,5 @@ module_exit(camellia_fini);
1008
1009 MODULE_DESCRIPTION("Camellia Cipher Algorithm");
1010 MODULE_LICENSE("GPL");
1011 -MODULE_ALIAS("camellia");
1012 +MODULE_ALIAS_CRYPTO("camellia");
1013 +MODULE_ALIAS_CRYPTO("camellia-generic");
1014 diff --git a/crypto/cast5_generic.c b/crypto/cast5_generic.c
1015 index 5558f630a0eb..df5c72629383 100644
1016 --- a/crypto/cast5_generic.c
1017 +++ b/crypto/cast5_generic.c
1018 @@ -549,4 +549,5 @@ module_exit(cast5_mod_fini);
1019
1020 MODULE_LICENSE("GPL");
1021 MODULE_DESCRIPTION("Cast5 Cipher Algorithm");
1022 -MODULE_ALIAS("cast5");
1023 +MODULE_ALIAS_CRYPTO("cast5");
1024 +MODULE_ALIAS_CRYPTO("cast5-generic");
1025 diff --git a/crypto/cast6_generic.c b/crypto/cast6_generic.c
1026 index de732528a430..058c8d755d03 100644
1027 --- a/crypto/cast6_generic.c
1028 +++ b/crypto/cast6_generic.c
1029 @@ -291,4 +291,5 @@ module_exit(cast6_mod_fini);
1030
1031 MODULE_LICENSE("GPL");
1032 MODULE_DESCRIPTION("Cast6 Cipher Algorithm");
1033 -MODULE_ALIAS("cast6");
1034 +MODULE_ALIAS_CRYPTO("cast6");
1035 +MODULE_ALIAS_CRYPTO("cast6-generic");
1036 diff --git a/crypto/cbc.c b/crypto/cbc.c
1037 index 61ac42e1e32b..780ee27b2d43 100644
1038 --- a/crypto/cbc.c
1039 +++ b/crypto/cbc.c
1040 @@ -289,3 +289,4 @@ module_exit(crypto_cbc_module_exit);
1041
1042 MODULE_LICENSE("GPL");
1043 MODULE_DESCRIPTION("CBC block cipher algorithm");
1044 +MODULE_ALIAS_CRYPTO("cbc");
1045 diff --git a/crypto/ccm.c b/crypto/ccm.c
1046 index 1df84217f7c9..003bbbd21a2b 100644
1047 --- a/crypto/ccm.c
1048 +++ b/crypto/ccm.c
1049 @@ -879,5 +879,6 @@ module_exit(crypto_ccm_module_exit);
1050
1051 MODULE_LICENSE("GPL");
1052 MODULE_DESCRIPTION("Counter with CBC MAC");
1053 -MODULE_ALIAS("ccm_base");
1054 -MODULE_ALIAS("rfc4309");
1055 +MODULE_ALIAS_CRYPTO("ccm_base");
1056 +MODULE_ALIAS_CRYPTO("rfc4309");
1057 +MODULE_ALIAS_CRYPTO("ccm");
1058 diff --git a/crypto/chainiv.c b/crypto/chainiv.c
1059 index 9c294c8f9a07..63c17d5992f7 100644
1060 --- a/crypto/chainiv.c
1061 +++ b/crypto/chainiv.c
1062 @@ -359,3 +359,4 @@ module_exit(chainiv_module_exit);
1063
1064 MODULE_LICENSE("GPL");
1065 MODULE_DESCRIPTION("Chain IV Generator");
1066 +MODULE_ALIAS_CRYPTO("chainiv");
1067 diff --git a/crypto/cmac.c b/crypto/cmac.c
1068 index 50880cf17fad..7a8bfbd548f6 100644
1069 --- a/crypto/cmac.c
1070 +++ b/crypto/cmac.c
1071 @@ -313,3 +313,4 @@ module_exit(crypto_cmac_module_exit);
1072
1073 MODULE_LICENSE("GPL");
1074 MODULE_DESCRIPTION("CMAC keyed hash algorithm");
1075 +MODULE_ALIAS_CRYPTO("cmac");
1076 diff --git a/crypto/crc32.c b/crypto/crc32.c
1077 index 9d1c41569898..187ded28cb0b 100644
1078 --- a/crypto/crc32.c
1079 +++ b/crypto/crc32.c
1080 @@ -156,3 +156,4 @@ module_exit(crc32_mod_fini);
1081 MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>");
1082 MODULE_DESCRIPTION("CRC32 calculations wrapper for lib/crc32");
1083 MODULE_LICENSE("GPL");
1084 +MODULE_ALIAS_CRYPTO("crc32");
1085 diff --git a/crypto/crc32c_generic.c b/crypto/crc32c_generic.c
1086 index d9c7beba8e50..06f1b60f02b2 100644
1087 --- a/crypto/crc32c_generic.c
1088 +++ b/crypto/crc32c_generic.c
1089 @@ -170,5 +170,6 @@ module_exit(crc32c_mod_fini);
1090 MODULE_AUTHOR("Clay Haapala <chaapala@cisco.com>");
1091 MODULE_DESCRIPTION("CRC32c (Castagnoli) calculations wrapper for lib/crc32c");
1092 MODULE_LICENSE("GPL");
1093 -MODULE_ALIAS("crc32c");
1094 +MODULE_ALIAS_CRYPTO("crc32c");
1095 +MODULE_ALIAS_CRYPTO("crc32c-generic");
1096 MODULE_SOFTDEP("pre: crc32c");
1097 diff --git a/crypto/crct10dif_generic.c b/crypto/crct10dif_generic.c
1098 index 877e7114ec5c..c1229614c7e3 100644
1099 --- a/crypto/crct10dif_generic.c
1100 +++ b/crypto/crct10dif_generic.c
1101 @@ -124,4 +124,5 @@ module_exit(crct10dif_mod_fini);
1102 MODULE_AUTHOR("Tim Chen <tim.c.chen@linux.intel.com>");
1103 MODULE_DESCRIPTION("T10 DIF CRC calculation.");
1104 MODULE_LICENSE("GPL");
1105 -MODULE_ALIAS("crct10dif");
1106 +MODULE_ALIAS_CRYPTO("crct10dif");
1107 +MODULE_ALIAS_CRYPTO("crct10dif-generic");
1108 diff --git a/crypto/cryptd.c b/crypto/cryptd.c
1109 index e592c90abebb..650afac10fd7 100644
1110 --- a/crypto/cryptd.c
1111 +++ b/crypto/cryptd.c
1112 @@ -955,3 +955,4 @@ module_exit(cryptd_exit);
1113
1114 MODULE_LICENSE("GPL");
1115 MODULE_DESCRIPTION("Software async crypto daemon");
1116 +MODULE_ALIAS_CRYPTO("cryptd");
1117 diff --git a/crypto/crypto_null.c b/crypto/crypto_null.c
1118 index 1dc54bb95a87..a20319132e33 100644
1119 --- a/crypto/crypto_null.c
1120 +++ b/crypto/crypto_null.c
1121 @@ -145,9 +145,9 @@ static struct crypto_alg null_algs[3] = { {
1122 .coa_decompress = null_compress } }
1123 } };
1124
1125 -MODULE_ALIAS("compress_null");
1126 -MODULE_ALIAS("digest_null");
1127 -MODULE_ALIAS("cipher_null");
1128 +MODULE_ALIAS_CRYPTO("compress_null");
1129 +MODULE_ALIAS_CRYPTO("digest_null");
1130 +MODULE_ALIAS_CRYPTO("cipher_null");
1131
1132 static int __init crypto_null_mod_init(void)
1133 {
1134 diff --git a/crypto/ctr.c b/crypto/ctr.c
1135 index f2b94f27bb2c..2386f7313952 100644
1136 --- a/crypto/ctr.c
1137 +++ b/crypto/ctr.c
1138 @@ -466,4 +466,5 @@ module_exit(crypto_ctr_module_exit);
1139
1140 MODULE_LICENSE("GPL");
1141 MODULE_DESCRIPTION("CTR Counter block mode");
1142 -MODULE_ALIAS("rfc3686");
1143 +MODULE_ALIAS_CRYPTO("rfc3686");
1144 +MODULE_ALIAS_CRYPTO("ctr");
1145 diff --git a/crypto/cts.c b/crypto/cts.c
1146 index 133f0874c95e..bd9405820e8a 100644
1147 --- a/crypto/cts.c
1148 +++ b/crypto/cts.c
1149 @@ -351,3 +351,4 @@ module_exit(crypto_cts_module_exit);
1150
1151 MODULE_LICENSE("Dual BSD/GPL");
1152 MODULE_DESCRIPTION("CTS-CBC CipherText Stealing for CBC");
1153 +MODULE_ALIAS_CRYPTO("cts");
1154 diff --git a/crypto/deflate.c b/crypto/deflate.c
1155 index b57d70eb156b..95d8d37c5021 100644
1156 --- a/crypto/deflate.c
1157 +++ b/crypto/deflate.c
1158 @@ -222,4 +222,4 @@ module_exit(deflate_mod_fini);
1159 MODULE_LICENSE("GPL");
1160 MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP");
1161 MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>");
1162 -
1163 +MODULE_ALIAS_CRYPTO("deflate");
1164 diff --git a/crypto/des_generic.c b/crypto/des_generic.c
1165 index 298d464ab7d2..a71720544d11 100644
1166 --- a/crypto/des_generic.c
1167 +++ b/crypto/des_generic.c
1168 @@ -983,8 +983,6 @@ static struct crypto_alg des_algs[2] = { {
1169 .cia_decrypt = des3_ede_decrypt } }
1170 } };
1171
1172 -MODULE_ALIAS("des3_ede");
1173 -
1174 static int __init des_generic_mod_init(void)
1175 {
1176 return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs));
1177 @@ -1001,4 +999,7 @@ module_exit(des_generic_mod_fini);
1178 MODULE_LICENSE("GPL");
1179 MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");
1180 MODULE_AUTHOR("Dag Arne Osvik <da@osvik.no>");
1181 -MODULE_ALIAS("des");
1182 +MODULE_ALIAS_CRYPTO("des");
1183 +MODULE_ALIAS_CRYPTO("des-generic");
1184 +MODULE_ALIAS_CRYPTO("des3_ede");
1185 +MODULE_ALIAS_CRYPTO("des3_ede-generic");
1186 diff --git a/crypto/ecb.c b/crypto/ecb.c
1187 index 935cfef4aa84..12011aff0971 100644
1188 --- a/crypto/ecb.c
1189 +++ b/crypto/ecb.c
1190 @@ -185,3 +185,4 @@ module_exit(crypto_ecb_module_exit);
1191
1192 MODULE_LICENSE("GPL");
1193 MODULE_DESCRIPTION("ECB block cipher algorithm");
1194 +MODULE_ALIAS_CRYPTO("ecb");
1195 diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c
1196 index bf7ab4a89493..f116fae766f8 100644
1197 --- a/crypto/eseqiv.c
1198 +++ b/crypto/eseqiv.c
1199 @@ -267,3 +267,4 @@ module_exit(eseqiv_module_exit);
1200
1201 MODULE_LICENSE("GPL");
1202 MODULE_DESCRIPTION("Encrypted Sequence Number IV Generator");
1203 +MODULE_ALIAS_CRYPTO("eseqiv");
1204 diff --git a/crypto/fcrypt.c b/crypto/fcrypt.c
1205 index 021d7fec6bc8..77286ea28865 100644
1206 --- a/crypto/fcrypt.c
1207 +++ b/crypto/fcrypt.c
1208 @@ -420,3 +420,4 @@ module_exit(fcrypt_mod_fini);
1209 MODULE_LICENSE("Dual BSD/GPL");
1210 MODULE_DESCRIPTION("FCrypt Cipher Algorithm");
1211 MODULE_AUTHOR("David Howells <dhowells@redhat.com>");
1212 +MODULE_ALIAS_CRYPTO("fcrypt");
1213 diff --git a/crypto/gcm.c b/crypto/gcm.c
1214 index 276cdac567b6..2e403f6138c1 100644
1215 --- a/crypto/gcm.c
1216 +++ b/crypto/gcm.c
1217 @@ -1441,6 +1441,7 @@ module_exit(crypto_gcm_module_exit);
1218 MODULE_LICENSE("GPL");
1219 MODULE_DESCRIPTION("Galois/Counter Mode");
1220 MODULE_AUTHOR("Mikko Herranen <mh1@iki.fi>");
1221 -MODULE_ALIAS("gcm_base");
1222 -MODULE_ALIAS("rfc4106");
1223 -MODULE_ALIAS("rfc4543");
1224 +MODULE_ALIAS_CRYPTO("gcm_base");
1225 +MODULE_ALIAS_CRYPTO("rfc4106");
1226 +MODULE_ALIAS_CRYPTO("rfc4543");
1227 +MODULE_ALIAS_CRYPTO("gcm");
1228 diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
1229 index 9d3f0c69a86f..bac70995e064 100644
1230 --- a/crypto/ghash-generic.c
1231 +++ b/crypto/ghash-generic.c
1232 @@ -172,4 +172,5 @@ module_exit(ghash_mod_exit);
1233
1234 MODULE_LICENSE("GPL");
1235 MODULE_DESCRIPTION("GHASH Message Digest Algorithm");
1236 -MODULE_ALIAS("ghash");
1237 +MODULE_ALIAS_CRYPTO("ghash");
1238 +MODULE_ALIAS_CRYPTO("ghash-generic");
1239 diff --git a/crypto/hmac.c b/crypto/hmac.c
1240 index e392219ddc61..72e38c098bb3 100644
1241 --- a/crypto/hmac.c
1242 +++ b/crypto/hmac.c
1243 @@ -268,3 +268,4 @@ module_exit(hmac_module_exit);
1244
1245 MODULE_LICENSE("GPL");
1246 MODULE_DESCRIPTION("HMAC hash algorithm");
1247 +MODULE_ALIAS_CRYPTO("hmac");
1248 diff --git a/crypto/khazad.c b/crypto/khazad.c
1249 index 60e7cd66facc..873eb5ded6d7 100644
1250 --- a/crypto/khazad.c
1251 +++ b/crypto/khazad.c
1252 @@ -880,3 +880,4 @@ module_exit(khazad_mod_fini);
1253
1254 MODULE_LICENSE("GPL");
1255 MODULE_DESCRIPTION("Khazad Cryptographic Algorithm");
1256 +MODULE_ALIAS_CRYPTO("khazad");
1257 diff --git a/crypto/krng.c b/crypto/krng.c
1258 index a2d2b72fc135..0224841b6579 100644
1259 --- a/crypto/krng.c
1260 +++ b/crypto/krng.c
1261 @@ -62,4 +62,5 @@ module_exit(krng_mod_fini);
1262
1263 MODULE_LICENSE("GPL");
1264 MODULE_DESCRIPTION("Kernel Random Number Generator");
1265 -MODULE_ALIAS("stdrng");
1266 +MODULE_ALIAS_CRYPTO("stdrng");
1267 +MODULE_ALIAS_CRYPTO("krng");
1268 diff --git a/crypto/lrw.c b/crypto/lrw.c
1269 index ba42acc4deba..6f9908a7ebcb 100644
1270 --- a/crypto/lrw.c
1271 +++ b/crypto/lrw.c
1272 @@ -400,3 +400,4 @@ module_exit(crypto_module_exit);
1273
1274 MODULE_LICENSE("GPL");
1275 MODULE_DESCRIPTION("LRW block cipher mode");
1276 +MODULE_ALIAS_CRYPTO("lrw");
1277 diff --git a/crypto/lz4.c b/crypto/lz4.c
1278 index 34d072b72a73..aefbceaf3104 100644
1279 --- a/crypto/lz4.c
1280 +++ b/crypto/lz4.c
1281 @@ -104,3 +104,4 @@ module_exit(lz4_mod_fini);
1282
1283 MODULE_LICENSE("GPL");
1284 MODULE_DESCRIPTION("LZ4 Compression Algorithm");
1285 +MODULE_ALIAS_CRYPTO("lz4");
1286 diff --git a/crypto/lz4hc.c b/crypto/lz4hc.c
1287 index 9218b3fed5e3..a1d3b5bd3d85 100644
1288 --- a/crypto/lz4hc.c
1289 +++ b/crypto/lz4hc.c
1290 @@ -104,3 +104,4 @@ module_exit(lz4hc_mod_fini);
1291
1292 MODULE_LICENSE("GPL");
1293 MODULE_DESCRIPTION("LZ4HC Compression Algorithm");
1294 +MODULE_ALIAS_CRYPTO("lz4hc");
1295 diff --git a/crypto/lzo.c b/crypto/lzo.c
1296 index a8ff2f778dc4..4b3e92525dac 100644
1297 --- a/crypto/lzo.c
1298 +++ b/crypto/lzo.c
1299 @@ -107,3 +107,4 @@ module_exit(lzo_mod_fini);
1300
1301 MODULE_LICENSE("GPL");
1302 MODULE_DESCRIPTION("LZO Compression Algorithm");
1303 +MODULE_ALIAS_CRYPTO("lzo");
1304 diff --git a/crypto/mcryptd.c b/crypto/mcryptd.c
1305 index b39fbd530102..a8e870444ea9 100644
1306 --- a/crypto/mcryptd.c
1307 +++ b/crypto/mcryptd.c
1308 @@ -703,3 +703,4 @@ module_exit(mcryptd_exit);
1309
1310 MODULE_LICENSE("GPL");
1311 MODULE_DESCRIPTION("Software async multibuffer crypto daemon");
1312 +MODULE_ALIAS_CRYPTO("mcryptd");
1313 diff --git a/crypto/md4.c b/crypto/md4.c
1314 index 0477a6a01d58..3515af425cc9 100644
1315 --- a/crypto/md4.c
1316 +++ b/crypto/md4.c
1317 @@ -255,4 +255,4 @@ module_exit(md4_mod_fini);
1318
1319 MODULE_LICENSE("GPL");
1320 MODULE_DESCRIPTION("MD4 Message Digest Algorithm");
1321 -
1322 +MODULE_ALIAS_CRYPTO("md4");
1323 diff --git a/crypto/md5.c b/crypto/md5.c
1324 index 7febeaab923b..36f5e5b103f3 100644
1325 --- a/crypto/md5.c
1326 +++ b/crypto/md5.c
1327 @@ -168,3 +168,4 @@ module_exit(md5_mod_fini);
1328
1329 MODULE_LICENSE("GPL");
1330 MODULE_DESCRIPTION("MD5 Message Digest Algorithm");
1331 +MODULE_ALIAS_CRYPTO("md5");
1332 diff --git a/crypto/michael_mic.c b/crypto/michael_mic.c
1333 index 079b761bc70d..46195e0d0f4d 100644
1334 --- a/crypto/michael_mic.c
1335 +++ b/crypto/michael_mic.c
1336 @@ -184,3 +184,4 @@ module_exit(michael_mic_exit);
1337 MODULE_LICENSE("GPL v2");
1338 MODULE_DESCRIPTION("Michael MIC");
1339 MODULE_AUTHOR("Jouni Malinen <j@w1.fi>");
1340 +MODULE_ALIAS_CRYPTO("michael_mic");
1341 diff --git a/crypto/pcbc.c b/crypto/pcbc.c
1342 index d1b8bdfb5855..f654965f0933 100644
1343 --- a/crypto/pcbc.c
1344 +++ b/crypto/pcbc.c
1345 @@ -295,3 +295,4 @@ module_exit(crypto_pcbc_module_exit);
1346
1347 MODULE_LICENSE("GPL");
1348 MODULE_DESCRIPTION("PCBC block cipher algorithm");
1349 +MODULE_ALIAS_CRYPTO("pcbc");
1350 diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
1351 index 309d345ead95..c305d4112735 100644
1352 --- a/crypto/pcrypt.c
1353 +++ b/crypto/pcrypt.c
1354 @@ -565,3 +565,4 @@ module_exit(pcrypt_exit);
1355 MODULE_LICENSE("GPL");
1356 MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>");
1357 MODULE_DESCRIPTION("Parallel crypto wrapper");
1358 +MODULE_ALIAS_CRYPTO("pcrypt");
1359 diff --git a/crypto/rmd128.c b/crypto/rmd128.c
1360 index 8a0f68b7f257..049486ede938 100644
1361 --- a/crypto/rmd128.c
1362 +++ b/crypto/rmd128.c
1363 @@ -327,3 +327,4 @@ module_exit(rmd128_mod_fini);
1364 MODULE_LICENSE("GPL");
1365 MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1366 MODULE_DESCRIPTION("RIPEMD-128 Message Digest");
1367 +MODULE_ALIAS_CRYPTO("rmd128");
1368 diff --git a/crypto/rmd160.c b/crypto/rmd160.c
1369 index 525d7bb752cf..de585e51d455 100644
1370 --- a/crypto/rmd160.c
1371 +++ b/crypto/rmd160.c
1372 @@ -371,3 +371,4 @@ module_exit(rmd160_mod_fini);
1373 MODULE_LICENSE("GPL");
1374 MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1375 MODULE_DESCRIPTION("RIPEMD-160 Message Digest");
1376 +MODULE_ALIAS_CRYPTO("rmd160");
1377 diff --git a/crypto/rmd256.c b/crypto/rmd256.c
1378 index 69293d9b56e0..4ec02a754e09 100644
1379 --- a/crypto/rmd256.c
1380 +++ b/crypto/rmd256.c
1381 @@ -346,3 +346,4 @@ module_exit(rmd256_mod_fini);
1382 MODULE_LICENSE("GPL");
1383 MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1384 MODULE_DESCRIPTION("RIPEMD-256 Message Digest");
1385 +MODULE_ALIAS_CRYPTO("rmd256");
1386 diff --git a/crypto/rmd320.c b/crypto/rmd320.c
1387 index 09f97dfdfbba..770f2cb369f8 100644
1388 --- a/crypto/rmd320.c
1389 +++ b/crypto/rmd320.c
1390 @@ -395,3 +395,4 @@ module_exit(rmd320_mod_fini);
1391 MODULE_LICENSE("GPL");
1392 MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1393 MODULE_DESCRIPTION("RIPEMD-320 Message Digest");
1394 +MODULE_ALIAS_CRYPTO("rmd320");
1395 diff --git a/crypto/salsa20_generic.c b/crypto/salsa20_generic.c
1396 index 9a4770c02284..f550b5d94630 100644
1397 --- a/crypto/salsa20_generic.c
1398 +++ b/crypto/salsa20_generic.c
1399 @@ -248,4 +248,5 @@ module_exit(salsa20_generic_mod_fini);
1400
1401 MODULE_LICENSE("GPL");
1402 MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm");
1403 -MODULE_ALIAS("salsa20");
1404 +MODULE_ALIAS_CRYPTO("salsa20");
1405 +MODULE_ALIAS_CRYPTO("salsa20-generic");
1406 diff --git a/crypto/seed.c b/crypto/seed.c
1407 index 9c904d6d2151..c6ba8438be43 100644
1408 --- a/crypto/seed.c
1409 +++ b/crypto/seed.c
1410 @@ -476,3 +476,4 @@ module_exit(seed_fini);
1411 MODULE_DESCRIPTION("SEED Cipher Algorithm");
1412 MODULE_LICENSE("GPL");
1413 MODULE_AUTHOR("Hye-Shik Chang <perky@FreeBSD.org>, Kim Hyun <hkim@kisa.or.kr>");
1414 +MODULE_ALIAS_CRYPTO("seed");
1415 diff --git a/crypto/seqiv.c b/crypto/seqiv.c
1416 index ee190fcedcd2..9daa854cc485 100644
1417 --- a/crypto/seqiv.c
1418 +++ b/crypto/seqiv.c
1419 @@ -362,3 +362,4 @@ module_exit(seqiv_module_exit);
1420
1421 MODULE_LICENSE("GPL");
1422 MODULE_DESCRIPTION("Sequence Number IV Generator");
1423 +MODULE_ALIAS_CRYPTO("seqiv");
1424 diff --git a/crypto/serpent_generic.c b/crypto/serpent_generic.c
1425 index 7ddbd7e88859..94970a794975 100644
1426 --- a/crypto/serpent_generic.c
1427 +++ b/crypto/serpent_generic.c
1428 @@ -665,5 +665,6 @@ module_exit(serpent_mod_fini);
1429 MODULE_LICENSE("GPL");
1430 MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm");
1431 MODULE_AUTHOR("Dag Arne Osvik <osvik@ii.uib.no>");
1432 -MODULE_ALIAS("tnepres");
1433 -MODULE_ALIAS("serpent");
1434 +MODULE_ALIAS_CRYPTO("tnepres");
1435 +MODULE_ALIAS_CRYPTO("serpent");
1436 +MODULE_ALIAS_CRYPTO("serpent-generic");
1437 diff --git a/crypto/sha1_generic.c b/crypto/sha1_generic.c
1438 index 7bb047432782..a3e50c37eb6f 100644
1439 --- a/crypto/sha1_generic.c
1440 +++ b/crypto/sha1_generic.c
1441 @@ -153,4 +153,5 @@ module_exit(sha1_generic_mod_fini);
1442 MODULE_LICENSE("GPL");
1443 MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
1444
1445 -MODULE_ALIAS("sha1");
1446 +MODULE_ALIAS_CRYPTO("sha1");
1447 +MODULE_ALIAS_CRYPTO("sha1-generic");
1448 diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c
1449 index 65e7b76b057f..b001ff5c2efc 100644
1450 --- a/crypto/sha256_generic.c
1451 +++ b/crypto/sha256_generic.c
1452 @@ -384,5 +384,7 @@ module_exit(sha256_generic_mod_fini);
1453 MODULE_LICENSE("GPL");
1454 MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm");
1455
1456 -MODULE_ALIAS("sha224");
1457 -MODULE_ALIAS("sha256");
1458 +MODULE_ALIAS_CRYPTO("sha224");
1459 +MODULE_ALIAS_CRYPTO("sha224-generic");
1460 +MODULE_ALIAS_CRYPTO("sha256");
1461 +MODULE_ALIAS_CRYPTO("sha256-generic");
1462 diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
1463 index 95db67197cd9..1c3c3767e079 100644
1464 --- a/crypto/sha512_generic.c
1465 +++ b/crypto/sha512_generic.c
1466 @@ -288,5 +288,7 @@ module_exit(sha512_generic_mod_fini);
1467 MODULE_LICENSE("GPL");
1468 MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms");
1469
1470 -MODULE_ALIAS("sha384");
1471 -MODULE_ALIAS("sha512");
1472 +MODULE_ALIAS_CRYPTO("sha384");
1473 +MODULE_ALIAS_CRYPTO("sha384-generic");
1474 +MODULE_ALIAS_CRYPTO("sha512");
1475 +MODULE_ALIAS_CRYPTO("sha512-generic");
1476 diff --git a/crypto/tea.c b/crypto/tea.c
1477 index 0a572323ee4a..b70b441c7d1e 100644
1478 --- a/crypto/tea.c
1479 +++ b/crypto/tea.c
1480 @@ -270,8 +270,9 @@ static void __exit tea_mod_fini(void)
1481 crypto_unregister_algs(tea_algs, ARRAY_SIZE(tea_algs));
1482 }
1483
1484 -MODULE_ALIAS("xtea");
1485 -MODULE_ALIAS("xeta");
1486 +MODULE_ALIAS_CRYPTO("tea");
1487 +MODULE_ALIAS_CRYPTO("xtea");
1488 +MODULE_ALIAS_CRYPTO("xeta");
1489
1490 module_init(tea_mod_init);
1491 module_exit(tea_mod_fini);
1492 diff --git a/crypto/tgr192.c b/crypto/tgr192.c
1493 index 3c7af0d1ff7a..321bc6ff2a9d 100644
1494 --- a/crypto/tgr192.c
1495 +++ b/crypto/tgr192.c
1496 @@ -676,8 +676,9 @@ static void __exit tgr192_mod_fini(void)
1497 crypto_unregister_shashes(tgr_algs, ARRAY_SIZE(tgr_algs));
1498 }
1499
1500 -MODULE_ALIAS("tgr160");
1501 -MODULE_ALIAS("tgr128");
1502 +MODULE_ALIAS_CRYPTO("tgr192");
1503 +MODULE_ALIAS_CRYPTO("tgr160");
1504 +MODULE_ALIAS_CRYPTO("tgr128");
1505
1506 module_init(tgr192_mod_init);
1507 module_exit(tgr192_mod_fini);
1508 diff --git a/crypto/twofish_generic.c b/crypto/twofish_generic.c
1509 index 2d5000552d0f..ebf7a3efb572 100644
1510 --- a/crypto/twofish_generic.c
1511 +++ b/crypto/twofish_generic.c
1512 @@ -211,4 +211,5 @@ module_exit(twofish_mod_fini);
1513
1514 MODULE_LICENSE("GPL");
1515 MODULE_DESCRIPTION ("Twofish Cipher Algorithm");
1516 -MODULE_ALIAS("twofish");
1517 +MODULE_ALIAS_CRYPTO("twofish");
1518 +MODULE_ALIAS_CRYPTO("twofish-generic");
1519 diff --git a/crypto/vmac.c b/crypto/vmac.c
1520 index d84c24bd7ff7..df76a816cfb2 100644
1521 --- a/crypto/vmac.c
1522 +++ b/crypto/vmac.c
1523 @@ -713,3 +713,4 @@ module_exit(vmac_module_exit);
1524
1525 MODULE_LICENSE("GPL");
1526 MODULE_DESCRIPTION("VMAC hash algorithm");
1527 +MODULE_ALIAS_CRYPTO("vmac");
1528 diff --git a/crypto/wp512.c b/crypto/wp512.c
1529 index ec64e7762fbb..7ee5a043a988 100644
1530 --- a/crypto/wp512.c
1531 +++ b/crypto/wp512.c
1532 @@ -1167,8 +1167,9 @@ static void __exit wp512_mod_fini(void)
1533 crypto_unregister_shashes(wp_algs, ARRAY_SIZE(wp_algs));
1534 }
1535
1536 -MODULE_ALIAS("wp384");
1537 -MODULE_ALIAS("wp256");
1538 +MODULE_ALIAS_CRYPTO("wp512");
1539 +MODULE_ALIAS_CRYPTO("wp384");
1540 +MODULE_ALIAS_CRYPTO("wp256");
1541
1542 module_init(wp512_mod_init);
1543 module_exit(wp512_mod_fini);
1544 diff --git a/crypto/xcbc.c b/crypto/xcbc.c
1545 index a5fbdf3738cf..df90b332554c 100644
1546 --- a/crypto/xcbc.c
1547 +++ b/crypto/xcbc.c
1548 @@ -286,3 +286,4 @@ module_exit(crypto_xcbc_module_exit);
1549
1550 MODULE_LICENSE("GPL");
1551 MODULE_DESCRIPTION("XCBC keyed hash algorithm");
1552 +MODULE_ALIAS_CRYPTO("xcbc");
1553 diff --git a/crypto/xts.c b/crypto/xts.c
1554 index ca1608f44cb5..f6fd43f100c8 100644
1555 --- a/crypto/xts.c
1556 +++ b/crypto/xts.c
1557 @@ -362,3 +362,4 @@ module_exit(crypto_module_exit);
1558
1559 MODULE_LICENSE("GPL");
1560 MODULE_DESCRIPTION("XTS block cipher mode");
1561 +MODULE_ALIAS_CRYPTO("xts");
1562 diff --git a/crypto/zlib.c b/crypto/zlib.c
1563 index c9ee681d57fd..0eefa9d237ac 100644
1564 --- a/crypto/zlib.c
1565 +++ b/crypto/zlib.c
1566 @@ -378,3 +378,4 @@ module_exit(zlib_mod_fini);
1567 MODULE_LICENSE("GPL");
1568 MODULE_DESCRIPTION("Zlib Compression Algorithm");
1569 MODULE_AUTHOR("Sony Corporation");
1570 +MODULE_ALIAS_CRYPTO("zlib");
1571 diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
1572 index 93b71420a046..6341e668f362 100644
1573 --- a/drivers/acpi/device_pm.c
1574 +++ b/drivers/acpi/device_pm.c
1575 @@ -680,13 +680,21 @@ static int acpi_device_wakeup(struct acpi_device *adev, u32 target_state,
1576 if (error)
1577 return error;
1578
1579 + if (adev->wakeup.flags.enabled)
1580 + return 0;
1581 +
1582 res = acpi_enable_gpe(wakeup->gpe_device, wakeup->gpe_number);
1583 - if (ACPI_FAILURE(res)) {
1584 + if (ACPI_SUCCESS(res)) {
1585 + adev->wakeup.flags.enabled = 1;
1586 + } else {
1587 acpi_disable_wakeup_device_power(adev);
1588 return -EIO;
1589 }
1590 } else {
1591 - acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number);
1592 + if (adev->wakeup.flags.enabled) {
1593 + acpi_disable_gpe(wakeup->gpe_device, wakeup->gpe_number);
1594 + adev->wakeup.flags.enabled = 0;
1595 + }
1596 acpi_disable_wakeup_device_power(adev);
1597 }
1598 return 0;
1599 diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c
1600 index 0f8538f238b6..0ffd3c930bed 100644
1601 --- a/drivers/ata/ahci_xgene.c
1602 +++ b/drivers/ata/ahci_xgene.c
1603 @@ -188,7 +188,7 @@ static unsigned int xgene_ahci_read_id(struct ata_device *dev,
1604 *
1605 * Clear reserved bit 8 (DEVSLP bit) as we don't support DEVSLP
1606 */
1607 - id[ATA_ID_FEATURE_SUPP] &= ~(1 << 8);
1608 + id[ATA_ID_FEATURE_SUPP] &= cpu_to_le16(~(1 << 8));
1609
1610 return 0;
1611 }
1612 diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
1613 index c5ba15af87d3..485f7eab0d4b 100644
1614 --- a/drivers/ata/libata-core.c
1615 +++ b/drivers/ata/libata-core.c
1616 @@ -4740,7 +4740,10 @@ static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
1617 return NULL;
1618
1619 for (i = 0, tag = ap->last_tag + 1; i < max_queue; i++, tag++) {
1620 - tag = tag < max_queue ? tag : 0;
1621 + if (ap->flags & ATA_FLAG_LOWTAG)
1622 + tag = i;
1623 + else
1624 + tag = tag < max_queue ? tag : 0;
1625
1626 /* the last tag is reserved for internal command. */
1627 if (tag == ATA_TAG_INTERNAL)
1628 diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
1629 index db90aa35cb71..2e86e3b85266 100644
1630 --- a/drivers/ata/libata-sff.c
1631 +++ b/drivers/ata/libata-sff.c
1632 @@ -1333,7 +1333,19 @@ void ata_sff_flush_pio_task(struct ata_port *ap)
1633 DPRINTK("ENTER\n");
1634
1635 cancel_delayed_work_sync(&ap->sff_pio_task);
1636 +
1637 + /*
1638 + * We wanna reset the HSM state to IDLE. If we do so without
1639 + * grabbing the port lock, critical sections protected by it which
1640 + * expect the HSM state to stay stable may get surprised. For
1641 + * example, we may set IDLE in between the time
1642 + * __ata_sff_port_intr() checks for HSM_ST_IDLE and before it calls
1643 + * ata_sff_hsm_move() causing ata_sff_hsm_move() to BUG().
1644 + */
1645 + spin_lock_irq(ap->lock);
1646 ap->hsm_task_state = HSM_ST_IDLE;
1647 + spin_unlock_irq(ap->lock);
1648 +
1649 ap->sff_pio_task_link = NULL;
1650
1651 if (ata_msg_ctl(ap))
1652 diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c
1653 index 0bb2cabd2197..4ebaa1e7b2d3 100644
1654 --- a/drivers/ata/sata_dwc_460ex.c
1655 +++ b/drivers/ata/sata_dwc_460ex.c
1656 @@ -797,7 +797,7 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq)
1657 if (err) {
1658 dev_err(host_pvt.dwc_dev, "%s: dma_request_interrupts returns"
1659 " %d\n", __func__, err);
1660 - goto error_out;
1661 + return err;
1662 }
1663
1664 /* Enabe DMA */
1665 @@ -808,11 +808,6 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq)
1666 sata_dma_regs);
1667
1668 return 0;
1669 -
1670 -error_out:
1671 - dma_dwc_exit(hsdev);
1672 -
1673 - return err;
1674 }
1675
1676 static int sata_dwc_scr_read(struct ata_link *link, unsigned int scr, u32 *val)
1677 @@ -1662,7 +1657,7 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1678 char *ver = (char *)&versionr;
1679 u8 *base = NULL;
1680 int err = 0;
1681 - int irq, rc;
1682 + int irq;
1683 struct ata_host *host;
1684 struct ata_port_info pi = sata_dwc_port_info[0];
1685 const struct ata_port_info *ppi[] = { &pi, NULL };
1686 @@ -1725,7 +1720,7 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1687 if (irq == NO_IRQ) {
1688 dev_err(&ofdev->dev, "no SATA DMA irq\n");
1689 err = -ENODEV;
1690 - goto error_out;
1691 + goto error_iomap;
1692 }
1693
1694 /* Get physical SATA DMA register base address */
1695 @@ -1734,14 +1729,16 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1696 dev_err(&ofdev->dev, "ioremap failed for AHBDMA register"
1697 " address\n");
1698 err = -ENODEV;
1699 - goto error_out;
1700 + goto error_iomap;
1701 }
1702
1703 /* Save dev for later use in dev_xxx() routines */
1704 host_pvt.dwc_dev = &ofdev->dev;
1705
1706 /* Initialize AHB DMAC */
1707 - dma_dwc_init(hsdev, irq);
1708 + err = dma_dwc_init(hsdev, irq);
1709 + if (err)
1710 + goto error_dma_iomap;
1711
1712 /* Enable SATA Interrupts */
1713 sata_dwc_enable_interrupts(hsdev);
1714 @@ -1759,9 +1756,8 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1715 * device discovery process, invoking our port_start() handler &
1716 * error_handler() to execute a dummy Softreset EH session
1717 */
1718 - rc = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht);
1719 -
1720 - if (rc != 0)
1721 + err = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht);
1722 + if (err)
1723 dev_err(&ofdev->dev, "failed to activate host");
1724
1725 dev_set_drvdata(&ofdev->dev, host);
1726 @@ -1770,7 +1766,8 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1727 error_out:
1728 /* Free SATA DMA resources */
1729 dma_dwc_exit(hsdev);
1730 -
1731 +error_dma_iomap:
1732 + iounmap((void __iomem *)host_pvt.sata_dma_regs);
1733 error_iomap:
1734 iounmap(base);
1735 error_kmalloc:
1736 @@ -1791,6 +1788,7 @@ static int sata_dwc_remove(struct platform_device *ofdev)
1737 /* Free SATA DMA resources */
1738 dma_dwc_exit(hsdev);
1739
1740 + iounmap((void __iomem *)host_pvt.sata_dma_regs);
1741 iounmap(hsdev->reg_base);
1742 kfree(hsdev);
1743 kfree(host);
1744 diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
1745 index d81b20ddb527..ea655949023f 100644
1746 --- a/drivers/ata/sata_sil24.c
1747 +++ b/drivers/ata/sata_sil24.c
1748 @@ -246,7 +246,7 @@ enum {
1749 /* host flags */
1750 SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_PIO_DMA |
1751 ATA_FLAG_NCQ | ATA_FLAG_ACPI_SATA |
1752 - ATA_FLAG_AN | ATA_FLAG_PMP,
1753 + ATA_FLAG_AN | ATA_FLAG_PMP | ATA_FLAG_LOWTAG,
1754 SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */
1755
1756 IRQ_STAT_4PORTS = 0xf,
1757 diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
1758 index 26c3779d871d..d29f5ffdb0f4 100644
1759 --- a/drivers/bus/mvebu-mbus.c
1760 +++ b/drivers/bus/mvebu-mbus.c
1761 @@ -182,12 +182,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
1762 }
1763
1764 /* Checks whether the given window number is available */
1765 +
1766 +/* On Armada XP, 375 and 38x the MBus window 13 has the remap
1767 + * capability, like windows 0 to 7. However, the mvebu-mbus driver
1768 + * isn't currently taking into account this special case, which means
1769 + * that when window 13 is actually used, the remap registers are left
1770 + * to 0, making the device using this MBus window unavailable. The
1771 + * quick fix for stable is to not use window 13. A follow up patch
1772 + * will correctly handle this window.
1773 +*/
1774 static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
1775 const int win)
1776 {
1777 void __iomem *addr = mbus->mbuswins_base +
1778 mbus->soc->win_cfg_offset(win);
1779 u32 ctrl = readl(addr + WIN_CTRL_OFF);
1780 +
1781 + if (win == 13)
1782 + return false;
1783 +
1784 return !(ctrl & WIN_CTRL_ENABLE);
1785 }
1786
1787 diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
1788 index 9403061a2acc..83564c9cfdbe 100644
1789 --- a/drivers/clocksource/exynos_mct.c
1790 +++ b/drivers/clocksource/exynos_mct.c
1791 @@ -97,8 +97,8 @@ static void exynos4_mct_write(unsigned int value, unsigned long offset)
1792 writel_relaxed(value, reg_base + offset);
1793
1794 if (likely(offset >= EXYNOS4_MCT_L_BASE(0))) {
1795 - stat_addr = (offset & ~EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
1796 - switch (offset & EXYNOS4_MCT_L_MASK) {
1797 + stat_addr = (offset & EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
1798 + switch (offset & ~EXYNOS4_MCT_L_MASK) {
1799 case MCT_L_TCON_OFFSET:
1800 mask = 1 << 3; /* L_TCON write status */
1801 break;
1802 diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
1803 index 633ba945e153..c178ed8c3908 100644
1804 --- a/drivers/crypto/padlock-aes.c
1805 +++ b/drivers/crypto/padlock-aes.c
1806 @@ -563,4 +563,4 @@ MODULE_DESCRIPTION("VIA PadLock AES algorithm support");
1807 MODULE_LICENSE("GPL");
1808 MODULE_AUTHOR("Michal Ludvig");
1809
1810 -MODULE_ALIAS("aes");
1811 +MODULE_ALIAS_CRYPTO("aes");
1812 diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
1813 index bace885634f2..95f7d27ce491 100644
1814 --- a/drivers/crypto/padlock-sha.c
1815 +++ b/drivers/crypto/padlock-sha.c
1816 @@ -593,7 +593,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support.");
1817 MODULE_LICENSE("GPL");
1818 MODULE_AUTHOR("Michal Ludvig");
1819
1820 -MODULE_ALIAS("sha1-all");
1821 -MODULE_ALIAS("sha256-all");
1822 -MODULE_ALIAS("sha1-padlock");
1823 -MODULE_ALIAS("sha256-padlock");
1824 +MODULE_ALIAS_CRYPTO("sha1-all");
1825 +MODULE_ALIAS_CRYPTO("sha256-all");
1826 +MODULE_ALIAS_CRYPTO("sha1-padlock");
1827 +MODULE_ALIAS_CRYPTO("sha256-padlock");
1828 diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c
1829 index 244d73378f0e..7ee93f881db6 100644
1830 --- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c
1831 +++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c
1832 @@ -52,6 +52,7 @@
1833 #include <linux/pci.h>
1834 #include <linux/cdev.h>
1835 #include <linux/uaccess.h>
1836 +#include <linux/crypto.h>
1837
1838 #include "adf_accel_devices.h"
1839 #include "adf_common_drv.h"
1840 @@ -487,4 +488,4 @@ module_exit(adf_unregister_ctl_device_driver);
1841 MODULE_LICENSE("Dual BSD/GPL");
1842 MODULE_AUTHOR("Intel");
1843 MODULE_DESCRIPTION("Intel(R) QuickAssist Technology");
1844 -MODULE_ALIAS("intel_qat");
1845 +MODULE_ALIAS_CRYPTO("intel_qat");
1846 diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c
1847 index 92105f3dc8e0..e4cea7c45142 100644
1848 --- a/drivers/crypto/ux500/cryp/cryp_core.c
1849 +++ b/drivers/crypto/ux500/cryp/cryp_core.c
1850 @@ -1810,7 +1810,7 @@ module_exit(ux500_cryp_mod_fini);
1851 module_param(cryp_mode, int, 0);
1852
1853 MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 CRYP crypto engine.");
1854 -MODULE_ALIAS("aes-all");
1855 -MODULE_ALIAS("des-all");
1856 +MODULE_ALIAS_CRYPTO("aes-all");
1857 +MODULE_ALIAS_CRYPTO("des-all");
1858
1859 MODULE_LICENSE("GPL");
1860 diff --git a/drivers/crypto/ux500/hash/hash_core.c b/drivers/crypto/ux500/hash/hash_core.c
1861 index 1c73f4fbc252..8e5e0187506f 100644
1862 --- a/drivers/crypto/ux500/hash/hash_core.c
1863 +++ b/drivers/crypto/ux500/hash/hash_core.c
1864 @@ -1995,7 +1995,7 @@ module_exit(ux500_hash_mod_fini);
1865 MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 HASH engine.");
1866 MODULE_LICENSE("GPL");
1867
1868 -MODULE_ALIAS("sha1-all");
1869 -MODULE_ALIAS("sha256-all");
1870 -MODULE_ALIAS("hmac-sha1-all");
1871 -MODULE_ALIAS("hmac-sha256-all");
1872 +MODULE_ALIAS_CRYPTO("sha1-all");
1873 +MODULE_ALIAS_CRYPTO("sha256-all");
1874 +MODULE_ALIAS_CRYPTO("hmac-sha1-all");
1875 +MODULE_ALIAS_CRYPTO("hmac-sha256-all");
1876 diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
1877 index 2de5f5f4ba45..fd76933eed04 100644
1878 --- a/drivers/gpu/drm/i915/i915_gem.c
1879 +++ b/drivers/gpu/drm/i915/i915_gem.c
1880 @@ -5144,7 +5144,7 @@ static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task)
1881 if (!mutex_is_locked(mutex))
1882 return false;
1883
1884 -#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)
1885 +#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES)
1886 return mutex->owner == task;
1887 #else
1888 /* Since UP may be pre-empted, we cannot assume that we own the lock */
1889 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
1890 index cadc3bcf1de2..31b96643b59c 100644
1891 --- a/drivers/gpu/drm/i915/intel_display.c
1892 +++ b/drivers/gpu/drm/i915/intel_display.c
1893 @@ -10019,7 +10019,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
1894 if (obj->tiling_mode != work->old_fb_obj->tiling_mode)
1895 /* vlv: DISPLAY_FLIP fails to change tiling */
1896 ring = NULL;
1897 - } else if (IS_IVYBRIDGE(dev)) {
1898 + } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) {
1899 ring = &dev_priv->ring[BCS];
1900 } else if (INTEL_INFO(dev)->gen >= 7) {
1901 ring = obj->ring;
1902 diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
1903 index 850de57069be..121aff6a3b41 100644
1904 --- a/drivers/gpu/drm/radeon/radeon_asic.c
1905 +++ b/drivers/gpu/drm/radeon/radeon_asic.c
1906 @@ -333,6 +333,20 @@ static struct radeon_asic_ring r300_gfx_ring = {
1907 .set_wptr = &r100_gfx_set_wptr,
1908 };
1909
1910 +static struct radeon_asic_ring rv515_gfx_ring = {
1911 + .ib_execute = &r100_ring_ib_execute,
1912 + .emit_fence = &r300_fence_ring_emit,
1913 + .emit_semaphore = &r100_semaphore_ring_emit,
1914 + .cs_parse = &r300_cs_parse,
1915 + .ring_start = &rv515_ring_start,
1916 + .ring_test = &r100_ring_test,
1917 + .ib_test = &r100_ib_test,
1918 + .is_lockup = &r100_gpu_is_lockup,
1919 + .get_rptr = &r100_gfx_get_rptr,
1920 + .get_wptr = &r100_gfx_get_wptr,
1921 + .set_wptr = &r100_gfx_set_wptr,
1922 +};
1923 +
1924 static struct radeon_asic r300_asic = {
1925 .init = &r300_init,
1926 .fini = &r300_fini,
1927 @@ -748,7 +762,7 @@ static struct radeon_asic rv515_asic = {
1928 .set_page = &rv370_pcie_gart_set_page,
1929 },
1930 .ring = {
1931 - [RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
1932 + [RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring
1933 },
1934 .irq = {
1935 .set = &rs600_irq_set,
1936 @@ -814,7 +828,7 @@ static struct radeon_asic r520_asic = {
1937 .set_page = &rv370_pcie_gart_set_page,
1938 },
1939 .ring = {
1940 - [RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
1941 + [RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring
1942 },
1943 .irq = {
1944 .set = &rs600_irq_set,
1945 diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
1946 index 32522cc940a1..f7da8fe96a66 100644
1947 --- a/drivers/gpu/drm/radeon/radeon_pm.c
1948 +++ b/drivers/gpu/drm/radeon/radeon_pm.c
1949 @@ -1287,8 +1287,39 @@ dpm_failed:
1950 return ret;
1951 }
1952
1953 +struct radeon_dpm_quirk {
1954 + u32 chip_vendor;
1955 + u32 chip_device;
1956 + u32 subsys_vendor;
1957 + u32 subsys_device;
1958 +};
1959 +
1960 +/* cards with dpm stability problems */
1961 +static struct radeon_dpm_quirk radeon_dpm_quirk_list[] = {
1962 + /* TURKS - https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1386534 */
1963 + { PCI_VENDOR_ID_ATI, 0x6759, 0x1682, 0x3195 },
1964 + /* TURKS - https://bugzilla.kernel.org/show_bug.cgi?id=83731 */
1965 + { PCI_VENDOR_ID_ATI, 0x6840, 0x1179, 0xfb81 },
1966 + { 0, 0, 0, 0 },
1967 +};
1968 +
1969 int radeon_pm_init(struct radeon_device *rdev)
1970 {
1971 + struct radeon_dpm_quirk *p = radeon_dpm_quirk_list;
1972 + bool disable_dpm = false;
1973 +
1974 + /* Apply dpm quirks */
1975 + while (p && p->chip_device != 0) {
1976 + if (rdev->pdev->vendor == p->chip_vendor &&
1977 + rdev->pdev->device == p->chip_device &&
1978 + rdev->pdev->subsystem_vendor == p->subsys_vendor &&
1979 + rdev->pdev->subsystem_device == p->subsys_device) {
1980 + disable_dpm = true;
1981 + break;
1982 + }
1983 + ++p;
1984 + }
1985 +
1986 /* enable dpm on rv6xx+ */
1987 switch (rdev->family) {
1988 case CHIP_RV610:
1989 @@ -1344,6 +1375,8 @@ int radeon_pm_init(struct radeon_device *rdev)
1990 (!(rdev->flags & RADEON_IS_IGP)) &&
1991 (!rdev->smc_fw))
1992 rdev->pm.pm_method = PM_METHOD_PROFILE;
1993 + else if (disable_dpm && (radeon_dpm == -1))
1994 + rdev->pm.pm_method = PM_METHOD_PROFILE;
1995 else if (radeon_dpm == 0)
1996 rdev->pm.pm_method = PM_METHOD_PROFILE;
1997 else
1998 diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c
1999 index 676e6c2ba90a..2b70d3eca8fd 100644
2000 --- a/drivers/gpu/drm/radeon/si_dpm.c
2001 +++ b/drivers/gpu/drm/radeon/si_dpm.c
2002 @@ -2908,6 +2908,22 @@ static int si_init_smc_spll_table(struct radeon_device *rdev)
2003 return ret;
2004 }
2005
2006 +struct si_dpm_quirk {
2007 + u32 chip_vendor;
2008 + u32 chip_device;
2009 + u32 subsys_vendor;
2010 + u32 subsys_device;
2011 + u32 max_sclk;
2012 + u32 max_mclk;
2013 +};
2014 +
2015 +/* cards with dpm stability problems */
2016 +static struct si_dpm_quirk si_dpm_quirk_list[] = {
2017 + /* PITCAIRN - https://bugs.freedesktop.org/show_bug.cgi?id=76490 */
2018 + { PCI_VENDOR_ID_ATI, 0x6810, 0x1462, 0x3036, 0, 120000 },
2019 + { 0, 0, 0, 0 },
2020 +};
2021 +
2022 static void si_apply_state_adjust_rules(struct radeon_device *rdev,
2023 struct radeon_ps *rps)
2024 {
2025 @@ -2918,7 +2934,22 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev,
2026 u32 mclk, sclk;
2027 u16 vddc, vddci;
2028 u32 max_sclk_vddc, max_mclk_vddci, max_mclk_vddc;
2029 + u32 max_sclk = 0, max_mclk = 0;
2030 int i;
2031 + struct si_dpm_quirk *p = si_dpm_quirk_list;
2032 +
2033 + /* Apply dpm quirks */
2034 + while (p && p->chip_device != 0) {
2035 + if (rdev->pdev->vendor == p->chip_vendor &&
2036 + rdev->pdev->device == p->chip_device &&
2037 + rdev->pdev->subsystem_vendor == p->subsys_vendor &&
2038 + rdev->pdev->subsystem_device == p->subsys_device) {
2039 + max_sclk = p->max_sclk;
2040 + max_mclk = p->max_mclk;
2041 + break;
2042 + }
2043 + ++p;
2044 + }
2045
2046 if ((rdev->pm.dpm.new_active_crtc_count > 1) ||
2047 ni_dpm_vblank_too_short(rdev))
2048 @@ -2972,6 +3003,14 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev,
2049 if (ps->performance_levels[i].mclk > max_mclk_vddc)
2050 ps->performance_levels[i].mclk = max_mclk_vddc;
2051 }
2052 + if (max_mclk) {
2053 + if (ps->performance_levels[i].mclk > max_mclk)
2054 + ps->performance_levels[i].mclk = max_mclk;
2055 + }
2056 + if (max_sclk) {
2057 + if (ps->performance_levels[i].sclk > max_sclk)
2058 + ps->performance_levels[i].sclk = max_sclk;
2059 + }
2060 }
2061
2062 /* XXX validate the min clocks required for display */
2063 diff --git a/drivers/irqchip/irq-atmel-aic-common.c b/drivers/irqchip/irq-atmel-aic-common.c
2064 index cc4f9d80122e..fa22e5ba3d33 100644
2065 --- a/drivers/irqchip/irq-atmel-aic-common.c
2066 +++ b/drivers/irqchip/irq-atmel-aic-common.c
2067 @@ -28,7 +28,7 @@
2068 #define AT91_AIC_IRQ_MIN_PRIORITY 0
2069 #define AT91_AIC_IRQ_MAX_PRIORITY 7
2070
2071 -#define AT91_AIC_SRCTYPE GENMASK(7, 6)
2072 +#define AT91_AIC_SRCTYPE GENMASK(6, 5)
2073 #define AT91_AIC_SRCTYPE_LOW (0 << 5)
2074 #define AT91_AIC_SRCTYPE_FALLING (1 << 5)
2075 #define AT91_AIC_SRCTYPE_HIGH (2 << 5)
2076 @@ -74,7 +74,7 @@ int aic_common_set_type(struct irq_data *d, unsigned type, unsigned *val)
2077 return -EINVAL;
2078 }
2079
2080 - *val &= AT91_AIC_SRCTYPE;
2081 + *val &= ~AT91_AIC_SRCTYPE;
2082 *val |= aic_type;
2083
2084 return 0;
2085 diff --git a/drivers/irqchip/irq-omap-intc.c b/drivers/irqchip/irq-omap-intc.c
2086 index 28718d3e8281..c03f140acbae 100644
2087 --- a/drivers/irqchip/irq-omap-intc.c
2088 +++ b/drivers/irqchip/irq-omap-intc.c
2089 @@ -263,7 +263,7 @@ static int __init omap_init_irq_of(struct device_node *node)
2090 return ret;
2091 }
2092
2093 -static int __init omap_init_irq_legacy(u32 base)
2094 +static int __init omap_init_irq_legacy(u32 base, struct device_node *node)
2095 {
2096 int j, irq_base;
2097
2098 @@ -277,7 +277,7 @@ static int __init omap_init_irq_legacy(u32 base)
2099 irq_base = 0;
2100 }
2101
2102 - domain = irq_domain_add_legacy(NULL, omap_nr_irqs, irq_base, 0,
2103 + domain = irq_domain_add_legacy(node, omap_nr_irqs, irq_base, 0,
2104 &irq_domain_simple_ops, NULL);
2105
2106 omap_irq_soft_reset();
2107 @@ -301,10 +301,26 @@ static int __init omap_init_irq(u32 base, struct device_node *node)
2108 {
2109 int ret;
2110
2111 - if (node)
2112 + /*
2113 + * FIXME legacy OMAP DMA driver sitting under arch/arm/plat-omap/dma.c
2114 + * depends is still not ready for linear IRQ domains; because of that
2115 + * we need to temporarily "blacklist" OMAP2 and OMAP3 devices from using
2116 + * linear IRQ Domain until that driver is finally fixed.
2117 + */
2118 + if (of_device_is_compatible(node, "ti,omap2-intc") ||
2119 + of_device_is_compatible(node, "ti,omap3-intc")) {
2120 + struct resource res;
2121 +
2122 + if (of_address_to_resource(node, 0, &res))
2123 + return -ENOMEM;
2124 +
2125 + base = res.start;
2126 + ret = omap_init_irq_legacy(base, node);
2127 + } else if (node) {
2128 ret = omap_init_irq_of(node);
2129 - else
2130 - ret = omap_init_irq_legacy(base);
2131 + } else {
2132 + ret = omap_init_irq_legacy(base, NULL);
2133 + }
2134
2135 if (ret == 0)
2136 omap_irq_enable_protection();
2137 diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
2138 index 06709257adde..97e3a6c07e31 100644
2139 --- a/drivers/md/dm-cache-metadata.c
2140 +++ b/drivers/md/dm-cache-metadata.c
2141 @@ -94,6 +94,9 @@ struct cache_disk_superblock {
2142 } __packed;
2143
2144 struct dm_cache_metadata {
2145 + atomic_t ref_count;
2146 + struct list_head list;
2147 +
2148 struct block_device *bdev;
2149 struct dm_block_manager *bm;
2150 struct dm_space_map *metadata_sm;
2151 @@ -669,10 +672,10 @@ static void unpack_value(__le64 value_le, dm_oblock_t *block, unsigned *flags)
2152
2153 /*----------------------------------------------------------------*/
2154
2155 -struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
2156 - sector_t data_block_size,
2157 - bool may_format_device,
2158 - size_t policy_hint_size)
2159 +static struct dm_cache_metadata *metadata_open(struct block_device *bdev,
2160 + sector_t data_block_size,
2161 + bool may_format_device,
2162 + size_t policy_hint_size)
2163 {
2164 int r;
2165 struct dm_cache_metadata *cmd;
2166 @@ -683,6 +686,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
2167 return NULL;
2168 }
2169
2170 + atomic_set(&cmd->ref_count, 1);
2171 init_rwsem(&cmd->root_lock);
2172 cmd->bdev = bdev;
2173 cmd->data_block_size = data_block_size;
2174 @@ -705,10 +709,95 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
2175 return cmd;
2176 }
2177
2178 +/*
2179 + * We keep a little list of ref counted metadata objects to prevent two
2180 + * different target instances creating separate bufio instances. This is
2181 + * an issue if a table is reloaded before the suspend.
2182 + */
2183 +static DEFINE_MUTEX(table_lock);
2184 +static LIST_HEAD(table);
2185 +
2186 +static struct dm_cache_metadata *lookup(struct block_device *bdev)
2187 +{
2188 + struct dm_cache_metadata *cmd;
2189 +
2190 + list_for_each_entry(cmd, &table, list)
2191 + if (cmd->bdev == bdev) {
2192 + atomic_inc(&cmd->ref_count);
2193 + return cmd;
2194 + }
2195 +
2196 + return NULL;
2197 +}
2198 +
2199 +static struct dm_cache_metadata *lookup_or_open(struct block_device *bdev,
2200 + sector_t data_block_size,
2201 + bool may_format_device,
2202 + size_t policy_hint_size)
2203 +{
2204 + struct dm_cache_metadata *cmd, *cmd2;
2205 +
2206 + mutex_lock(&table_lock);
2207 + cmd = lookup(bdev);
2208 + mutex_unlock(&table_lock);
2209 +
2210 + if (cmd)
2211 + return cmd;
2212 +
2213 + cmd = metadata_open(bdev, data_block_size, may_format_device, policy_hint_size);
2214 + if (cmd) {
2215 + mutex_lock(&table_lock);
2216 + cmd2 = lookup(bdev);
2217 + if (cmd2) {
2218 + mutex_unlock(&table_lock);
2219 + __destroy_persistent_data_objects(cmd);
2220 + kfree(cmd);
2221 + return cmd2;
2222 + }
2223 + list_add(&cmd->list, &table);
2224 + mutex_unlock(&table_lock);
2225 + }
2226 +
2227 + return cmd;
2228 +}
2229 +
2230 +static bool same_params(struct dm_cache_metadata *cmd, sector_t data_block_size)
2231 +{
2232 + if (cmd->data_block_size != data_block_size) {
2233 + DMERR("data_block_size (%llu) different from that in metadata (%llu)\n",
2234 + (unsigned long long) data_block_size,
2235 + (unsigned long long) cmd->data_block_size);
2236 + return false;
2237 + }
2238 +
2239 + return true;
2240 +}
2241 +
2242 +struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
2243 + sector_t data_block_size,
2244 + bool may_format_device,
2245 + size_t policy_hint_size)
2246 +{
2247 + struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size,
2248 + may_format_device, policy_hint_size);
2249 + if (cmd && !same_params(cmd, data_block_size)) {
2250 + dm_cache_metadata_close(cmd);
2251 + return NULL;
2252 + }
2253 +
2254 + return cmd;
2255 +}
2256 +
2257 void dm_cache_metadata_close(struct dm_cache_metadata *cmd)
2258 {
2259 - __destroy_persistent_data_objects(cmd);
2260 - kfree(cmd);
2261 + if (atomic_dec_and_test(&cmd->ref_count)) {
2262 + mutex_lock(&table_lock);
2263 + list_del(&cmd->list);
2264 + mutex_unlock(&table_lock);
2265 +
2266 + __destroy_persistent_data_objects(cmd);
2267 + kfree(cmd);
2268 + }
2269 }
2270
2271 /*
2272 diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
2273 index da496cfb458d..3baed67cf26f 100644
2274 --- a/drivers/md/dm-cache-target.c
2275 +++ b/drivers/md/dm-cache-target.c
2276 @@ -222,7 +222,13 @@ struct cache {
2277 struct list_head need_commit_migrations;
2278 sector_t migration_threshold;
2279 wait_queue_head_t migration_wait;
2280 - atomic_t nr_migrations;
2281 + atomic_t nr_allocated_migrations;
2282 +
2283 + /*
2284 + * The number of in flight migrations that are performing
2285 + * background io. eg, promotion, writeback.
2286 + */
2287 + atomic_t nr_io_migrations;
2288
2289 wait_queue_head_t quiescing_wait;
2290 atomic_t quiescing;
2291 @@ -258,7 +264,6 @@ struct cache {
2292 struct dm_deferred_set *all_io_ds;
2293
2294 mempool_t *migration_pool;
2295 - struct dm_cache_migration *next_migration;
2296
2297 struct dm_cache_policy *policy;
2298 unsigned policy_nr_args;
2299 @@ -349,10 +354,31 @@ static void free_prison_cell(struct cache *cache, struct dm_bio_prison_cell *cel
2300 dm_bio_prison_free_cell(cache->prison, cell);
2301 }
2302
2303 +static struct dm_cache_migration *alloc_migration(struct cache *cache)
2304 +{
2305 + struct dm_cache_migration *mg;
2306 +
2307 + mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT);
2308 + if (mg) {
2309 + mg->cache = cache;
2310 + atomic_inc(&mg->cache->nr_allocated_migrations);
2311 + }
2312 +
2313 + return mg;
2314 +}
2315 +
2316 +static void free_migration(struct dm_cache_migration *mg)
2317 +{
2318 + if (atomic_dec_and_test(&mg->cache->nr_allocated_migrations))
2319 + wake_up(&mg->cache->migration_wait);
2320 +
2321 + mempool_free(mg, mg->cache->migration_pool);
2322 +}
2323 +
2324 static int prealloc_data_structs(struct cache *cache, struct prealloc *p)
2325 {
2326 if (!p->mg) {
2327 - p->mg = mempool_alloc(cache->migration_pool, GFP_NOWAIT);
2328 + p->mg = alloc_migration(cache);
2329 if (!p->mg)
2330 return -ENOMEM;
2331 }
2332 @@ -381,7 +407,7 @@ static void prealloc_free_structs(struct cache *cache, struct prealloc *p)
2333 free_prison_cell(cache, p->cell1);
2334
2335 if (p->mg)
2336 - mempool_free(p->mg, cache->migration_pool);
2337 + free_migration(p->mg);
2338 }
2339
2340 static struct dm_cache_migration *prealloc_get_migration(struct prealloc *p)
2341 @@ -817,24 +843,14 @@ static void remap_to_origin_then_cache(struct cache *cache, struct bio *bio,
2342 * Migration covers moving data from the origin device to the cache, or
2343 * vice versa.
2344 *--------------------------------------------------------------*/
2345 -static void free_migration(struct dm_cache_migration *mg)
2346 -{
2347 - mempool_free(mg, mg->cache->migration_pool);
2348 -}
2349 -
2350 -static void inc_nr_migrations(struct cache *cache)
2351 +static void inc_io_migrations(struct cache *cache)
2352 {
2353 - atomic_inc(&cache->nr_migrations);
2354 + atomic_inc(&cache->nr_io_migrations);
2355 }
2356
2357 -static void dec_nr_migrations(struct cache *cache)
2358 +static void dec_io_migrations(struct cache *cache)
2359 {
2360 - atomic_dec(&cache->nr_migrations);
2361 -
2362 - /*
2363 - * Wake the worker in case we're suspending the target.
2364 - */
2365 - wake_up(&cache->migration_wait);
2366 + atomic_dec(&cache->nr_io_migrations);
2367 }
2368
2369 static void __cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell,
2370 @@ -857,11 +873,10 @@ static void cell_defer(struct cache *cache, struct dm_bio_prison_cell *cell,
2371 wake_worker(cache);
2372 }
2373
2374 -static void cleanup_migration(struct dm_cache_migration *mg)
2375 +static void free_io_migration(struct dm_cache_migration *mg)
2376 {
2377 - struct cache *cache = mg->cache;
2378 + dec_io_migrations(mg->cache);
2379 free_migration(mg);
2380 - dec_nr_migrations(cache);
2381 }
2382
2383 static void migration_failure(struct dm_cache_migration *mg)
2384 @@ -886,7 +901,7 @@ static void migration_failure(struct dm_cache_migration *mg)
2385 cell_defer(cache, mg->new_ocell, true);
2386 }
2387
2388 - cleanup_migration(mg);
2389 + free_io_migration(mg);
2390 }
2391
2392 static void migration_success_pre_commit(struct dm_cache_migration *mg)
2393 @@ -897,7 +912,7 @@ static void migration_success_pre_commit(struct dm_cache_migration *mg)
2394 if (mg->writeback) {
2395 clear_dirty(cache, mg->old_oblock, mg->cblock);
2396 cell_defer(cache, mg->old_ocell, false);
2397 - cleanup_migration(mg);
2398 + free_io_migration(mg);
2399 return;
2400
2401 } else if (mg->demote) {
2402 @@ -907,14 +922,14 @@ static void migration_success_pre_commit(struct dm_cache_migration *mg)
2403 mg->old_oblock);
2404 if (mg->promote)
2405 cell_defer(cache, mg->new_ocell, true);
2406 - cleanup_migration(mg);
2407 + free_io_migration(mg);
2408 return;
2409 }
2410 } else {
2411 if (dm_cache_insert_mapping(cache->cmd, mg->cblock, mg->new_oblock)) {
2412 DMWARN_LIMIT("promotion failed; couldn't update on disk metadata");
2413 policy_remove_mapping(cache->policy, mg->new_oblock);
2414 - cleanup_migration(mg);
2415 + free_io_migration(mg);
2416 return;
2417 }
2418 }
2419 @@ -947,7 +962,7 @@ static void migration_success_post_commit(struct dm_cache_migration *mg)
2420 } else {
2421 if (mg->invalidate)
2422 policy_remove_mapping(cache->policy, mg->old_oblock);
2423 - cleanup_migration(mg);
2424 + free_io_migration(mg);
2425 }
2426
2427 } else {
2428 @@ -962,7 +977,7 @@ static void migration_success_post_commit(struct dm_cache_migration *mg)
2429 bio_endio(mg->new_ocell->holder, 0);
2430 cell_defer(cache, mg->new_ocell, false);
2431 }
2432 - cleanup_migration(mg);
2433 + free_io_migration(mg);
2434 }
2435 }
2436
2437 @@ -1178,7 +1193,7 @@ static void promote(struct cache *cache, struct prealloc *structs,
2438 mg->new_ocell = cell;
2439 mg->start_jiffies = jiffies;
2440
2441 - inc_nr_migrations(cache);
2442 + inc_io_migrations(cache);
2443 quiesce_migration(mg);
2444 }
2445
2446 @@ -1201,7 +1216,7 @@ static void writeback(struct cache *cache, struct prealloc *structs,
2447 mg->new_ocell = NULL;
2448 mg->start_jiffies = jiffies;
2449
2450 - inc_nr_migrations(cache);
2451 + inc_io_migrations(cache);
2452 quiesce_migration(mg);
2453 }
2454
2455 @@ -1227,7 +1242,7 @@ static void demote_then_promote(struct cache *cache, struct prealloc *structs,
2456 mg->new_ocell = new_ocell;
2457 mg->start_jiffies = jiffies;
2458
2459 - inc_nr_migrations(cache);
2460 + inc_io_migrations(cache);
2461 quiesce_migration(mg);
2462 }
2463
2464 @@ -1254,7 +1269,7 @@ static void invalidate(struct cache *cache, struct prealloc *structs,
2465 mg->new_ocell = NULL;
2466 mg->start_jiffies = jiffies;
2467
2468 - inc_nr_migrations(cache);
2469 + inc_io_migrations(cache);
2470 quiesce_migration(mg);
2471 }
2472
2473 @@ -1320,7 +1335,7 @@ static void process_discard_bio(struct cache *cache, struct bio *bio)
2474
2475 static bool spare_migration_bandwidth(struct cache *cache)
2476 {
2477 - sector_t current_volume = (atomic_read(&cache->nr_migrations) + 1) *
2478 + sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) *
2479 cache->sectors_per_block;
2480 return current_volume < cache->migration_threshold;
2481 }
2482 @@ -1670,7 +1685,7 @@ static void stop_quiescing(struct cache *cache)
2483
2484 static void wait_for_migrations(struct cache *cache)
2485 {
2486 - wait_event(cache->migration_wait, !atomic_read(&cache->nr_migrations));
2487 + wait_event(cache->migration_wait, !atomic_read(&cache->nr_allocated_migrations));
2488 }
2489
2490 static void stop_worker(struct cache *cache)
2491 @@ -1782,9 +1797,6 @@ static void destroy(struct cache *cache)
2492 {
2493 unsigned i;
2494
2495 - if (cache->next_migration)
2496 - mempool_free(cache->next_migration, cache->migration_pool);
2497 -
2498 if (cache->migration_pool)
2499 mempool_destroy(cache->migration_pool);
2500
2501 @@ -2292,7 +2304,8 @@ static int cache_create(struct cache_args *ca, struct cache **result)
2502 INIT_LIST_HEAD(&cache->quiesced_migrations);
2503 INIT_LIST_HEAD(&cache->completed_migrations);
2504 INIT_LIST_HEAD(&cache->need_commit_migrations);
2505 - atomic_set(&cache->nr_migrations, 0);
2506 + atomic_set(&cache->nr_allocated_migrations, 0);
2507 + atomic_set(&cache->nr_io_migrations, 0);
2508 init_waitqueue_head(&cache->migration_wait);
2509
2510 init_waitqueue_head(&cache->quiescing_wait);
2511 @@ -2351,8 +2364,6 @@ static int cache_create(struct cache_args *ca, struct cache **result)
2512 goto bad;
2513 }
2514
2515 - cache->next_migration = NULL;
2516 -
2517 cache->need_tick_bio = true;
2518 cache->sized = false;
2519 cache->invalidate = false;
2520 diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
2521 index 88c257d1161b..377818887ed2 100644
2522 --- a/drivers/media/pci/cx23885/cx23885-cards.c
2523 +++ b/drivers/media/pci/cx23885/cx23885-cards.c
2524 @@ -614,7 +614,7 @@ struct cx23885_board cx23885_boards[] = {
2525 .portb = CX23885_MPEG_DVB,
2526 },
2527 [CX23885_BOARD_HAUPPAUGE_HVR4400] = {
2528 - .name = "Hauppauge WinTV-HVR4400",
2529 + .name = "Hauppauge WinTV-HVR4400/HVR5500",
2530 .porta = CX23885_ANALOG_VIDEO,
2531 .portb = CX23885_MPEG_DVB,
2532 .portc = CX23885_MPEG_DVB,
2533 @@ -622,6 +622,10 @@ struct cx23885_board cx23885_boards[] = {
2534 .tuner_addr = 0x60, /* 0xc0 >> 1 */
2535 .tuner_bus = 1,
2536 },
2537 + [CX23885_BOARD_HAUPPAUGE_STARBURST] = {
2538 + .name = "Hauppauge WinTV Starburst",
2539 + .portb = CX23885_MPEG_DVB,
2540 + },
2541 [CX23885_BOARD_AVERMEDIA_HC81R] = {
2542 .name = "AVerTV Hybrid Express Slim HC81R",
2543 .tuner_type = TUNER_XC2028,
2544 @@ -910,19 +914,19 @@ struct cx23885_subid cx23885_subids[] = {
2545 }, {
2546 .subvendor = 0x0070,
2547 .subdevice = 0xc108,
2548 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
2549 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-4400 (Model 121xxx, Hybrid DVB-T/S2, IR) */
2550 }, {
2551 .subvendor = 0x0070,
2552 .subdevice = 0xc138,
2553 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
2554 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */
2555 }, {
2556 .subvendor = 0x0070,
2557 .subdevice = 0xc12a,
2558 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
2559 + .card = CX23885_BOARD_HAUPPAUGE_STARBURST, /* Hauppauge WinTV Starburst (Model 121x00, DVB-S2, IR) */
2560 }, {
2561 .subvendor = 0x0070,
2562 .subdevice = 0xc1f8,
2563 - .card = CX23885_BOARD_HAUPPAUGE_HVR4400,
2564 + .card = CX23885_BOARD_HAUPPAUGE_HVR4400, /* Hauppauge WinTV HVR-5500 (Model 121xxx, Hybrid DVB-T/C/S2, IR) */
2565 }, {
2566 .subvendor = 0x1461,
2567 .subdevice = 0xd939,
2568 @@ -1495,8 +1499,9 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
2569 cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
2570 break;
2571 case CX23885_BOARD_HAUPPAUGE_HVR4400:
2572 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
2573 /* GPIO-8 tda10071 demod reset */
2574 - /* GPIO-9 si2165 demod reset */
2575 + /* GPIO-9 si2165 demod reset (only HVR4400/HVR5500)*/
2576
2577 /* Put the parts into reset and back */
2578 cx23885_gpio_enable(dev, GPIO_8 | GPIO_9, 1);
2579 @@ -1760,6 +1765,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
2580 case CX23885_BOARD_HAUPPAUGE_HVR1850:
2581 case CX23885_BOARD_HAUPPAUGE_HVR1290:
2582 case CX23885_BOARD_HAUPPAUGE_HVR4400:
2583 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
2584 case CX23885_BOARD_HAUPPAUGE_IMPACTVCBE:
2585 if (dev->i2c_bus[0].i2c_rc == 0)
2586 hauppauge_eeprom(dev, eeprom+0xc0);
2587 @@ -1864,6 +1870,11 @@ void cx23885_card_setup(struct cx23885_dev *dev)
2588 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
2589 ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
2590 break;
2591 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
2592 + ts1->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
2593 + ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
2594 + ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
2595 + break;
2596 case CX23885_BOARD_DVBSKY_T9580:
2597 ts1->gen_ctrl_val = 0x5; /* Parallel */
2598 ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
2599 diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
2600 index 4cb90317ff45..a8d207929295 100644
2601 --- a/drivers/media/pci/cx23885/cx23885-dvb.c
2602 +++ b/drivers/media/pci/cx23885/cx23885-dvb.c
2603 @@ -1586,6 +1586,17 @@ static int dvb_register(struct cx23885_tsport *port)
2604 break;
2605 }
2606 break;
2607 + case CX23885_BOARD_HAUPPAUGE_STARBURST:
2608 + i2c_bus = &dev->i2c_bus[0];
2609 + fe0->dvb.frontend = dvb_attach(tda10071_attach,
2610 + &hauppauge_tda10071_config,
2611 + &i2c_bus->i2c_adap);
2612 + if (fe0->dvb.frontend != NULL) {
2613 + dvb_attach(a8293_attach, fe0->dvb.frontend,
2614 + &i2c_bus->i2c_adap,
2615 + &hauppauge_a8293_config);
2616 + }
2617 + break;
2618 case CX23885_BOARD_DVBSKY_T9580:
2619 i2c_bus = &dev->i2c_bus[0];
2620 i2c_bus2 = &dev->i2c_bus[1];
2621 diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
2622 index 6c35e6115969..a33bead82ecc 100644
2623 --- a/drivers/media/pci/cx23885/cx23885.h
2624 +++ b/drivers/media/pci/cx23885/cx23885.h
2625 @@ -93,6 +93,7 @@
2626 #define CX23885_BOARD_HAUPPAUGE_IMPACTVCBE 43
2627 #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2 44
2628 #define CX23885_BOARD_DVBSKY_T9580 45
2629 +#define CX23885_BOARD_HAUPPAUGE_STARBURST 52
2630
2631 #define GPIO_0 0x00000001
2632 #define GPIO_1 0x00000002
2633 diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
2634 index f2e43de3dd87..ea36447c74f9 100644
2635 --- a/drivers/media/v4l2-core/videobuf2-core.c
2636 +++ b/drivers/media/v4l2-core/videobuf2-core.c
2637 @@ -3142,27 +3142,26 @@ static int vb2_thread(void *data)
2638 prequeue--;
2639 } else {
2640 call_void_qop(q, wait_finish, q);
2641 - ret = vb2_internal_dqbuf(q, &fileio->b, 0);
2642 + if (!threadio->stop)
2643 + ret = vb2_internal_dqbuf(q, &fileio->b, 0);
2644 call_void_qop(q, wait_prepare, q);
2645 dprintk(5, "file io: vb2_dqbuf result: %d\n", ret);
2646 }
2647 - if (threadio->stop)
2648 - break;
2649 - if (ret)
2650 + if (ret || threadio->stop)
2651 break;
2652 try_to_freeze();
2653
2654 vb = q->bufs[fileio->b.index];
2655 if (!(fileio->b.flags & V4L2_BUF_FLAG_ERROR))
2656 - ret = threadio->fnc(vb, threadio->priv);
2657 - if (ret)
2658 - break;
2659 + if (threadio->fnc(vb, threadio->priv))
2660 + break;
2661 call_void_qop(q, wait_finish, q);
2662 if (set_timestamp)
2663 v4l2_get_timestamp(&fileio->b.timestamp);
2664 - ret = vb2_internal_qbuf(q, &fileio->b);
2665 + if (!threadio->stop)
2666 + ret = vb2_internal_qbuf(q, &fileio->b);
2667 call_void_qop(q, wait_prepare, q);
2668 - if (ret)
2669 + if (ret || threadio->stop)
2670 break;
2671 }
2672
2673 @@ -3231,11 +3230,11 @@ int vb2_thread_stop(struct vb2_queue *q)
2674 threadio->stop = true;
2675 vb2_internal_streamoff(q, q->type);
2676 call_void_qop(q, wait_prepare, q);
2677 + err = kthread_stop(threadio->thread);
2678 q->fileio = NULL;
2679 fileio->req.count = 0;
2680 vb2_reqbufs(q, &fileio->req);
2681 kfree(fileio);
2682 - err = kthread_stop(threadio->thread);
2683 threadio->thread = NULL;
2684 kfree(threadio);
2685 q->fileio = NULL;
2686 diff --git a/drivers/mfd/rtsx_usb.c b/drivers/mfd/rtsx_usb.c
2687 index 9cf98d142d9a..c2474cf6bfef 100644
2688 --- a/drivers/mfd/rtsx_usb.c
2689 +++ b/drivers/mfd/rtsx_usb.c
2690 @@ -681,21 +681,9 @@ static void rtsx_usb_disconnect(struct usb_interface *intf)
2691 #ifdef CONFIG_PM
2692 static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message)
2693 {
2694 - struct rtsx_ucr *ucr =
2695 - (struct rtsx_ucr *)usb_get_intfdata(intf);
2696 -
2697 dev_dbg(&intf->dev, "%s called with pm message 0x%04x\n",
2698 __func__, message.event);
2699
2700 - /*
2701 - * Call to make sure LED is off during suspend to save more power.
2702 - * It is NOT a permanent state and could be turned on anytime later.
2703 - * Thus no need to call turn_on when resunming.
2704 - */
2705 - mutex_lock(&ucr->dev_mutex);
2706 - rtsx_usb_turn_off_led(ucr);
2707 - mutex_unlock(&ucr->dev_mutex);
2708 -
2709 return 0;
2710 }
2711
2712 diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c
2713 index 0d256cb002eb..d6b764349f9d 100644
2714 --- a/drivers/mfd/tps65218.c
2715 +++ b/drivers/mfd/tps65218.c
2716 @@ -125,10 +125,21 @@ int tps65218_clear_bits(struct tps65218 *tps, unsigned int reg,
2717 }
2718 EXPORT_SYMBOL_GPL(tps65218_clear_bits);
2719
2720 +static const struct regmap_range tps65218_yes_ranges[] = {
2721 + regmap_reg_range(TPS65218_REG_INT1, TPS65218_REG_INT2),
2722 + regmap_reg_range(TPS65218_REG_STATUS, TPS65218_REG_STATUS),
2723 +};
2724 +
2725 +static const struct regmap_access_table tps65218_volatile_table = {
2726 + .yes_ranges = tps65218_yes_ranges,
2727 + .n_yes_ranges = ARRAY_SIZE(tps65218_yes_ranges),
2728 +};
2729 +
2730 static struct regmap_config tps65218_regmap_config = {
2731 .reg_bits = 8,
2732 .val_bits = 8,
2733 .cache_type = REGCACHE_RBTREE,
2734 + .volatile_table = &tps65218_volatile_table,
2735 };
2736
2737 static const struct regmap_irq tps65218_irqs[] = {
2738 @@ -193,6 +204,7 @@ static struct regmap_irq_chip tps65218_irq_chip = {
2739
2740 .num_regs = 2,
2741 .mask_base = TPS65218_REG_INT_MASK1,
2742 + .status_base = TPS65218_REG_INT1,
2743 };
2744
2745 static const struct of_device_id of_tps65218_match_table[] = {
2746 diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
2747 index 2cfe5012e4e5..4b008c9c738d 100644
2748 --- a/drivers/net/can/dev.c
2749 +++ b/drivers/net/can/dev.c
2750 @@ -729,10 +729,14 @@ static int can_changelink(struct net_device *dev,
2751 if (dev->flags & IFF_UP)
2752 return -EBUSY;
2753 cm = nla_data(data[IFLA_CAN_CTRLMODE]);
2754 - if (cm->flags & ~priv->ctrlmode_supported)
2755 +
2756 + /* check whether changed bits are allowed to be modified */
2757 + if (cm->mask & ~priv->ctrlmode_supported)
2758 return -EOPNOTSUPP;
2759 +
2760 + /* clear bits to be modified and copy the flag values */
2761 priv->ctrlmode &= ~cm->mask;
2762 - priv->ctrlmode |= cm->flags;
2763 + priv->ctrlmode |= (cm->flags & cm->mask);
2764
2765 /* CAN_CTRLMODE_FD can only be set when driver supports FD */
2766 if (priv->ctrlmode & CAN_CTRLMODE_FD)
2767 diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
2768 index d7bc462aafdc..244529881be9 100644
2769 --- a/drivers/net/can/m_can/m_can.c
2770 +++ b/drivers/net/can/m_can/m_can.c
2771 @@ -955,6 +955,11 @@ static struct net_device *alloc_m_can_dev(void)
2772 priv->can.data_bittiming_const = &m_can_data_bittiming_const;
2773 priv->can.do_set_mode = m_can_set_mode;
2774 priv->can.do_get_berr_counter = m_can_get_berr_counter;
2775 +
2776 + /* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.0.1 */
2777 + priv->can.ctrlmode = CAN_CTRLMODE_FD_NON_ISO;
2778 +
2779 + /* CAN_CTRLMODE_FD_NON_ISO can not be changed with M_CAN IP v3.0.1 */
2780 priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK |
2781 CAN_CTRLMODE_LISTENONLY |
2782 CAN_CTRLMODE_BERR_REPORTING |
2783 diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
2784 index 1354c68f6468..be0527734170 100644
2785 --- a/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
2786 +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h
2787 @@ -672,6 +672,7 @@ struct iwl_scan_channel_opt {
2788 * @IWL_MVM_LMAC_SCAN_FLAG_FRAGMENTED: all passive scans will be fragmented
2789 * @IWL_MVM_LMAC_SCAN_FLAGS_RRM_ENABLED: insert WFA vendor-specific TPC report
2790 * and DS parameter set IEs into probe requests.
2791 + * @IWL_MVM_LMAC_SCAN_FLAG_MATCH: Send match found notification on matches
2792 */
2793 enum iwl_mvm_lmac_scan_flags {
2794 IWL_MVM_LMAC_SCAN_FLAG_PASS_ALL = BIT(0),
2795 @@ -681,6 +682,7 @@ enum iwl_mvm_lmac_scan_flags {
2796 IWL_MVM_LMAC_SCAN_FLAG_MULTIPLE_SSIDS = BIT(4),
2797 IWL_MVM_LMAC_SCAN_FLAG_FRAGMENTED = BIT(5),
2798 IWL_MVM_LMAC_SCAN_FLAGS_RRM_ENABLED = BIT(6),
2799 + IWL_MVM_LMAC_SCAN_FLAG_MATCH = BIT(9),
2800 };
2801
2802 enum iwl_scan_priority {
2803 diff --git a/drivers/net/wireless/iwlwifi/mvm/scan.c b/drivers/net/wireless/iwlwifi/mvm/scan.c
2804 index 7554f7053830..886b64710443 100644
2805 --- a/drivers/net/wireless/iwlwifi/mvm/scan.c
2806 +++ b/drivers/net/wireless/iwlwifi/mvm/scan.c
2807 @@ -1334,6 +1334,7 @@ int iwl_mvm_unified_sched_scan_lmac(struct iwl_mvm *mvm,
2808 IWL_DEBUG_SCAN(mvm,
2809 "Sending scheduled scan with filtering, n_match_sets %d\n",
2810 req->n_match_sets);
2811 + flags |= IWL_MVM_LMAC_SCAN_FLAG_MATCH;
2812 } else {
2813 IWL_DEBUG_SCAN(mvm,
2814 "Sending Scheduled scan without filtering\n");
2815 diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
2816 index 73aef51a28f0..8fb16188cd82 100644
2817 --- a/drivers/pci/bus.c
2818 +++ b/drivers/pci/bus.c
2819 @@ -228,6 +228,49 @@ int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
2820 }
2821 EXPORT_SYMBOL(pci_bus_alloc_resource);
2822
2823 +/*
2824 + * The @idx resource of @dev should be a PCI-PCI bridge window. If this
2825 + * resource fits inside a window of an upstream bridge, do nothing. If it
2826 + * overlaps an upstream window but extends outside it, clip the resource so
2827 + * it fits completely inside.
2828 + */
2829 +bool pci_bus_clip_resource(struct pci_dev *dev, int idx)
2830 +{
2831 + struct pci_bus *bus = dev->bus;
2832 + struct resource *res = &dev->resource[idx];
2833 + struct resource orig_res = *res;
2834 + struct resource *r;
2835 + int i;
2836 +
2837 + pci_bus_for_each_resource(bus, r, i) {
2838 + resource_size_t start, end;
2839 +
2840 + if (!r)
2841 + continue;
2842 +
2843 + if (resource_type(res) != resource_type(r))
2844 + continue;
2845 +
2846 + start = max(r->start, res->start);
2847 + end = min(r->end, res->end);
2848 +
2849 + if (start > end)
2850 + continue; /* no overlap */
2851 +
2852 + if (res->start == start && res->end == end)
2853 + return false; /* no change */
2854 +
2855 + res->start = start;
2856 + res->end = end;
2857 + dev_printk(KERN_DEBUG, &dev->dev, "%pR clipped to %pR\n",
2858 + &orig_res, res);
2859 +
2860 + return true;
2861 + }
2862 +
2863 + return false;
2864 +}
2865 +
2866 void __weak pcibios_resource_survey_bus(struct pci_bus *bus) { }
2867
2868 /**
2869 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
2870 index 625a4ace10b4..0190d1ee36b7 100644
2871 --- a/drivers/pci/pci.c
2872 +++ b/drivers/pci/pci.c
2873 @@ -3280,7 +3280,8 @@ static int pci_parent_bus_reset(struct pci_dev *dev, int probe)
2874 {
2875 struct pci_dev *pdev;
2876
2877 - if (pci_is_root_bus(dev->bus) || dev->subordinate || !dev->bus->self)
2878 + if (pci_is_root_bus(dev->bus) || dev->subordinate ||
2879 + !dev->bus->self || dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET)
2880 return -ENOTTY;
2881
2882 list_for_each_entry(pdev, &dev->bus->devices, bus_list)
2883 @@ -3314,7 +3315,8 @@ static int pci_dev_reset_slot_function(struct pci_dev *dev, int probe)
2884 {
2885 struct pci_dev *pdev;
2886
2887 - if (dev->subordinate || !dev->slot)
2888 + if (dev->subordinate || !dev->slot ||
2889 + dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET)
2890 return -ENOTTY;
2891
2892 list_for_each_entry(pdev, &dev->bus->devices, bus_list)
2893 @@ -3566,6 +3568,20 @@ int pci_try_reset_function(struct pci_dev *dev)
2894 }
2895 EXPORT_SYMBOL_GPL(pci_try_reset_function);
2896
2897 +/* Do any devices on or below this bus prevent a bus reset? */
2898 +static bool pci_bus_resetable(struct pci_bus *bus)
2899 +{
2900 + struct pci_dev *dev;
2901 +
2902 + list_for_each_entry(dev, &bus->devices, bus_list) {
2903 + if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET ||
2904 + (dev->subordinate && !pci_bus_resetable(dev->subordinate)))
2905 + return false;
2906 + }
2907 +
2908 + return true;
2909 +}
2910 +
2911 /* Lock devices from the top of the tree down */
2912 static void pci_bus_lock(struct pci_bus *bus)
2913 {
2914 @@ -3616,6 +3632,22 @@ unlock:
2915 return 0;
2916 }
2917
2918 +/* Do any devices on or below this slot prevent a bus reset? */
2919 +static bool pci_slot_resetable(struct pci_slot *slot)
2920 +{
2921 + struct pci_dev *dev;
2922 +
2923 + list_for_each_entry(dev, &slot->bus->devices, bus_list) {
2924 + if (!dev->slot || dev->slot != slot)
2925 + continue;
2926 + if (dev->dev_flags & PCI_DEV_FLAGS_NO_BUS_RESET ||
2927 + (dev->subordinate && !pci_bus_resetable(dev->subordinate)))
2928 + return false;
2929 + }
2930 +
2931 + return true;
2932 +}
2933 +
2934 /* Lock devices from the top of the tree down */
2935 static void pci_slot_lock(struct pci_slot *slot)
2936 {
2937 @@ -3737,7 +3769,7 @@ static int pci_slot_reset(struct pci_slot *slot, int probe)
2938 {
2939 int rc;
2940
2941 - if (!slot)
2942 + if (!slot || !pci_slot_resetable(slot))
2943 return -ENOTTY;
2944
2945 if (!probe)
2946 @@ -3829,7 +3861,7 @@ EXPORT_SYMBOL_GPL(pci_try_reset_slot);
2947
2948 static int pci_bus_reset(struct pci_bus *bus, int probe)
2949 {
2950 - if (!bus->self)
2951 + if (!bus->self || !pci_bus_resetable(bus))
2952 return -ENOTTY;
2953
2954 if (probe)
2955 diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
2956 index 4a3902d8e6fe..b5defca86795 100644
2957 --- a/drivers/pci/pci.h
2958 +++ b/drivers/pci/pci.h
2959 @@ -208,6 +208,7 @@ void __pci_bus_size_bridges(struct pci_bus *bus,
2960 void __pci_bus_assign_resources(const struct pci_bus *bus,
2961 struct list_head *realloc_head,
2962 struct list_head *fail_head);
2963 +bool pci_bus_clip_resource(struct pci_dev *dev, int idx);
2964
2965 /**
2966 * pci_ari_enabled - query ARI forwarding status
2967 diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
2968 index 90acb32c85b1..b72e2cdfd59a 100644
2969 --- a/drivers/pci/quirks.c
2970 +++ b/drivers/pci/quirks.c
2971 @@ -3008,6 +3008,20 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_REALTEK, 0x8169,
2972 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
2973 quirk_broken_intx_masking);
2974
2975 +static void quirk_no_bus_reset(struct pci_dev *dev)
2976 +{
2977 + dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;
2978 +}
2979 +
2980 +/*
2981 + * Atheros AR93xx chips do not behave after a bus reset. The device will
2982 + * throw a Link Down error on AER-capable systems and regardless of AER,
2983 + * config space of the device is never accessible again and typically
2984 + * causes the system to hang or reset when access is attempted.
2985 + * http://www.spinics.net/lists/linux-pci/msg34797.html
2986 + */
2987 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0030, quirk_no_bus_reset);
2988 +
2989 #ifdef CONFIG_ACPI
2990 /*
2991 * Apple: Shutdown Cactus Ridge Thunderbolt controller.
2992 diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
2993 index 0482235eee92..e3e17f3c0f0f 100644
2994 --- a/drivers/pci/setup-bus.c
2995 +++ b/drivers/pci/setup-bus.c
2996 @@ -530,9 +530,8 @@ EXPORT_SYMBOL(pci_setup_cardbus);
2997 config space writes, so it's quite possible that an I/O window of
2998 the bridge will have some undesirable address (e.g. 0) after the
2999 first write. Ditto 64-bit prefetchable MMIO. */
3000 -static void pci_setup_bridge_io(struct pci_bus *bus)
3001 +static void pci_setup_bridge_io(struct pci_dev *bridge)
3002 {
3003 - struct pci_dev *bridge = bus->self;
3004 struct resource *res;
3005 struct pci_bus_region region;
3006 unsigned long io_mask;
3007 @@ -545,7 +544,7 @@ static void pci_setup_bridge_io(struct pci_bus *bus)
3008 io_mask = PCI_IO_1K_RANGE_MASK;
3009
3010 /* Set up the top and bottom of the PCI I/O segment for this bus. */
3011 - res = bus->resource[0];
3012 + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 0];
3013 pcibios_resource_to_bus(bridge->bus, &region, res);
3014 if (res->flags & IORESOURCE_IO) {
3015 pci_read_config_word(bridge, PCI_IO_BASE, &l);
3016 @@ -568,15 +567,14 @@ static void pci_setup_bridge_io(struct pci_bus *bus)
3017 pci_write_config_dword(bridge, PCI_IO_BASE_UPPER16, io_upper16);
3018 }
3019
3020 -static void pci_setup_bridge_mmio(struct pci_bus *bus)
3021 +static void pci_setup_bridge_mmio(struct pci_dev *bridge)
3022 {
3023 - struct pci_dev *bridge = bus->self;
3024 struct resource *res;
3025 struct pci_bus_region region;
3026 u32 l;
3027
3028 /* Set up the top and bottom of the PCI Memory segment for this bus. */
3029 - res = bus->resource[1];
3030 + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 1];
3031 pcibios_resource_to_bus(bridge->bus, &region, res);
3032 if (res->flags & IORESOURCE_MEM) {
3033 l = (region.start >> 16) & 0xfff0;
3034 @@ -588,9 +586,8 @@ static void pci_setup_bridge_mmio(struct pci_bus *bus)
3035 pci_write_config_dword(bridge, PCI_MEMORY_BASE, l);
3036 }
3037
3038 -static void pci_setup_bridge_mmio_pref(struct pci_bus *bus)
3039 +static void pci_setup_bridge_mmio_pref(struct pci_dev *bridge)
3040 {
3041 - struct pci_dev *bridge = bus->self;
3042 struct resource *res;
3043 struct pci_bus_region region;
3044 u32 l, bu, lu;
3045 @@ -602,7 +599,7 @@ static void pci_setup_bridge_mmio_pref(struct pci_bus *bus)
3046
3047 /* Set up PREF base/limit. */
3048 bu = lu = 0;
3049 - res = bus->resource[2];
3050 + res = &bridge->resource[PCI_BRIDGE_RESOURCES + 2];
3051 pcibios_resource_to_bus(bridge->bus, &region, res);
3052 if (res->flags & IORESOURCE_PREFETCH) {
3053 l = (region.start >> 16) & 0xfff0;
3054 @@ -630,13 +627,13 @@ static void __pci_setup_bridge(struct pci_bus *bus, unsigned long type)
3055 &bus->busn_res);
3056
3057 if (type & IORESOURCE_IO)
3058 - pci_setup_bridge_io(bus);
3059 + pci_setup_bridge_io(bridge);
3060
3061 if (type & IORESOURCE_MEM)
3062 - pci_setup_bridge_mmio(bus);
3063 + pci_setup_bridge_mmio(bridge);
3064
3065 if (type & IORESOURCE_PREFETCH)
3066 - pci_setup_bridge_mmio_pref(bus);
3067 + pci_setup_bridge_mmio_pref(bridge);
3068
3069 pci_write_config_word(bridge, PCI_BRIDGE_CONTROL, bus->bridge_ctl);
3070 }
3071 @@ -649,6 +646,41 @@ void pci_setup_bridge(struct pci_bus *bus)
3072 __pci_setup_bridge(bus, type);
3073 }
3074
3075 +
3076 +int pci_claim_bridge_resource(struct pci_dev *bridge, int i)
3077 +{
3078 + if (i < PCI_BRIDGE_RESOURCES || i > PCI_BRIDGE_RESOURCE_END)
3079 + return 0;
3080 +
3081 + if (pci_claim_resource(bridge, i) == 0)
3082 + return 0; /* claimed the window */
3083 +
3084 + if ((bridge->class >> 8) != PCI_CLASS_BRIDGE_PCI)
3085 + return 0;
3086 +
3087 + if (!pci_bus_clip_resource(bridge, i))
3088 + return -EINVAL; /* clipping didn't change anything */
3089 +
3090 + switch (i - PCI_BRIDGE_RESOURCES) {
3091 + case 0:
3092 + pci_setup_bridge_io(bridge);
3093 + break;
3094 + case 1:
3095 + pci_setup_bridge_mmio(bridge);
3096 + break;
3097 + case 2:
3098 + pci_setup_bridge_mmio_pref(bridge);
3099 + break;
3100 + default:
3101 + return -EINVAL;
3102 + }
3103 +
3104 + if (pci_claim_resource(bridge, i) == 0)
3105 + return 0; /* claimed a smaller window */
3106 +
3107 + return -EINVAL;
3108 +}
3109 +
3110 /* Check whether the bridge supports optional I/O and
3111 prefetchable memory ranges. If not, the respective
3112 base/limit registers must be read-only and read as 0. */
3113 diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
3114 index e4f65510c87e..89dca77ca038 100644
3115 --- a/drivers/pinctrl/core.c
3116 +++ b/drivers/pinctrl/core.c
3117 @@ -1801,14 +1801,15 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev)
3118 if (pctldev == NULL)
3119 return;
3120
3121 - mutex_lock(&pinctrldev_list_mutex);
3122 mutex_lock(&pctldev->mutex);
3123 -
3124 pinctrl_remove_device_debugfs(pctldev);
3125 + mutex_unlock(&pctldev->mutex);
3126
3127 if (!IS_ERR(pctldev->p))
3128 pinctrl_put(pctldev->p);
3129
3130 + mutex_lock(&pinctrldev_list_mutex);
3131 + mutex_lock(&pctldev->mutex);
3132 /* TODO: check that no pinmuxes are still active? */
3133 list_del(&pctldev->node);
3134 /* Destroy descriptor tree */
3135 diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
3136 index e730935fa457..ed7017df065d 100644
3137 --- a/drivers/pinctrl/qcom/pinctrl-msm.c
3138 +++ b/drivers/pinctrl/qcom/pinctrl-msm.c
3139 @@ -865,10 +865,10 @@ static int msm_ps_hold_restart(struct notifier_block *nb, unsigned long action,
3140
3141 static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl)
3142 {
3143 - int i = 0;
3144 + int i;
3145 const struct msm_function *func = pctrl->soc->functions;
3146
3147 - for (; i <= pctrl->soc->nfunctions; i++)
3148 + for (i = 0; i < pctrl->soc->nfunctions; i++)
3149 if (!strcmp(func[i].name, "ps_hold")) {
3150 pctrl->restart_nb.notifier_call = msm_ps_hold_restart;
3151 pctrl->restart_nb.priority = 128;
3152 diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
3153 index 99485415dcc2..91e97ec01418 100644
3154 --- a/drivers/s390/crypto/ap_bus.c
3155 +++ b/drivers/s390/crypto/ap_bus.c
3156 @@ -44,6 +44,7 @@
3157 #include <linux/hrtimer.h>
3158 #include <linux/ktime.h>
3159 #include <asm/facility.h>
3160 +#include <linux/crypto.h>
3161
3162 #include "ap_bus.h"
3163
3164 @@ -71,7 +72,7 @@ MODULE_AUTHOR("IBM Corporation");
3165 MODULE_DESCRIPTION("Adjunct Processor Bus driver, " \
3166 "Copyright IBM Corp. 2006, 2012");
3167 MODULE_LICENSE("GPL");
3168 -MODULE_ALIAS("z90crypt");
3169 +MODULE_ALIAS_CRYPTO("z90crypt");
3170
3171 /*
3172 * Module parameter
3173 diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
3174 index 2a9578c116b7..c3bdca7bf1e9 100644
3175 --- a/drivers/scsi/ipr.c
3176 +++ b/drivers/scsi/ipr.c
3177 @@ -683,6 +683,7 @@ static void ipr_init_ipr_cmnd(struct ipr_cmnd *ipr_cmd,
3178 ipr_reinit_ipr_cmnd(ipr_cmd);
3179 ipr_cmd->u.scratch = 0;
3180 ipr_cmd->sibling = NULL;
3181 + ipr_cmd->eh_comp = NULL;
3182 ipr_cmd->fast_done = fast_done;
3183 init_timer(&ipr_cmd->timer);
3184 }
3185 @@ -848,6 +849,8 @@ static void ipr_scsi_eh_done(struct ipr_cmnd *ipr_cmd)
3186
3187 scsi_dma_unmap(ipr_cmd->scsi_cmd);
3188 scsi_cmd->scsi_done(scsi_cmd);
3189 + if (ipr_cmd->eh_comp)
3190 + complete(ipr_cmd->eh_comp);
3191 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q);
3192 }
3193
3194 @@ -4853,6 +4856,84 @@ static int ipr_slave_alloc(struct scsi_device *sdev)
3195 return rc;
3196 }
3197
3198 +/**
3199 + * ipr_match_lun - Match function for specified LUN
3200 + * @ipr_cmd: ipr command struct
3201 + * @device: device to match (sdev)
3202 + *
3203 + * Returns:
3204 + * 1 if command matches sdev / 0 if command does not match sdev
3205 + **/
3206 +static int ipr_match_lun(struct ipr_cmnd *ipr_cmd, void *device)
3207 +{
3208 + if (ipr_cmd->scsi_cmd && ipr_cmd->scsi_cmd->device == device)
3209 + return 1;
3210 + return 0;
3211 +}
3212 +
3213 +/**
3214 + * ipr_wait_for_ops - Wait for matching commands to complete
3215 + * @ipr_cmd: ipr command struct
3216 + * @device: device to match (sdev)
3217 + * @match: match function to use
3218 + *
3219 + * Returns:
3220 + * SUCCESS / FAILED
3221 + **/
3222 +static int ipr_wait_for_ops(struct ipr_ioa_cfg *ioa_cfg, void *device,
3223 + int (*match)(struct ipr_cmnd *, void *))
3224 +{
3225 + struct ipr_cmnd *ipr_cmd;
3226 + int wait;
3227 + unsigned long flags;
3228 + struct ipr_hrr_queue *hrrq;
3229 + signed long timeout = IPR_ABORT_TASK_TIMEOUT;
3230 + DECLARE_COMPLETION_ONSTACK(comp);
3231 +
3232 + ENTER;
3233 + do {
3234 + wait = 0;
3235 +
3236 + for_each_hrrq(hrrq, ioa_cfg) {
3237 + spin_lock_irqsave(hrrq->lock, flags);
3238 + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) {
3239 + if (match(ipr_cmd, device)) {
3240 + ipr_cmd->eh_comp = &comp;
3241 + wait++;
3242 + }
3243 + }
3244 + spin_unlock_irqrestore(hrrq->lock, flags);
3245 + }
3246 +
3247 + if (wait) {
3248 + timeout = wait_for_completion_timeout(&comp, timeout);
3249 +
3250 + if (!timeout) {
3251 + wait = 0;
3252 +
3253 + for_each_hrrq(hrrq, ioa_cfg) {
3254 + spin_lock_irqsave(hrrq->lock, flags);
3255 + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) {
3256 + if (match(ipr_cmd, device)) {
3257 + ipr_cmd->eh_comp = NULL;
3258 + wait++;
3259 + }
3260 + }
3261 + spin_unlock_irqrestore(hrrq->lock, flags);
3262 + }
3263 +
3264 + if (wait)
3265 + dev_err(&ioa_cfg->pdev->dev, "Timed out waiting for aborted commands\n");
3266 + LEAVE;
3267 + return wait ? FAILED : SUCCESS;
3268 + }
3269 + }
3270 + } while (wait);
3271 +
3272 + LEAVE;
3273 + return SUCCESS;
3274 +}
3275 +
3276 static int ipr_eh_host_reset(struct scsi_cmnd *cmd)
3277 {
3278 struct ipr_ioa_cfg *ioa_cfg;
3279 @@ -5072,11 +5153,17 @@ static int __ipr_eh_dev_reset(struct scsi_cmnd *scsi_cmd)
3280 static int ipr_eh_dev_reset(struct scsi_cmnd *cmd)
3281 {
3282 int rc;
3283 + struct ipr_ioa_cfg *ioa_cfg;
3284 +
3285 + ioa_cfg = (struct ipr_ioa_cfg *) cmd->device->host->hostdata;
3286
3287 spin_lock_irq(cmd->device->host->host_lock);
3288 rc = __ipr_eh_dev_reset(cmd);
3289 spin_unlock_irq(cmd->device->host->host_lock);
3290
3291 + if (rc == SUCCESS)
3292 + rc = ipr_wait_for_ops(ioa_cfg, cmd->device, ipr_match_lun);
3293 +
3294 return rc;
3295 }
3296
3297 @@ -5254,13 +5341,18 @@ static int ipr_eh_abort(struct scsi_cmnd *scsi_cmd)
3298 {
3299 unsigned long flags;
3300 int rc;
3301 + struct ipr_ioa_cfg *ioa_cfg;
3302
3303 ENTER;
3304
3305 + ioa_cfg = (struct ipr_ioa_cfg *) scsi_cmd->device->host->hostdata;
3306 +
3307 spin_lock_irqsave(scsi_cmd->device->host->host_lock, flags);
3308 rc = ipr_cancel_op(scsi_cmd);
3309 spin_unlock_irqrestore(scsi_cmd->device->host->host_lock, flags);
3310
3311 + if (rc == SUCCESS)
3312 + rc = ipr_wait_for_ops(ioa_cfg, scsi_cmd->device, ipr_match_lun);
3313 LEAVE;
3314 return rc;
3315 }
3316 diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
3317 index d0201ceb4aac..fa82c003bc32 100644
3318 --- a/drivers/scsi/ipr.h
3319 +++ b/drivers/scsi/ipr.h
3320 @@ -1608,6 +1608,7 @@ struct ipr_cmnd {
3321 struct scsi_device *sdev;
3322 } u;
3323
3324 + struct completion *eh_comp;
3325 struct ipr_hrr_queue *hrrq;
3326 struct ipr_ioa_cfg *ioa_cfg;
3327 };
3328 diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
3329 index 9df5d6ec7eec..f3a9d831d0f9 100644
3330 --- a/drivers/xen/swiotlb-xen.c
3331 +++ b/drivers/xen/swiotlb-xen.c
3332 @@ -449,7 +449,7 @@ static void xen_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
3333
3334 /* NOTE: We use dev_addr here, not paddr! */
3335 if (is_xen_swiotlb_buffer(dev_addr)) {
3336 - swiotlb_tbl_unmap_single(hwdev, dev_addr, size, dir);
3337 + swiotlb_tbl_unmap_single(hwdev, paddr, size, dir);
3338 return;
3339 }
3340
3341 diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c
3342 index 45cb59bcc791..8b7898b7670f 100644
3343 --- a/fs/cifs/ioctl.c
3344 +++ b/fs/cifs/ioctl.c
3345 @@ -86,21 +86,16 @@ static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file,
3346 }
3347
3348 src_inode = file_inode(src_file.file);
3349 + rc = -EINVAL;
3350 + if (S_ISDIR(src_inode->i_mode))
3351 + goto out_fput;
3352
3353 /*
3354 * Note: cifs case is easier than btrfs since server responsible for
3355 * checks for proper open modes and file type and if it wants
3356 * server could even support copy of range where source = target
3357 */
3358 -
3359 - /* so we do not deadlock racing two ioctls on same files */
3360 - if (target_inode < src_inode) {
3361 - mutex_lock_nested(&target_inode->i_mutex, I_MUTEX_PARENT);
3362 - mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_CHILD);
3363 - } else {
3364 - mutex_lock_nested(&src_inode->i_mutex, I_MUTEX_PARENT);
3365 - mutex_lock_nested(&target_inode->i_mutex, I_MUTEX_CHILD);
3366 - }
3367 + lock_two_nondirectories(target_inode, src_inode);
3368
3369 /* determine range to clone */
3370 rc = -EINVAL;
3371 @@ -124,13 +119,7 @@ static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file,
3372 out_unlock:
3373 /* although unlocking in the reverse order from locking is not
3374 strictly necessary here it is a little cleaner to be consistent */
3375 - if (target_inode < src_inode) {
3376 - mutex_unlock(&src_inode->i_mutex);
3377 - mutex_unlock(&target_inode->i_mutex);
3378 - } else {
3379 - mutex_unlock(&target_inode->i_mutex);
3380 - mutex_unlock(&src_inode->i_mutex);
3381 - }
3382 + unlock_two_nondirectories(src_inode, target_inode);
3383 out_fput:
3384 fdput(src_file);
3385 out_drop_write:
3386 diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
3387 index f34a0835aa4f..8de31d472fad 100644
3388 --- a/include/acpi/acpi_bus.h
3389 +++ b/include/acpi/acpi_bus.h
3390 @@ -312,6 +312,7 @@ struct acpi_device_wakeup_flags {
3391 u8 valid:1; /* Can successfully enable wakeup? */
3392 u8 run_wake:1; /* Run-Wake GPE devices */
3393 u8 notifier_present:1; /* Wake-up notify handler has been installed */
3394 + u8 enabled:1; /* Enabled for wakeup */
3395 };
3396
3397 struct acpi_device_wakeup_context {
3398 diff --git a/include/linux/crypto.h b/include/linux/crypto.h
3399 index d45e949699ea..dc34dfc766b5 100644
3400 --- a/include/linux/crypto.h
3401 +++ b/include/linux/crypto.h
3402 @@ -26,6 +26,19 @@
3403 #include <linux/uaccess.h>
3404
3405 /*
3406 + * Autoloaded crypto modules should only use a prefixed name to avoid allowing
3407 + * arbitrary modules to be loaded. Loading from userspace may still need the
3408 + * unprefixed names, so retains those aliases as well.
3409 + * This uses __MODULE_INFO directly instead of MODULE_ALIAS because pre-4.3
3410 + * gcc (e.g. avr32 toolchain) uses __LINE__ for uniqueness, and this macro
3411 + * expands twice on the same line. Instead, use a separate base name for the
3412 + * alias.
3413 + */
3414 +#define MODULE_ALIAS_CRYPTO(name) \
3415 + __MODULE_INFO(alias, alias_userspace, name); \
3416 + __MODULE_INFO(alias, alias_crypto, "crypto-" name)
3417 +
3418 +/*
3419 * Algorithm masks and types.
3420 */
3421 #define CRYPTO_ALG_TYPE_MASK 0x0000000f
3422 diff --git a/include/linux/libata.h b/include/linux/libata.h
3423 index bd5fefeaf548..fe0bf8dc83bb 100644
3424 --- a/include/linux/libata.h
3425 +++ b/include/linux/libata.h
3426 @@ -230,6 +230,7 @@ enum {
3427 ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity
3428 * led */
3429 ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */
3430 + ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */
3431
3432 /* bits 24:31 of ap->flags are reserved for LLD specific flags */
3433
3434 diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
3435 index 7ea069cd3257..4b3736f7065c 100644
3436 --- a/include/linux/pagemap.h
3437 +++ b/include/linux/pagemap.h
3438 @@ -251,7 +251,7 @@ pgoff_t page_cache_prev_hole(struct address_space *mapping,
3439 #define FGP_NOWAIT 0x00000020
3440
3441 struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset,
3442 - int fgp_flags, gfp_t cache_gfp_mask, gfp_t radix_gfp_mask);
3443 + int fgp_flags, gfp_t cache_gfp_mask);
3444
3445 /**
3446 * find_get_page - find and get a page reference
3447 @@ -266,13 +266,13 @@ struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset,
3448 static inline struct page *find_get_page(struct address_space *mapping,
3449 pgoff_t offset)
3450 {
3451 - return pagecache_get_page(mapping, offset, 0, 0, 0);
3452 + return pagecache_get_page(mapping, offset, 0, 0);
3453 }
3454
3455 static inline struct page *find_get_page_flags(struct address_space *mapping,
3456 pgoff_t offset, int fgp_flags)
3457 {
3458 - return pagecache_get_page(mapping, offset, fgp_flags, 0, 0);
3459 + return pagecache_get_page(mapping, offset, fgp_flags, 0);
3460 }
3461
3462 /**
3463 @@ -292,7 +292,7 @@ static inline struct page *find_get_page_flags(struct address_space *mapping,
3464 static inline struct page *find_lock_page(struct address_space *mapping,
3465 pgoff_t offset)
3466 {
3467 - return pagecache_get_page(mapping, offset, FGP_LOCK, 0, 0);
3468 + return pagecache_get_page(mapping, offset, FGP_LOCK, 0);
3469 }
3470
3471 /**
3472 @@ -319,7 +319,7 @@ static inline struct page *find_or_create_page(struct address_space *mapping,
3473 {
3474 return pagecache_get_page(mapping, offset,
3475 FGP_LOCK|FGP_ACCESSED|FGP_CREAT,
3476 - gfp_mask, gfp_mask & GFP_RECLAIM_MASK);
3477 + gfp_mask);
3478 }
3479
3480 /**
3481 @@ -340,8 +340,7 @@ static inline struct page *grab_cache_page_nowait(struct address_space *mapping,
3482 {
3483 return pagecache_get_page(mapping, index,
3484 FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT,
3485 - mapping_gfp_mask(mapping),
3486 - GFP_NOFS);
3487 + mapping_gfp_mask(mapping));
3488 }
3489
3490 struct page *find_get_entry(struct address_space *mapping, pgoff_t offset);
3491 diff --git a/include/linux/pci.h b/include/linux/pci.h
3492 index 4c8ac5fcc224..2882c13c6391 100644
3493 --- a/include/linux/pci.h
3494 +++ b/include/linux/pci.h
3495 @@ -175,6 +175,8 @@ enum pci_dev_flags {
3496 PCI_DEV_FLAGS_DMA_ALIAS_DEVFN = (__force pci_dev_flags_t) (1 << 4),
3497 /* Use a PCIe-to-PCI bridge alias even if !pci_is_pcie */
3498 PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = (__force pci_dev_flags_t) (1 << 5),
3499 + /* Do not use bus resets for device */
3500 + PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6),
3501 };
3502
3503 enum pci_irq_reroute_variant {
3504 @@ -1062,6 +1064,7 @@ resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx);
3505 void pci_bus_assign_resources(const struct pci_bus *bus);
3506 void pci_bus_size_bridges(struct pci_bus *bus);
3507 int pci_claim_resource(struct pci_dev *, int);
3508 +int pci_claim_bridge_resource(struct pci_dev *bridge, int i);
3509 void pci_assign_unassigned_resources(void);
3510 void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
3511 void pci_assign_unassigned_bus_resources(struct pci_bus *bus);
3512 diff --git a/include/linux/time.h b/include/linux/time.h
3513 index 8c42cf8d2444..5989b0ead1ec 100644
3514 --- a/include/linux/time.h
3515 +++ b/include/linux/time.h
3516 @@ -99,6 +99,19 @@ static inline bool timespec_valid_strict(const struct timespec *ts)
3517 return true;
3518 }
3519
3520 +static inline bool timeval_valid(const struct timeval *tv)
3521 +{
3522 + /* Dates before 1970 are bogus */
3523 + if (tv->tv_sec < 0)
3524 + return false;
3525 +
3526 + /* Can't have more microseconds then a second */
3527 + if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC)
3528 + return false;
3529 +
3530 + return true;
3531 +}
3532 +
3533 extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
3534
3535 #define CURRENT_TIME (current_kernel_time())
3536 diff --git a/include/uapi/linux/can/netlink.h b/include/uapi/linux/can/netlink.h
3537 index 3e4323a3918d..94ffe0c83ce7 100644
3538 --- a/include/uapi/linux/can/netlink.h
3539 +++ b/include/uapi/linux/can/netlink.h
3540 @@ -98,6 +98,7 @@ struct can_ctrlmode {
3541 #define CAN_CTRLMODE_BERR_REPORTING 0x10 /* Bus-error reporting */
3542 #define CAN_CTRLMODE_FD 0x20 /* CAN FD mode */
3543 #define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
3544 +#define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
3545
3546 /*
3547 * CAN device statistics
3548 diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
3549 index 87a346fd6d61..28bf91c60a0b 100644
3550 --- a/kernel/time/ntp.c
3551 +++ b/kernel/time/ntp.c
3552 @@ -633,6 +633,13 @@ int ntp_validate_timex(struct timex *txc)
3553 if ((txc->modes & ADJ_SETOFFSET) && (!capable(CAP_SYS_TIME)))
3554 return -EPERM;
3555
3556 + if (txc->modes & ADJ_FREQUENCY) {
3557 + if (LONG_MIN / PPM_SCALE > txc->freq)
3558 + return -EINVAL;
3559 + if (LONG_MAX / PPM_SCALE < txc->freq)
3560 + return -EINVAL;
3561 + }
3562 +
3563 return 0;
3564 }
3565
3566 diff --git a/kernel/time/time.c b/kernel/time/time.c
3567 index a9ae20fb0b11..22d5d3b73970 100644
3568 --- a/kernel/time/time.c
3569 +++ b/kernel/time/time.c
3570 @@ -196,6 +196,10 @@ SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv,
3571 if (tv) {
3572 if (copy_from_user(&user_tv, tv, sizeof(*tv)))
3573 return -EFAULT;
3574 +
3575 + if (!timeval_valid(&user_tv))
3576 + return -EINVAL;
3577 +
3578 new_ts.tv_sec = user_tv.tv_sec;
3579 new_ts.tv_nsec = user_tv.tv_usec * NSEC_PER_USEC;
3580 }
3581 diff --git a/kernel/workqueue.c b/kernel/workqueue.c
3582 index 09b685daee3d..66940a53d128 100644
3583 --- a/kernel/workqueue.c
3584 +++ b/kernel/workqueue.c
3585 @@ -1841,17 +1841,11 @@ static void pool_mayday_timeout(unsigned long __pool)
3586 * spin_lock_irq(pool->lock) which may be released and regrabbed
3587 * multiple times. Does GFP_KERNEL allocations. Called only from
3588 * manager.
3589 - *
3590 - * Return:
3591 - * %false if no action was taken and pool->lock stayed locked, %true
3592 - * otherwise.
3593 */
3594 -static bool maybe_create_worker(struct worker_pool *pool)
3595 +static void maybe_create_worker(struct worker_pool *pool)
3596 __releases(&pool->lock)
3597 __acquires(&pool->lock)
3598 {
3599 - if (!need_to_create_worker(pool))
3600 - return false;
3601 restart:
3602 spin_unlock_irq(&pool->lock);
3603
3604 @@ -1877,7 +1871,6 @@ restart:
3605 */
3606 if (need_to_create_worker(pool))
3607 goto restart;
3608 - return true;
3609 }
3610
3611 /**
3612 @@ -1897,16 +1890,14 @@ restart:
3613 * multiple times. Does GFP_KERNEL allocations.
3614 *
3615 * Return:
3616 - * %false if the pool don't need management and the caller can safely start
3617 - * processing works, %true indicates that the function released pool->lock
3618 - * and reacquired it to perform some management function and that the
3619 - * conditions that the caller verified while holding the lock before
3620 - * calling the function might no longer be true.
3621 + * %false if the pool doesn't need management and the caller can safely
3622 + * start processing works, %true if management function was performed and
3623 + * the conditions that the caller verified before calling the function may
3624 + * no longer be true.
3625 */
3626 static bool manage_workers(struct worker *worker)
3627 {
3628 struct worker_pool *pool = worker->pool;
3629 - bool ret = false;
3630
3631 /*
3632 * Anyone who successfully grabs manager_arb wins the arbitration
3633 @@ -1919,12 +1910,12 @@ static bool manage_workers(struct worker *worker)
3634 * actual management, the pool may stall indefinitely.
3635 */
3636 if (!mutex_trylock(&pool->manager_arb))
3637 - return ret;
3638 + return false;
3639
3640 - ret |= maybe_create_worker(pool);
3641 + maybe_create_worker(pool);
3642
3643 mutex_unlock(&pool->manager_arb);
3644 - return ret;
3645 + return true;
3646 }
3647
3648 /**
3649 diff --git a/mm/filemap.c b/mm/filemap.c
3650 index 14b4642279f1..37beab98b416 100644
3651 --- a/mm/filemap.c
3652 +++ b/mm/filemap.c
3653 @@ -1046,8 +1046,7 @@ EXPORT_SYMBOL(find_lock_entry);
3654 * @mapping: the address_space to search
3655 * @offset: the page index
3656 * @fgp_flags: PCG flags
3657 - * @cache_gfp_mask: gfp mask to use for the page cache data page allocation
3658 - * @radix_gfp_mask: gfp mask to use for radix tree node allocation
3659 + * @gfp_mask: gfp mask to use for the page cache data page allocation
3660 *
3661 * Looks up the page cache slot at @mapping & @offset.
3662 *
3663 @@ -1056,11 +1055,9 @@ EXPORT_SYMBOL(find_lock_entry);
3664 * FGP_ACCESSED: the page will be marked accessed
3665 * FGP_LOCK: Page is return locked
3666 * FGP_CREAT: If page is not present then a new page is allocated using
3667 - * @cache_gfp_mask and added to the page cache and the VM's LRU
3668 - * list. If radix tree nodes are allocated during page cache
3669 - * insertion then @radix_gfp_mask is used. The page is returned
3670 - * locked and with an increased refcount. Otherwise, %NULL is
3671 - * returned.
3672 + * @gfp_mask and added to the page cache and the VM's LRU
3673 + * list. The page is returned locked and with an increased
3674 + * refcount. Otherwise, %NULL is returned.
3675 *
3676 * If FGP_LOCK or FGP_CREAT are specified then the function may sleep even
3677 * if the GFP flags specified for FGP_CREAT are atomic.
3678 @@ -1068,7 +1065,7 @@ EXPORT_SYMBOL(find_lock_entry);
3679 * If there is a page cache page, it is returned with an increased refcount.
3680 */
3681 struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset,
3682 - int fgp_flags, gfp_t cache_gfp_mask, gfp_t radix_gfp_mask)
3683 + int fgp_flags, gfp_t gfp_mask)
3684 {
3685 struct page *page;
3686
3687 @@ -1105,13 +1102,11 @@ no_page:
3688 if (!page && (fgp_flags & FGP_CREAT)) {
3689 int err;
3690 if ((fgp_flags & FGP_WRITE) && mapping_cap_account_dirty(mapping))
3691 - cache_gfp_mask |= __GFP_WRITE;
3692 - if (fgp_flags & FGP_NOFS) {
3693 - cache_gfp_mask &= ~__GFP_FS;
3694 - radix_gfp_mask &= ~__GFP_FS;
3695 - }
3696 + gfp_mask |= __GFP_WRITE;
3697 + if (fgp_flags & FGP_NOFS)
3698 + gfp_mask &= ~__GFP_FS;
3699
3700 - page = __page_cache_alloc(cache_gfp_mask);
3701 + page = __page_cache_alloc(gfp_mask);
3702 if (!page)
3703 return NULL;
3704
3705 @@ -1122,7 +1117,8 @@ no_page:
3706 if (fgp_flags & FGP_ACCESSED)
3707 __SetPageReferenced(page);
3708
3709 - err = add_to_page_cache_lru(page, mapping, offset, radix_gfp_mask);
3710 + err = add_to_page_cache_lru(page, mapping, offset,
3711 + gfp_mask & GFP_RECLAIM_MASK);
3712 if (unlikely(err)) {
3713 page_cache_release(page);
3714 page = NULL;
3715 @@ -2443,8 +2439,7 @@ struct page *grab_cache_page_write_begin(struct address_space *mapping,
3716 fgp_flags |= FGP_NOFS;
3717
3718 page = pagecache_get_page(mapping, index, fgp_flags,
3719 - mapping_gfp_mask(mapping),
3720 - GFP_KERNEL);
3721 + mapping_gfp_mask(mapping));
3722 if (page)
3723 wait_for_stable_page(page);
3724
3725 diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c
3726 index 1d5341f3761d..5d3daae98bf0 100644
3727 --- a/net/netfilter/ipvs/ip_vs_ftp.c
3728 +++ b/net/netfilter/ipvs/ip_vs_ftp.c
3729 @@ -183,6 +183,8 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp,
3730 struct nf_conn *ct;
3731 struct net *net;
3732
3733 + *diff = 0;
3734 +
3735 #ifdef CONFIG_IP_VS_IPV6
3736 /* This application helper doesn't work with IPv6 yet,
3737 * so turn this into a no-op for IPv6 packets
3738 @@ -191,8 +193,6 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp,
3739 return 1;
3740 #endif
3741
3742 - *diff = 0;
3743 -
3744 /* Only useful for established sessions */
3745 if (cp->state != IP_VS_TCP_S_ESTABLISHED)
3746 return 1;
3747 @@ -322,6 +322,9 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
3748 struct ip_vs_conn *n_cp;
3749 struct net *net;
3750
3751 + /* no diff required for incoming packets */
3752 + *diff = 0;
3753 +
3754 #ifdef CONFIG_IP_VS_IPV6
3755 /* This application helper doesn't work with IPv6 yet,
3756 * so turn this into a no-op for IPv6 packets
3757 @@ -330,9 +333,6 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
3758 return 1;
3759 #endif
3760
3761 - /* no diff required for incoming packets */
3762 - *diff = 0;
3763 -
3764 /* Only useful for established sessions */
3765 if (cp->state != IP_VS_TCP_S_ESTABLISHED)
3766 return 1;
3767 diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
3768 index 5016a6929085..c5880124ec0d 100644
3769 --- a/net/netfilter/nf_conntrack_core.c
3770 +++ b/net/netfilter/nf_conntrack_core.c
3771 @@ -611,16 +611,15 @@ __nf_conntrack_confirm(struct sk_buff *skb)
3772 */
3773 NF_CT_ASSERT(!nf_ct_is_confirmed(ct));
3774 pr_debug("Confirming conntrack %p\n", ct);
3775 - /* We have to check the DYING flag inside the lock to prevent
3776 - a race against nf_ct_get_next_corpse() possibly called from
3777 - user context, else we insert an already 'dead' hash, blocking
3778 - further use of that particular connection -JM */
3779 + /* We have to check the DYING flag after unlink to prevent
3780 + * a race against nf_ct_get_next_corpse() possibly called from
3781 + * user context, else we insert an already 'dead' hash, blocking
3782 + * further use of that particular connection -JM.
3783 + */
3784 + nf_ct_del_from_dying_or_unconfirmed_list(ct);
3785
3786 - if (unlikely(nf_ct_is_dying(ct))) {
3787 - nf_conntrack_double_unlock(hash, reply_hash);
3788 - local_bh_enable();
3789 - return NF_ACCEPT;
3790 - }
3791 + if (unlikely(nf_ct_is_dying(ct)))
3792 + goto out;
3793
3794 /* See if there's one in the list already, including reverse:
3795 NAT could have grabbed it without realizing, since we're
3796 @@ -636,8 +635,6 @@ __nf_conntrack_confirm(struct sk_buff *skb)
3797 zone == nf_ct_zone(nf_ct_tuplehash_to_ctrack(h)))
3798 goto out;
3799
3800 - nf_ct_del_from_dying_or_unconfirmed_list(ct);
3801 -
3802 /* Timer relative to confirmation time, not original
3803 setting time, otherwise we'd get timer wrap in
3804 weird delay cases. */
3805 @@ -673,6 +670,7 @@ __nf_conntrack_confirm(struct sk_buff *skb)
3806 return NF_ACCEPT;
3807
3808 out:
3809 + nf_ct_add_to_dying_list(ct);
3810 nf_conntrack_double_unlock(hash, reply_hash);
3811 NF_CT_STAT_INC(net, insert_failed);
3812 local_bh_enable();
3813 diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
3814 index 66e8425dbfe7..71b574c7bde9 100644
3815 --- a/net/netfilter/nf_tables_api.c
3816 +++ b/net/netfilter/nf_tables_api.c
3817 @@ -713,16 +713,12 @@ static int nft_flush_table(struct nft_ctx *ctx)
3818 struct nft_chain *chain, *nc;
3819 struct nft_set *set, *ns;
3820
3821 - list_for_each_entry_safe(chain, nc, &ctx->table->chains, list) {
3822 + list_for_each_entry(chain, &ctx->table->chains, list) {
3823 ctx->chain = chain;
3824
3825 err = nft_delrule_by_chain(ctx);
3826 if (err < 0)
3827 goto out;
3828 -
3829 - err = nft_delchain(ctx);
3830 - if (err < 0)
3831 - goto out;
3832 }
3833
3834 list_for_each_entry_safe(set, ns, &ctx->table->sets, list) {
3835 @@ -735,6 +731,14 @@ static int nft_flush_table(struct nft_ctx *ctx)
3836 goto out;
3837 }
3838
3839 + list_for_each_entry_safe(chain, nc, &ctx->table->chains, list) {
3840 + ctx->chain = chain;
3841 +
3842 + err = nft_delchain(ctx);
3843 + if (err < 0)
3844 + goto out;
3845 + }
3846 +
3847 err = nft_deltable(ctx);
3848 out:
3849 return err;
3850 diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
3851 index 13c2e17bbe27..1aa7049c93f5 100644
3852 --- a/net/netfilter/nfnetlink.c
3853 +++ b/net/netfilter/nfnetlink.c
3854 @@ -321,7 +321,8 @@ replay:
3855 nlh = nlmsg_hdr(skb);
3856 err = 0;
3857
3858 - if (nlh->nlmsg_len < NLMSG_HDRLEN) {
3859 + if (nlmsg_len(nlh) < sizeof(struct nfgenmsg) ||
3860 + skb->len < nlh->nlmsg_len) {
3861 err = -EINVAL;
3862 goto ack;
3863 }
3864 @@ -469,7 +470,7 @@ static int nfnetlink_bind(int group)
3865 int type;
3866
3867 if (group <= NFNLGRP_NONE || group > NFNLGRP_MAX)
3868 - return -EINVAL;
3869 + return 0;
3870
3871 type = nfnl_group2type[group];
3872
3873 diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
3874 index d4b665610d67..1f9f08ae60c1 100755
3875 --- a/scripts/recordmcount.pl
3876 +++ b/scripts/recordmcount.pl
3877 @@ -255,7 +255,6 @@ if ($arch eq "x86_64") {
3878 # force flags for this arch
3879 $ld .= " -m shlelf_linux";
3880 $objcopy .= " -O elf32-sh-linux";
3881 - $cc .= " -m32";
3882
3883 } elsif ($arch eq "powerpc") {
3884 $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
3885 diff --git a/security/keys/gc.c b/security/keys/gc.c
3886 index 9609a7f0faea..c7952375ac53 100644
3887 --- a/security/keys/gc.c
3888 +++ b/security/keys/gc.c
3889 @@ -148,12 +148,12 @@ static noinline void key_gc_unused_keys(struct list_head *keys)
3890 if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags))
3891 atomic_dec(&key->user->nikeys);
3892
3893 - key_user_put(key->user);
3894 -
3895 /* now throw away the key memory */
3896 if (key->type->destroy)
3897 key->type->destroy(key);
3898
3899 + key_user_put(key->user);
3900 +
3901 kfree(key->description);
3902
3903 #ifdef KEY_DEBUGGING
3904 diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
3905 index 6e354d326858..a712d754431c 100644
3906 --- a/sound/usb/mixer.c
3907 +++ b/sound/usb/mixer.c
3908 @@ -909,6 +909,7 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval,
3909 case USB_ID(0x046d, 0x0807): /* Logitech Webcam C500 */
3910 case USB_ID(0x046d, 0x0808):
3911 case USB_ID(0x046d, 0x0809):
3912 + case USB_ID(0x046d, 0x0819): /* Logitech Webcam C210 */
3913 case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */
3914 case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */
3915 case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */