Magellan Linux

Annotation of /trunk/kernel-magellan/patches-3.18/0104-3.18.5-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2545 - (hide annotations) (download)
Fri Feb 20 13:15:43 2015 UTC (9 years, 3 months ago) by niro
File size: 132162 byte(s)
-linux-3.18.5
1 niro 2545 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 */