Magellan Linux

Annotation of /trunk/kernel-alx/patches-3.10/0166-3.10.67-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2654 - (hide annotations) (download)
Tue Jul 21 16:20:22 2015 UTC (8 years, 10 months ago) by niro
File size: 81427 byte(s)
-linux-3.10.67
1 niro 2654 diff --git a/Makefile b/Makefile
2     index 12ae1ef5437a..7c6711fa3c3f 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,6 +1,6 @@
6     VERSION = 3
7     PATCHLEVEL = 10
8     -SUBLEVEL = 66
9     +SUBLEVEL = 67
10     EXTRAVERSION =
11     NAME = TOSSUG Baby Fish
12    
13     diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
14     index 82897e2d8d5a..97d1a550eb98 100644
15     --- a/arch/arm/boot/dts/imx25.dtsi
16     +++ b/arch/arm/boot/dts/imx25.dtsi
17     @@ -335,7 +335,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     @@ -354,7 +354,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     @@ -394,7 +394,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     @@ -439,7 +439,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 59f7877ead6a..e73ec2ab1316 100644
55     --- a/arch/arm/crypto/aes_glue.c
56     +++ b/arch/arm/crypto/aes_glue.c
57     @@ -103,6 +103,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 76cd976230bc..ace4cd67464c 100644
68     --- a/arch/arm/crypto/sha1_glue.c
69     +++ b/arch/arm/crypto/sha1_glue.c
70     @@ -175,5 +175,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/powerpc/crypto/sha1.c b/arch/powerpc/crypto/sha1.c
78     index f9e8b9491efc..b51da9132744 100644
79     --- a/arch/powerpc/crypto/sha1.c
80     +++ b/arch/powerpc/crypto/sha1.c
81     @@ -154,4 +154,5 @@ module_exit(sha1_powerpc_mod_fini);
82     MODULE_LICENSE("GPL");
83     MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
84    
85     -MODULE_ALIAS("sha1-powerpc");
86     +MODULE_ALIAS_CRYPTO("sha1");
87     +MODULE_ALIAS_CRYPTO("sha1-powerpc");
88     diff --git a/arch/s390/crypto/aes_s390.c b/arch/s390/crypto/aes_s390.c
89     index fd104db9cea1..92eb4d6ad39d 100644
90     --- a/arch/s390/crypto/aes_s390.c
91     +++ b/arch/s390/crypto/aes_s390.c
92     @@ -970,7 +970,7 @@ static void __exit aes_s390_fini(void)
93     module_init(aes_s390_init);
94     module_exit(aes_s390_fini);
95    
96     -MODULE_ALIAS("aes-all");
97     +MODULE_ALIAS_CRYPTO("aes-all");
98    
99     MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
100     MODULE_LICENSE("GPL");
101     diff --git a/arch/s390/crypto/des_s390.c b/arch/s390/crypto/des_s390.c
102     index f2d6cccddcf8..a89feffb22b5 100644
103     --- a/arch/s390/crypto/des_s390.c
104     +++ b/arch/s390/crypto/des_s390.c
105     @@ -619,8 +619,8 @@ static void __exit des_s390_exit(void)
106     module_init(des_s390_init);
107     module_exit(des_s390_exit);
108    
109     -MODULE_ALIAS("des");
110     -MODULE_ALIAS("des3_ede");
111     +MODULE_ALIAS_CRYPTO("des");
112     +MODULE_ALIAS_CRYPTO("des3_ede");
113    
114     MODULE_LICENSE("GPL");
115     MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");
116     diff --git a/arch/s390/crypto/ghash_s390.c b/arch/s390/crypto/ghash_s390.c
117     index d43485d142e9..7940dc90e80b 100644
118     --- a/arch/s390/crypto/ghash_s390.c
119     +++ b/arch/s390/crypto/ghash_s390.c
120     @@ -160,7 +160,7 @@ static void __exit ghash_mod_exit(void)
121     module_init(ghash_mod_init);
122     module_exit(ghash_mod_exit);
123    
124     -MODULE_ALIAS("ghash");
125     +MODULE_ALIAS_CRYPTO("ghash");
126    
127     MODULE_LICENSE("GPL");
128     MODULE_DESCRIPTION("GHASH Message Digest Algorithm, s390 implementation");
129     diff --git a/arch/s390/crypto/sha1_s390.c b/arch/s390/crypto/sha1_s390.c
130     index a1b3a9dc9d8a..5b2bee323694 100644
131     --- a/arch/s390/crypto/sha1_s390.c
132     +++ b/arch/s390/crypto/sha1_s390.c
133     @@ -103,6 +103,6 @@ static void __exit sha1_s390_fini(void)
134     module_init(sha1_s390_init);
135     module_exit(sha1_s390_fini);
136    
137     -MODULE_ALIAS("sha1");
138     +MODULE_ALIAS_CRYPTO("sha1");
139     MODULE_LICENSE("GPL");
140     MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
141     diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c
142     index 9b853809a492..b74ff158108c 100644
143     --- a/arch/s390/crypto/sha256_s390.c
144     +++ b/arch/s390/crypto/sha256_s390.c
145     @@ -143,7 +143,7 @@ static void __exit sha256_s390_fini(void)
146     module_init(sha256_s390_init);
147     module_exit(sha256_s390_fini);
148    
149     -MODULE_ALIAS("sha256");
150     -MODULE_ALIAS("sha224");
151     +MODULE_ALIAS_CRYPTO("sha256");
152     +MODULE_ALIAS_CRYPTO("sha224");
153     MODULE_LICENSE("GPL");
154     MODULE_DESCRIPTION("SHA256 and SHA224 Secure Hash Algorithm");
155     diff --git a/arch/s390/crypto/sha512_s390.c b/arch/s390/crypto/sha512_s390.c
156     index 32a81383b69c..0c36989ba182 100644
157     --- a/arch/s390/crypto/sha512_s390.c
158     +++ b/arch/s390/crypto/sha512_s390.c
159     @@ -86,7 +86,7 @@ static struct shash_alg sha512_alg = {
160     }
161     };
162    
163     -MODULE_ALIAS("sha512");
164     +MODULE_ALIAS_CRYPTO("sha512");
165    
166     static int sha384_init(struct shash_desc *desc)
167     {
168     @@ -126,7 +126,7 @@ static struct shash_alg sha384_alg = {
169     }
170     };
171    
172     -MODULE_ALIAS("sha384");
173     +MODULE_ALIAS_CRYPTO("sha384");
174    
175     static int __init init(void)
176     {
177     diff --git a/arch/sparc/crypto/aes_glue.c b/arch/sparc/crypto/aes_glue.c
178     index 503e6d96ad4e..ded4cee35318 100644
179     --- a/arch/sparc/crypto/aes_glue.c
180     +++ b/arch/sparc/crypto/aes_glue.c
181     @@ -499,6 +499,6 @@ module_exit(aes_sparc64_mod_fini);
182     MODULE_LICENSE("GPL");
183     MODULE_DESCRIPTION("AES Secure Hash Algorithm, sparc64 aes opcode accelerated");
184    
185     -MODULE_ALIAS("aes");
186     +MODULE_ALIAS_CRYPTO("aes");
187    
188     #include "crop_devid.c"
189     diff --git a/arch/sparc/crypto/camellia_glue.c b/arch/sparc/crypto/camellia_glue.c
190     index 888f6260b4ec..641f55cb61c3 100644
191     --- a/arch/sparc/crypto/camellia_glue.c
192     +++ b/arch/sparc/crypto/camellia_glue.c
193     @@ -322,6 +322,6 @@ module_exit(camellia_sparc64_mod_fini);
194     MODULE_LICENSE("GPL");
195     MODULE_DESCRIPTION("Camellia Cipher Algorithm, sparc64 camellia opcode accelerated");
196    
197     -MODULE_ALIAS("aes");
198     +MODULE_ALIAS_CRYPTO("aes");
199    
200     #include "crop_devid.c"
201     diff --git a/arch/sparc/crypto/crc32c_glue.c b/arch/sparc/crypto/crc32c_glue.c
202     index 5162fad912ce..d1064e46efe8 100644
203     --- a/arch/sparc/crypto/crc32c_glue.c
204     +++ b/arch/sparc/crypto/crc32c_glue.c
205     @@ -176,6 +176,6 @@ module_exit(crc32c_sparc64_mod_fini);
206     MODULE_LICENSE("GPL");
207     MODULE_DESCRIPTION("CRC32c (Castagnoli), sparc64 crc32c opcode accelerated");
208    
209     -MODULE_ALIAS("crc32c");
210     +MODULE_ALIAS_CRYPTO("crc32c");
211    
212     #include "crop_devid.c"
213     diff --git a/arch/sparc/crypto/des_glue.c b/arch/sparc/crypto/des_glue.c
214     index 3065bc61f9d3..d11500972994 100644
215     --- a/arch/sparc/crypto/des_glue.c
216     +++ b/arch/sparc/crypto/des_glue.c
217     @@ -532,6 +532,6 @@ module_exit(des_sparc64_mod_fini);
218     MODULE_LICENSE("GPL");
219     MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms, sparc64 des opcode accelerated");
220    
221     -MODULE_ALIAS("des");
222     +MODULE_ALIAS_CRYPTO("des");
223    
224     #include "crop_devid.c"
225     diff --git a/arch/sparc/crypto/md5_glue.c b/arch/sparc/crypto/md5_glue.c
226     index 09a9ea1dfb69..64c7ff5f72a9 100644
227     --- a/arch/sparc/crypto/md5_glue.c
228     +++ b/arch/sparc/crypto/md5_glue.c
229     @@ -185,6 +185,6 @@ module_exit(md5_sparc64_mod_fini);
230     MODULE_LICENSE("GPL");
231     MODULE_DESCRIPTION("MD5 Secure Hash Algorithm, sparc64 md5 opcode accelerated");
232    
233     -MODULE_ALIAS("md5");
234     +MODULE_ALIAS_CRYPTO("md5");
235    
236     #include "crop_devid.c"
237     diff --git a/arch/sparc/crypto/sha1_glue.c b/arch/sparc/crypto/sha1_glue.c
238     index 6cd5f29e1e0d..1b3e47accc74 100644
239     --- a/arch/sparc/crypto/sha1_glue.c
240     +++ b/arch/sparc/crypto/sha1_glue.c
241     @@ -180,6 +180,6 @@ module_exit(sha1_sparc64_mod_fini);
242     MODULE_LICENSE("GPL");
243     MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, sparc64 sha1 opcode accelerated");
244    
245     -MODULE_ALIAS("sha1");
246     +MODULE_ALIAS_CRYPTO("sha1");
247    
248     #include "crop_devid.c"
249     diff --git a/arch/sparc/crypto/sha256_glue.c b/arch/sparc/crypto/sha256_glue.c
250     index 04f555ab2680..41f27cca2a22 100644
251     --- a/arch/sparc/crypto/sha256_glue.c
252     +++ b/arch/sparc/crypto/sha256_glue.c
253     @@ -237,7 +237,7 @@ module_exit(sha256_sparc64_mod_fini);
254     MODULE_LICENSE("GPL");
255     MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm, sparc64 sha256 opcode accelerated");
256    
257     -MODULE_ALIAS("sha224");
258     -MODULE_ALIAS("sha256");
259     +MODULE_ALIAS_CRYPTO("sha224");
260     +MODULE_ALIAS_CRYPTO("sha256");
261    
262     #include "crop_devid.c"
263     diff --git a/arch/sparc/crypto/sha512_glue.c b/arch/sparc/crypto/sha512_glue.c
264     index f04d1994d19a..9fff88541b8c 100644
265     --- a/arch/sparc/crypto/sha512_glue.c
266     +++ b/arch/sparc/crypto/sha512_glue.c
267     @@ -222,7 +222,7 @@ module_exit(sha512_sparc64_mod_fini);
268     MODULE_LICENSE("GPL");
269     MODULE_DESCRIPTION("SHA-384 and SHA-512 Secure Hash Algorithm, sparc64 sha512 opcode accelerated");
270    
271     -MODULE_ALIAS("sha384");
272     -MODULE_ALIAS("sha512");
273     +MODULE_ALIAS_CRYPTO("sha384");
274     +MODULE_ALIAS_CRYPTO("sha512");
275    
276     #include "crop_devid.c"
277     diff --git a/arch/x86/crypto/aes_glue.c b/arch/x86/crypto/aes_glue.c
278     index aafe8ce0d65d..e26984f7ab8d 100644
279     --- a/arch/x86/crypto/aes_glue.c
280     +++ b/arch/x86/crypto/aes_glue.c
281     @@ -66,5 +66,5 @@ module_exit(aes_fini);
282    
283     MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, asm optimized");
284     MODULE_LICENSE("GPL");
285     -MODULE_ALIAS("aes");
286     -MODULE_ALIAS("aes-asm");
287     +MODULE_ALIAS_CRYPTO("aes");
288     +MODULE_ALIAS_CRYPTO("aes-asm");
289     diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
290     index f80e668785c0..f89e7490d303 100644
291     --- a/arch/x86/crypto/aesni-intel_glue.c
292     +++ b/arch/x86/crypto/aesni-intel_glue.c
293     @@ -1373,4 +1373,4 @@ module_exit(aesni_exit);
294    
295     MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized");
296     MODULE_LICENSE("GPL");
297     -MODULE_ALIAS("aes");
298     +MODULE_ALIAS_CRYPTO("aes");
299     diff --git a/arch/x86/crypto/blowfish_avx2_glue.c b/arch/x86/crypto/blowfish_avx2_glue.c
300     index 4417e9aea78d..183395bfc724 100644
301     --- a/arch/x86/crypto/blowfish_avx2_glue.c
302     +++ b/arch/x86/crypto/blowfish_avx2_glue.c
303     @@ -581,5 +581,5 @@ module_exit(fini);
304    
305     MODULE_LICENSE("GPL");
306     MODULE_DESCRIPTION("Blowfish Cipher Algorithm, AVX2 optimized");
307     -MODULE_ALIAS("blowfish");
308     -MODULE_ALIAS("blowfish-asm");
309     +MODULE_ALIAS_CRYPTO("blowfish");
310     +MODULE_ALIAS_CRYPTO("blowfish-asm");
311     diff --git a/arch/x86/crypto/blowfish_glue.c b/arch/x86/crypto/blowfish_glue.c
312     index 3548d76dbaa9..9f7cc6bde5c8 100644
313     --- a/arch/x86/crypto/blowfish_glue.c
314     +++ b/arch/x86/crypto/blowfish_glue.c
315     @@ -465,5 +465,5 @@ module_exit(fini);
316    
317     MODULE_LICENSE("GPL");
318     MODULE_DESCRIPTION("Blowfish Cipher Algorithm, asm optimized");
319     -MODULE_ALIAS("blowfish");
320     -MODULE_ALIAS("blowfish-asm");
321     +MODULE_ALIAS_CRYPTO("blowfish");
322     +MODULE_ALIAS_CRYPTO("blowfish-asm");
323     diff --git a/arch/x86/crypto/camellia_aesni_avx2_glue.c b/arch/x86/crypto/camellia_aesni_avx2_glue.c
324     index 414fe5d7946b..da710fcf8631 100644
325     --- a/arch/x86/crypto/camellia_aesni_avx2_glue.c
326     +++ b/arch/x86/crypto/camellia_aesni_avx2_glue.c
327     @@ -582,5 +582,5 @@ module_exit(camellia_aesni_fini);
328    
329     MODULE_LICENSE("GPL");
330     MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX2 optimized");
331     -MODULE_ALIAS("camellia");
332     -MODULE_ALIAS("camellia-asm");
333     +MODULE_ALIAS_CRYPTO("camellia");
334     +MODULE_ALIAS_CRYPTO("camellia-asm");
335     diff --git a/arch/x86/crypto/camellia_aesni_avx_glue.c b/arch/x86/crypto/camellia_aesni_avx_glue.c
336     index 37fd0c0a81ea..883e1af10dc5 100644
337     --- a/arch/x86/crypto/camellia_aesni_avx_glue.c
338     +++ b/arch/x86/crypto/camellia_aesni_avx_glue.c
339     @@ -574,5 +574,5 @@ module_exit(camellia_aesni_fini);
340    
341     MODULE_LICENSE("GPL");
342     MODULE_DESCRIPTION("Camellia Cipher Algorithm, AES-NI/AVX optimized");
343     -MODULE_ALIAS("camellia");
344     -MODULE_ALIAS("camellia-asm");
345     +MODULE_ALIAS_CRYPTO("camellia");
346     +MODULE_ALIAS_CRYPTO("camellia-asm");
347     diff --git a/arch/x86/crypto/camellia_glue.c b/arch/x86/crypto/camellia_glue.c
348     index 5cb86ccd4acb..16d65b0d28d1 100644
349     --- a/arch/x86/crypto/camellia_glue.c
350     +++ b/arch/x86/crypto/camellia_glue.c
351     @@ -1725,5 +1725,5 @@ module_exit(fini);
352    
353     MODULE_LICENSE("GPL");
354     MODULE_DESCRIPTION("Camellia Cipher Algorithm, asm optimized");
355     -MODULE_ALIAS("camellia");
356     -MODULE_ALIAS("camellia-asm");
357     +MODULE_ALIAS_CRYPTO("camellia");
358     +MODULE_ALIAS_CRYPTO("camellia-asm");
359     diff --git a/arch/x86/crypto/cast5_avx_glue.c b/arch/x86/crypto/cast5_avx_glue.c
360     index c6631813dc11..d416069e3184 100644
361     --- a/arch/x86/crypto/cast5_avx_glue.c
362     +++ b/arch/x86/crypto/cast5_avx_glue.c
363     @@ -494,4 +494,4 @@ module_exit(cast5_exit);
364    
365     MODULE_DESCRIPTION("Cast5 Cipher Algorithm, AVX optimized");
366     MODULE_LICENSE("GPL");
367     -MODULE_ALIAS("cast5");
368     +MODULE_ALIAS_CRYPTO("cast5");
369     diff --git a/arch/x86/crypto/cast6_avx_glue.c b/arch/x86/crypto/cast6_avx_glue.c
370     index 8d0dfb86a559..c19756265d4e 100644
371     --- a/arch/x86/crypto/cast6_avx_glue.c
372     +++ b/arch/x86/crypto/cast6_avx_glue.c
373     @@ -611,4 +611,4 @@ module_exit(cast6_exit);
374    
375     MODULE_DESCRIPTION("Cast6 Cipher Algorithm, AVX optimized");
376     MODULE_LICENSE("GPL");
377     -MODULE_ALIAS("cast6");
378     +MODULE_ALIAS_CRYPTO("cast6");
379     diff --git a/arch/x86/crypto/crc32-pclmul_glue.c b/arch/x86/crypto/crc32-pclmul_glue.c
380     index 9d014a74ef96..1937fc1d8763 100644
381     --- a/arch/x86/crypto/crc32-pclmul_glue.c
382     +++ b/arch/x86/crypto/crc32-pclmul_glue.c
383     @@ -197,5 +197,5 @@ module_exit(crc32_pclmul_mod_fini);
384     MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>");
385     MODULE_LICENSE("GPL");
386    
387     -MODULE_ALIAS("crc32");
388     -MODULE_ALIAS("crc32-pclmul");
389     +MODULE_ALIAS_CRYPTO("crc32");
390     +MODULE_ALIAS_CRYPTO("crc32-pclmul");
391     diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c
392     index 6812ad98355c..28640c3d6af7 100644
393     --- a/arch/x86/crypto/crc32c-intel_glue.c
394     +++ b/arch/x86/crypto/crc32c-intel_glue.c
395     @@ -280,5 +280,5 @@ MODULE_AUTHOR("Austin Zhang <austin.zhang@intel.com>, Kent Liu <kent.liu@intel.c
396     MODULE_DESCRIPTION("CRC32c (Castagnoli) optimization using Intel Hardware.");
397     MODULE_LICENSE("GPL");
398    
399     -MODULE_ALIAS("crc32c");
400     -MODULE_ALIAS("crc32c-intel");
401     +MODULE_ALIAS_CRYPTO("crc32c");
402     +MODULE_ALIAS_CRYPTO("crc32c-intel");
403     diff --git a/arch/x86/crypto/fpu.c b/arch/x86/crypto/fpu.c
404     index 98d7a188f46b..f368ba261739 100644
405     --- a/arch/x86/crypto/fpu.c
406     +++ b/arch/x86/crypto/fpu.c
407     @@ -17,6 +17,7 @@
408     #include <linux/kernel.h>
409     #include <linux/module.h>
410     #include <linux/slab.h>
411     +#include <linux/crypto.h>
412     #include <asm/i387.h>
413    
414     struct crypto_fpu_ctx {
415     @@ -159,3 +160,5 @@ void __exit crypto_fpu_exit(void)
416     {
417     crypto_unregister_template(&crypto_fpu_tmpl);
418     }
419     +
420     +MODULE_ALIAS_CRYPTO("fpu");
421     diff --git a/arch/x86/crypto/ghash-clmulni-intel_glue.c b/arch/x86/crypto/ghash-clmulni-intel_glue.c
422     index d785cf2c529c..a8d6f69f92a3 100644
423     --- a/arch/x86/crypto/ghash-clmulni-intel_glue.c
424     +++ b/arch/x86/crypto/ghash-clmulni-intel_glue.c
425     @@ -341,4 +341,4 @@ module_exit(ghash_pclmulqdqni_mod_exit);
426     MODULE_LICENSE("GPL");
427     MODULE_DESCRIPTION("GHASH Message Digest Algorithm, "
428     "acclerated by PCLMULQDQ-NI");
429     -MODULE_ALIAS("ghash");
430     +MODULE_ALIAS_CRYPTO("ghash");
431     diff --git a/arch/x86/crypto/salsa20_glue.c b/arch/x86/crypto/salsa20_glue.c
432     index 5e8e67739bb5..399a29d067d6 100644
433     --- a/arch/x86/crypto/salsa20_glue.c
434     +++ b/arch/x86/crypto/salsa20_glue.c
435     @@ -119,5 +119,5 @@ module_exit(fini);
436    
437     MODULE_LICENSE("GPL");
438     MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm (optimized assembly version)");
439     -MODULE_ALIAS("salsa20");
440     -MODULE_ALIAS("salsa20-asm");
441     +MODULE_ALIAS_CRYPTO("salsa20");
442     +MODULE_ALIAS_CRYPTO("salsa20-asm");
443     diff --git a/arch/x86/crypto/serpent_avx2_glue.c b/arch/x86/crypto/serpent_avx2_glue.c
444     index 23aabc6c20a5..cb57caf13ef7 100644
445     --- a/arch/x86/crypto/serpent_avx2_glue.c
446     +++ b/arch/x86/crypto/serpent_avx2_glue.c
447     @@ -558,5 +558,5 @@ module_exit(fini);
448    
449     MODULE_LICENSE("GPL");
450     MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX2 optimized");
451     -MODULE_ALIAS("serpent");
452     -MODULE_ALIAS("serpent-asm");
453     +MODULE_ALIAS_CRYPTO("serpent");
454     +MODULE_ALIAS_CRYPTO("serpent-asm");
455     diff --git a/arch/x86/crypto/serpent_avx_glue.c b/arch/x86/crypto/serpent_avx_glue.c
456     index 9ae83cf8d21e..0a86e8b65e60 100644
457     --- a/arch/x86/crypto/serpent_avx_glue.c
458     +++ b/arch/x86/crypto/serpent_avx_glue.c
459     @@ -617,4 +617,4 @@ module_exit(serpent_exit);
460    
461     MODULE_DESCRIPTION("Serpent Cipher Algorithm, AVX optimized");
462     MODULE_LICENSE("GPL");
463     -MODULE_ALIAS("serpent");
464     +MODULE_ALIAS_CRYPTO("serpent");
465     diff --git a/arch/x86/crypto/serpent_sse2_glue.c b/arch/x86/crypto/serpent_sse2_glue.c
466     index 97a356ece24d..279f3899c779 100644
467     --- a/arch/x86/crypto/serpent_sse2_glue.c
468     +++ b/arch/x86/crypto/serpent_sse2_glue.c
469     @@ -618,4 +618,4 @@ module_exit(serpent_sse2_exit);
470    
471     MODULE_DESCRIPTION("Serpent Cipher Algorithm, SSE2 optimized");
472     MODULE_LICENSE("GPL");
473     -MODULE_ALIAS("serpent");
474     +MODULE_ALIAS_CRYPTO("serpent");
475     diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c
476     index 4a11a9d72451..29e1060e9001 100644
477     --- a/arch/x86/crypto/sha1_ssse3_glue.c
478     +++ b/arch/x86/crypto/sha1_ssse3_glue.c
479     @@ -237,4 +237,4 @@ module_exit(sha1_ssse3_mod_fini);
480     MODULE_LICENSE("GPL");
481     MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm, Supplemental SSE3 accelerated");
482    
483     -MODULE_ALIAS("sha1");
484     +MODULE_ALIAS_CRYPTO("sha1");
485     diff --git a/arch/x86/crypto/sha256_ssse3_glue.c b/arch/x86/crypto/sha256_ssse3_glue.c
486     index 597d4da69656..ceafb01885ed 100644
487     --- a/arch/x86/crypto/sha256_ssse3_glue.c
488     +++ b/arch/x86/crypto/sha256_ssse3_glue.c
489     @@ -272,4 +272,4 @@ module_exit(sha256_ssse3_mod_fini);
490     MODULE_LICENSE("GPL");
491     MODULE_DESCRIPTION("SHA256 Secure Hash Algorithm, Supplemental SSE3 accelerated");
492    
493     -MODULE_ALIAS("sha256");
494     +MODULE_ALIAS_CRYPTO("sha256");
495     diff --git a/arch/x86/crypto/sha512_ssse3_glue.c b/arch/x86/crypto/sha512_ssse3_glue.c
496     index 9f5e71f06671..d1ee9f638d1c 100644
497     --- a/arch/x86/crypto/sha512_ssse3_glue.c
498     +++ b/arch/x86/crypto/sha512_ssse3_glue.c
499     @@ -279,4 +279,4 @@ module_exit(sha512_ssse3_mod_fini);
500     MODULE_LICENSE("GPL");
501     MODULE_DESCRIPTION("SHA512 Secure Hash Algorithm, Supplemental SSE3 accelerated");
502    
503     -MODULE_ALIAS("sha512");
504     +MODULE_ALIAS_CRYPTO("sha512");
505     diff --git a/arch/x86/crypto/twofish_avx2_glue.c b/arch/x86/crypto/twofish_avx2_glue.c
506     index ce33b5be64ee..bb1f0a194d97 100644
507     --- a/arch/x86/crypto/twofish_avx2_glue.c
508     +++ b/arch/x86/crypto/twofish_avx2_glue.c
509     @@ -580,5 +580,5 @@ module_exit(fini);
510    
511     MODULE_LICENSE("GPL");
512     MODULE_DESCRIPTION("Twofish Cipher Algorithm, AVX2 optimized");
513     -MODULE_ALIAS("twofish");
514     -MODULE_ALIAS("twofish-asm");
515     +MODULE_ALIAS_CRYPTO("twofish");
516     +MODULE_ALIAS_CRYPTO("twofish-asm");
517     diff --git a/arch/x86/crypto/twofish_avx_glue.c b/arch/x86/crypto/twofish_avx_glue.c
518     index 2047a562f6b3..4a1f94422fbb 100644
519     --- a/arch/x86/crypto/twofish_avx_glue.c
520     +++ b/arch/x86/crypto/twofish_avx_glue.c
521     @@ -589,4 +589,4 @@ module_exit(twofish_exit);
522    
523     MODULE_DESCRIPTION("Twofish Cipher Algorithm, AVX optimized");
524     MODULE_LICENSE("GPL");
525     -MODULE_ALIAS("twofish");
526     +MODULE_ALIAS_CRYPTO("twofish");
527     diff --git a/arch/x86/crypto/twofish_glue.c b/arch/x86/crypto/twofish_glue.c
528     index 0a5202303501..77e06c2da83d 100644
529     --- a/arch/x86/crypto/twofish_glue.c
530     +++ b/arch/x86/crypto/twofish_glue.c
531     @@ -96,5 +96,5 @@ module_exit(fini);
532    
533     MODULE_LICENSE("GPL");
534     MODULE_DESCRIPTION ("Twofish Cipher Algorithm, asm optimized");
535     -MODULE_ALIAS("twofish");
536     -MODULE_ALIAS("twofish-asm");
537     +MODULE_ALIAS_CRYPTO("twofish");
538     +MODULE_ALIAS_CRYPTO("twofish-asm");
539     diff --git a/arch/x86/crypto/twofish_glue_3way.c b/arch/x86/crypto/twofish_glue_3way.c
540     index 13e63b3e1dfb..56d8a08ee479 100644
541     --- a/arch/x86/crypto/twofish_glue_3way.c
542     +++ b/arch/x86/crypto/twofish_glue_3way.c
543     @@ -495,5 +495,5 @@ module_exit(fini);
544    
545     MODULE_LICENSE("GPL");
546     MODULE_DESCRIPTION("Twofish Cipher Algorithm, 3-way parallel asm optimized");
547     -MODULE_ALIAS("twofish");
548     -MODULE_ALIAS("twofish-asm");
549     +MODULE_ALIAS_CRYPTO("twofish");
550     +MODULE_ALIAS_CRYPTO("twofish-asm");
551     diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
552     index 8bf1c06070d5..23fb67e6f845 100644
553     --- a/arch/x86/include/asm/desc.h
554     +++ b/arch/x86/include/asm/desc.h
555     @@ -251,7 +251,8 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
556     gdt[GDT_ENTRY_TLS_MIN + i] = t->tls_array[i];
557     }
558    
559     -#define _LDT_empty(info) \
560     +/* This intentionally ignores lm, since 32-bit apps don't have that field. */
561     +#define LDT_empty(info) \
562     ((info)->base_addr == 0 && \
563     (info)->limit == 0 && \
564     (info)->contents == 0 && \
565     @@ -261,11 +262,18 @@ static inline void native_load_tls(struct thread_struct *t, unsigned int cpu)
566     (info)->seg_not_present == 1 && \
567     (info)->useable == 0)
568    
569     -#ifdef CONFIG_X86_64
570     -#define LDT_empty(info) (_LDT_empty(info) && ((info)->lm == 0))
571     -#else
572     -#define LDT_empty(info) (_LDT_empty(info))
573     -#endif
574     +/* Lots of programs expect an all-zero user_desc to mean "no segment at all". */
575     +static inline bool LDT_zero(const struct user_desc *info)
576     +{
577     + return (info->base_addr == 0 &&
578     + info->limit == 0 &&
579     + info->contents == 0 &&
580     + info->read_exec_only == 0 &&
581     + info->seg_32bit == 0 &&
582     + info->limit_in_pages == 0 &&
583     + info->seg_not_present == 0 &&
584     + info->useable == 0);
585     +}
586    
587     static inline void clear_LDT(void)
588     {
589     diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
590     index 8f4be53ea04b..1853659820e0 100644
591     --- a/arch/x86/kernel/cpu/mshyperv.c
592     +++ b/arch/x86/kernel/cpu/mshyperv.c
593     @@ -60,6 +60,7 @@ static struct clocksource hyperv_cs = {
594     .rating = 400, /* use this when running on Hyperv*/
595     .read = read_hv_clock,
596     .mask = CLOCKSOURCE_MASK(64),
597     + .flags = CLOCK_SOURCE_IS_CONTINUOUS,
598     };
599    
600     static void __init ms_hyperv_init_platform(void)
601     diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
602     index 4e942f31b1a7..7fc5e843f247 100644
603     --- a/arch/x86/kernel/tls.c
604     +++ b/arch/x86/kernel/tls.c
605     @@ -29,7 +29,28 @@ static int get_free_idx(void)
606    
607     static bool tls_desc_okay(const struct user_desc *info)
608     {
609     - if (LDT_empty(info))
610     + /*
611     + * For historical reasons (i.e. no one ever documented how any
612     + * of the segmentation APIs work), user programs can and do
613     + * assume that a struct user_desc that's all zeros except for
614     + * entry_number means "no segment at all". This never actually
615     + * worked. In fact, up to Linux 3.19, a struct user_desc like
616     + * this would create a 16-bit read-write segment with base and
617     + * limit both equal to zero.
618     + *
619     + * That was close enough to "no segment at all" until we
620     + * hardened this function to disallow 16-bit TLS segments. Fix
621     + * it up by interpreting these zeroed segments the way that they
622     + * were almost certainly intended to be interpreted.
623     + *
624     + * The correct way to ask for "no segment at all" is to specify
625     + * a user_desc that satisfies LDT_empty. To keep everything
626     + * working, we accept both.
627     + *
628     + * Note that there's a similar kludge in modify_ldt -- look at
629     + * the distinction between modes 1 and 0x11.
630     + */
631     + if (LDT_empty(info) || LDT_zero(info))
632     return true;
633    
634     /*
635     @@ -71,7 +92,7 @@ static void set_tls_desc(struct task_struct *p, int idx,
636     cpu = get_cpu();
637    
638     while (n-- > 0) {
639     - if (LDT_empty(info))
640     + if (LDT_empty(info) || LDT_zero(info))
641     desc->a = desc->b = 0;
642     else
643     fill_ldt(desc, info);
644     diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
645     index 332cafe909eb..0010ed7c3ec2 100644
646     --- a/arch/x86/kernel/traps.c
647     +++ b/arch/x86/kernel/traps.c
648     @@ -362,7 +362,7 @@ exit:
649     * for scheduling or signal handling. The actual stack switch is done in
650     * entry.S
651     */
652     -asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs)
653     +asmlinkage notrace __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs)
654     {
655     struct pt_regs *regs = eregs;
656     /* Did already sync */
657     @@ -387,7 +387,7 @@ struct bad_iret_stack {
658     struct pt_regs regs;
659     };
660    
661     -asmlinkage __visible
662     +asmlinkage __visible notrace __kprobes
663     struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s)
664     {
665     /*
666     diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
667     index 4e27ba53c40c..27e3a14fc917 100644
668     --- a/arch/x86/kernel/tsc.c
669     +++ b/arch/x86/kernel/tsc.c
670     @@ -380,7 +380,7 @@ static unsigned long quick_pit_calibrate(void)
671     goto success;
672     }
673     }
674     - pr_err("Fast TSC calibration failed\n");
675     + pr_info("Fast TSC calibration failed\n");
676     return 0;
677    
678     success:
679     diff --git a/crypto/842.c b/crypto/842.c
680     index 65c7a89cfa09..b48f4f108c47 100644
681     --- a/crypto/842.c
682     +++ b/crypto/842.c
683     @@ -180,3 +180,4 @@ module_exit(nx842_mod_exit);
684    
685     MODULE_LICENSE("GPL");
686     MODULE_DESCRIPTION("842 Compression Algorithm");
687     +MODULE_ALIAS_CRYPTO("842");
688     diff --git a/crypto/aes_generic.c b/crypto/aes_generic.c
689     index 47f2e5c71759..e138ad85bd83 100644
690     --- a/crypto/aes_generic.c
691     +++ b/crypto/aes_generic.c
692     @@ -1474,4 +1474,5 @@ module_exit(aes_fini);
693    
694     MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
695     MODULE_LICENSE("Dual BSD/GPL");
696     -MODULE_ALIAS("aes");
697     +MODULE_ALIAS_CRYPTO("aes");
698     +MODULE_ALIAS_CRYPTO("aes-generic");
699     diff --git a/crypto/algapi.c b/crypto/algapi.c
700     index 7a1ae87f1683..00d8d939733b 100644
701     --- a/crypto/algapi.c
702     +++ b/crypto/algapi.c
703     @@ -495,8 +495,8 @@ static struct crypto_template *__crypto_lookup_template(const char *name)
704    
705     struct crypto_template *crypto_lookup_template(const char *name)
706     {
707     - return try_then_request_module(__crypto_lookup_template(name), "%s",
708     - name);
709     + return try_then_request_module(__crypto_lookup_template(name),
710     + "crypto-%s", name);
711     }
712     EXPORT_SYMBOL_GPL(crypto_lookup_template);
713    
714     diff --git a/crypto/ansi_cprng.c b/crypto/ansi_cprng.c
715     index 666f1962a160..6f5bebc9bf01 100644
716     --- a/crypto/ansi_cprng.c
717     +++ b/crypto/ansi_cprng.c
718     @@ -476,4 +476,5 @@ module_param(dbg, int, 0);
719     MODULE_PARM_DESC(dbg, "Boolean to enable debugging (0/1 == off/on)");
720     module_init(prng_mod_init);
721     module_exit(prng_mod_fini);
722     -MODULE_ALIAS("stdrng");
723     +MODULE_ALIAS_CRYPTO("stdrng");
724     +MODULE_ALIAS_CRYPTO("ansi_cprng");
725     diff --git a/crypto/anubis.c b/crypto/anubis.c
726     index 008c8a4fb67c..4bb187c2a902 100644
727     --- a/crypto/anubis.c
728     +++ b/crypto/anubis.c
729     @@ -704,3 +704,4 @@ module_exit(anubis_mod_fini);
730    
731     MODULE_LICENSE("GPL");
732     MODULE_DESCRIPTION("Anubis Cryptographic Algorithm");
733     +MODULE_ALIAS_CRYPTO("anubis");
734     diff --git a/crypto/api.c b/crypto/api.c
735     index 37c4c7213de0..335abea14f19 100644
736     --- a/crypto/api.c
737     +++ b/crypto/api.c
738     @@ -216,11 +216,11 @@ struct crypto_alg *crypto_larval_lookup(const char *name, u32 type, u32 mask)
739    
740     alg = crypto_alg_lookup(name, type, mask);
741     if (!alg) {
742     - request_module("%s", name);
743     + request_module("crypto-%s", name);
744    
745     if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask &
746     CRYPTO_ALG_NEED_FALLBACK))
747     - request_module("%s-all", name);
748     + request_module("crypto-%s-all", name);
749    
750     alg = crypto_alg_lookup(name, type, mask);
751     }
752     diff --git a/crypto/arc4.c b/crypto/arc4.c
753     index 5a772c3657d5..f1a81925558f 100644
754     --- a/crypto/arc4.c
755     +++ b/crypto/arc4.c
756     @@ -166,3 +166,4 @@ module_exit(arc4_exit);
757     MODULE_LICENSE("GPL");
758     MODULE_DESCRIPTION("ARC4 Cipher Algorithm");
759     MODULE_AUTHOR("Jon Oberheide <jon@oberheide.org>");
760     +MODULE_ALIAS_CRYPTO("arc4");
761     diff --git a/crypto/authenc.c b/crypto/authenc.c
762     index 528b00bc4769..a2cfae251dd5 100644
763     --- a/crypto/authenc.c
764     +++ b/crypto/authenc.c
765     @@ -709,3 +709,4 @@ module_exit(crypto_authenc_module_exit);
766    
767     MODULE_LICENSE("GPL");
768     MODULE_DESCRIPTION("Simple AEAD wrapper for IPsec");
769     +MODULE_ALIAS_CRYPTO("authenc");
770     diff --git a/crypto/authencesn.c b/crypto/authencesn.c
771     index ab53762fc309..16c225cb28c2 100644
772     --- a/crypto/authencesn.c
773     +++ b/crypto/authencesn.c
774     @@ -832,3 +832,4 @@ module_exit(crypto_authenc_esn_module_exit);
775     MODULE_LICENSE("GPL");
776     MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>");
777     MODULE_DESCRIPTION("AEAD wrapper for IPsec with extended sequence numbers");
778     +MODULE_ALIAS_CRYPTO("authencesn");
779     diff --git a/crypto/blowfish_generic.c b/crypto/blowfish_generic.c
780     index 8baf5447d35b..87b392a77a93 100644
781     --- a/crypto/blowfish_generic.c
782     +++ b/crypto/blowfish_generic.c
783     @@ -138,4 +138,5 @@ module_exit(blowfish_mod_fini);
784    
785     MODULE_LICENSE("GPL");
786     MODULE_DESCRIPTION("Blowfish Cipher Algorithm");
787     -MODULE_ALIAS("blowfish");
788     +MODULE_ALIAS_CRYPTO("blowfish");
789     +MODULE_ALIAS_CRYPTO("blowfish-generic");
790     diff --git a/crypto/camellia_generic.c b/crypto/camellia_generic.c
791     index 75efa2052305..029587f808f4 100644
792     --- a/crypto/camellia_generic.c
793     +++ b/crypto/camellia_generic.c
794     @@ -1098,4 +1098,5 @@ module_exit(camellia_fini);
795    
796     MODULE_DESCRIPTION("Camellia Cipher Algorithm");
797     MODULE_LICENSE("GPL");
798     -MODULE_ALIAS("camellia");
799     +MODULE_ALIAS_CRYPTO("camellia");
800     +MODULE_ALIAS_CRYPTO("camellia-generic");
801     diff --git a/crypto/cast5_generic.c b/crypto/cast5_generic.c
802     index 5558f630a0eb..df5c72629383 100644
803     --- a/crypto/cast5_generic.c
804     +++ b/crypto/cast5_generic.c
805     @@ -549,4 +549,5 @@ module_exit(cast5_mod_fini);
806    
807     MODULE_LICENSE("GPL");
808     MODULE_DESCRIPTION("Cast5 Cipher Algorithm");
809     -MODULE_ALIAS("cast5");
810     +MODULE_ALIAS_CRYPTO("cast5");
811     +MODULE_ALIAS_CRYPTO("cast5-generic");
812     diff --git a/crypto/cast6_generic.c b/crypto/cast6_generic.c
813     index de732528a430..058c8d755d03 100644
814     --- a/crypto/cast6_generic.c
815     +++ b/crypto/cast6_generic.c
816     @@ -291,4 +291,5 @@ module_exit(cast6_mod_fini);
817    
818     MODULE_LICENSE("GPL");
819     MODULE_DESCRIPTION("Cast6 Cipher Algorithm");
820     -MODULE_ALIAS("cast6");
821     +MODULE_ALIAS_CRYPTO("cast6");
822     +MODULE_ALIAS_CRYPTO("cast6-generic");
823     diff --git a/crypto/cbc.c b/crypto/cbc.c
824     index 61ac42e1e32b..780ee27b2d43 100644
825     --- a/crypto/cbc.c
826     +++ b/crypto/cbc.c
827     @@ -289,3 +289,4 @@ module_exit(crypto_cbc_module_exit);
828    
829     MODULE_LICENSE("GPL");
830     MODULE_DESCRIPTION("CBC block cipher algorithm");
831     +MODULE_ALIAS_CRYPTO("cbc");
832     diff --git a/crypto/ccm.c b/crypto/ccm.c
833     index ed009b77e67d..c569c9c6afe3 100644
834     --- a/crypto/ccm.c
835     +++ b/crypto/ccm.c
836     @@ -879,5 +879,6 @@ module_exit(crypto_ccm_module_exit);
837    
838     MODULE_LICENSE("GPL");
839     MODULE_DESCRIPTION("Counter with CBC MAC");
840     -MODULE_ALIAS("ccm_base");
841     -MODULE_ALIAS("rfc4309");
842     +MODULE_ALIAS_CRYPTO("ccm_base");
843     +MODULE_ALIAS_CRYPTO("rfc4309");
844     +MODULE_ALIAS_CRYPTO("ccm");
845     diff --git a/crypto/chainiv.c b/crypto/chainiv.c
846     index 834d8dd3d4fc..22b7e55b0e1b 100644
847     --- a/crypto/chainiv.c
848     +++ b/crypto/chainiv.c
849     @@ -359,3 +359,4 @@ module_exit(chainiv_module_exit);
850    
851     MODULE_LICENSE("GPL");
852     MODULE_DESCRIPTION("Chain IV Generator");
853     +MODULE_ALIAS_CRYPTO("chainiv");
854     diff --git a/crypto/cmac.c b/crypto/cmac.c
855     index 50880cf17fad..7a8bfbd548f6 100644
856     --- a/crypto/cmac.c
857     +++ b/crypto/cmac.c
858     @@ -313,3 +313,4 @@ module_exit(crypto_cmac_module_exit);
859    
860     MODULE_LICENSE("GPL");
861     MODULE_DESCRIPTION("CMAC keyed hash algorithm");
862     +MODULE_ALIAS_CRYPTO("cmac");
863     diff --git a/crypto/crc32.c b/crypto/crc32.c
864     index 9d1c41569898..187ded28cb0b 100644
865     --- a/crypto/crc32.c
866     +++ b/crypto/crc32.c
867     @@ -156,3 +156,4 @@ module_exit(crc32_mod_fini);
868     MODULE_AUTHOR("Alexander Boyko <alexander_boyko@xyratex.com>");
869     MODULE_DESCRIPTION("CRC32 calculations wrapper for lib/crc32");
870     MODULE_LICENSE("GPL");
871     +MODULE_ALIAS_CRYPTO("crc32");
872     diff --git a/crypto/cryptd.c b/crypto/cryptd.c
873     index 7bdd61b867c8..75c415d37086 100644
874     --- a/crypto/cryptd.c
875     +++ b/crypto/cryptd.c
876     @@ -955,3 +955,4 @@ module_exit(cryptd_exit);
877    
878     MODULE_LICENSE("GPL");
879     MODULE_DESCRIPTION("Software async crypto daemon");
880     +MODULE_ALIAS_CRYPTO("cryptd");
881     diff --git a/crypto/crypto_null.c b/crypto/crypto_null.c
882     index fee7265cd35d..7b39fa3deac2 100644
883     --- a/crypto/crypto_null.c
884     +++ b/crypto/crypto_null.c
885     @@ -149,9 +149,9 @@ static struct crypto_alg null_algs[3] = { {
886     .coa_decompress = null_compress } }
887     } };
888    
889     -MODULE_ALIAS("compress_null");
890     -MODULE_ALIAS("digest_null");
891     -MODULE_ALIAS("cipher_null");
892     +MODULE_ALIAS_CRYPTO("compress_null");
893     +MODULE_ALIAS_CRYPTO("digest_null");
894     +MODULE_ALIAS_CRYPTO("cipher_null");
895    
896     static int __init crypto_null_mod_init(void)
897     {
898     diff --git a/crypto/ctr.c b/crypto/ctr.c
899     index f2b94f27bb2c..2386f7313952 100644
900     --- a/crypto/ctr.c
901     +++ b/crypto/ctr.c
902     @@ -466,4 +466,5 @@ module_exit(crypto_ctr_module_exit);
903    
904     MODULE_LICENSE("GPL");
905     MODULE_DESCRIPTION("CTR Counter block mode");
906     -MODULE_ALIAS("rfc3686");
907     +MODULE_ALIAS_CRYPTO("rfc3686");
908     +MODULE_ALIAS_CRYPTO("ctr");
909     diff --git a/crypto/cts.c b/crypto/cts.c
910     index 042223f8e733..60b9da3fa7c1 100644
911     --- a/crypto/cts.c
912     +++ b/crypto/cts.c
913     @@ -350,3 +350,4 @@ module_exit(crypto_cts_module_exit);
914    
915     MODULE_LICENSE("Dual BSD/GPL");
916     MODULE_DESCRIPTION("CTS-CBC CipherText Stealing for CBC");
917     +MODULE_ALIAS_CRYPTO("cts");
918     diff --git a/crypto/deflate.c b/crypto/deflate.c
919     index b57d70eb156b..95d8d37c5021 100644
920     --- a/crypto/deflate.c
921     +++ b/crypto/deflate.c
922     @@ -222,4 +222,4 @@ module_exit(deflate_mod_fini);
923     MODULE_LICENSE("GPL");
924     MODULE_DESCRIPTION("Deflate Compression Algorithm for IPCOMP");
925     MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>");
926     -
927     +MODULE_ALIAS_CRYPTO("deflate");
928     diff --git a/crypto/des_generic.c b/crypto/des_generic.c
929     index f6cf63f88468..3ec6071309d9 100644
930     --- a/crypto/des_generic.c
931     +++ b/crypto/des_generic.c
932     @@ -971,8 +971,6 @@ static struct crypto_alg des_algs[2] = { {
933     .cia_decrypt = des3_ede_decrypt } }
934     } };
935    
936     -MODULE_ALIAS("des3_ede");
937     -
938     static int __init des_generic_mod_init(void)
939     {
940     return crypto_register_algs(des_algs, ARRAY_SIZE(des_algs));
941     @@ -989,4 +987,7 @@ module_exit(des_generic_mod_fini);
942     MODULE_LICENSE("GPL");
943     MODULE_DESCRIPTION("DES & Triple DES EDE Cipher Algorithms");
944     MODULE_AUTHOR("Dag Arne Osvik <da@osvik.no>");
945     -MODULE_ALIAS("des");
946     +MODULE_ALIAS_CRYPTO("des");
947     +MODULE_ALIAS_CRYPTO("des-generic");
948     +MODULE_ALIAS_CRYPTO("des3_ede");
949     +MODULE_ALIAS_CRYPTO("des3_ede-generic");
950     diff --git a/crypto/ecb.c b/crypto/ecb.c
951     index 935cfef4aa84..12011aff0971 100644
952     --- a/crypto/ecb.c
953     +++ b/crypto/ecb.c
954     @@ -185,3 +185,4 @@ module_exit(crypto_ecb_module_exit);
955    
956     MODULE_LICENSE("GPL");
957     MODULE_DESCRIPTION("ECB block cipher algorithm");
958     +MODULE_ALIAS_CRYPTO("ecb");
959     diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c
960     index 42ce9f570aec..388f582ab0b9 100644
961     --- a/crypto/eseqiv.c
962     +++ b/crypto/eseqiv.c
963     @@ -267,3 +267,4 @@ module_exit(eseqiv_module_exit);
964    
965     MODULE_LICENSE("GPL");
966     MODULE_DESCRIPTION("Encrypted Sequence Number IV Generator");
967     +MODULE_ALIAS_CRYPTO("eseqiv");
968     diff --git a/crypto/fcrypt.c b/crypto/fcrypt.c
969     index 3b2cf569c684..300f5b80a074 100644
970     --- a/crypto/fcrypt.c
971     +++ b/crypto/fcrypt.c
972     @@ -420,3 +420,4 @@ module_exit(fcrypt_mod_fini);
973     MODULE_LICENSE("Dual BSD/GPL");
974     MODULE_DESCRIPTION("FCrypt Cipher Algorithm");
975     MODULE_AUTHOR("David Howells <dhowells@redhat.com>");
976     +MODULE_ALIAS_CRYPTO("fcrypt");
977     diff --git a/crypto/gcm.c b/crypto/gcm.c
978     index 43e1fb05ea54..b4c252066f7b 100644
979     --- a/crypto/gcm.c
980     +++ b/crypto/gcm.c
981     @@ -1441,6 +1441,7 @@ module_exit(crypto_gcm_module_exit);
982     MODULE_LICENSE("GPL");
983     MODULE_DESCRIPTION("Galois/Counter Mode");
984     MODULE_AUTHOR("Mikko Herranen <mh1@iki.fi>");
985     -MODULE_ALIAS("gcm_base");
986     -MODULE_ALIAS("rfc4106");
987     -MODULE_ALIAS("rfc4543");
988     +MODULE_ALIAS_CRYPTO("gcm_base");
989     +MODULE_ALIAS_CRYPTO("rfc4106");
990     +MODULE_ALIAS_CRYPTO("rfc4543");
991     +MODULE_ALIAS_CRYPTO("gcm");
992     diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
993     index 9d3f0c69a86f..bac70995e064 100644
994     --- a/crypto/ghash-generic.c
995     +++ b/crypto/ghash-generic.c
996     @@ -172,4 +172,5 @@ module_exit(ghash_mod_exit);
997    
998     MODULE_LICENSE("GPL");
999     MODULE_DESCRIPTION("GHASH Message Digest Algorithm");
1000     -MODULE_ALIAS("ghash");
1001     +MODULE_ALIAS_CRYPTO("ghash");
1002     +MODULE_ALIAS_CRYPTO("ghash-generic");
1003     diff --git a/crypto/hmac.c b/crypto/hmac.c
1004     index 8d9544cf8169..ade790b454e9 100644
1005     --- a/crypto/hmac.c
1006     +++ b/crypto/hmac.c
1007     @@ -271,3 +271,4 @@ module_exit(hmac_module_exit);
1008    
1009     MODULE_LICENSE("GPL");
1010     MODULE_DESCRIPTION("HMAC hash algorithm");
1011     +MODULE_ALIAS_CRYPTO("hmac");
1012     diff --git a/crypto/khazad.c b/crypto/khazad.c
1013     index 60e7cd66facc..873eb5ded6d7 100644
1014     --- a/crypto/khazad.c
1015     +++ b/crypto/khazad.c
1016     @@ -880,3 +880,4 @@ module_exit(khazad_mod_fini);
1017    
1018     MODULE_LICENSE("GPL");
1019     MODULE_DESCRIPTION("Khazad Cryptographic Algorithm");
1020     +MODULE_ALIAS_CRYPTO("khazad");
1021     diff --git a/crypto/krng.c b/crypto/krng.c
1022     index a2d2b72fc135..0224841b6579 100644
1023     --- a/crypto/krng.c
1024     +++ b/crypto/krng.c
1025     @@ -62,4 +62,5 @@ module_exit(krng_mod_fini);
1026    
1027     MODULE_LICENSE("GPL");
1028     MODULE_DESCRIPTION("Kernel Random Number Generator");
1029     -MODULE_ALIAS("stdrng");
1030     +MODULE_ALIAS_CRYPTO("stdrng");
1031     +MODULE_ALIAS_CRYPTO("krng");
1032     diff --git a/crypto/lrw.c b/crypto/lrw.c
1033     index ba42acc4deba..6f9908a7ebcb 100644
1034     --- a/crypto/lrw.c
1035     +++ b/crypto/lrw.c
1036     @@ -400,3 +400,4 @@ module_exit(crypto_module_exit);
1037    
1038     MODULE_LICENSE("GPL");
1039     MODULE_DESCRIPTION("LRW block cipher mode");
1040     +MODULE_ALIAS_CRYPTO("lrw");
1041     diff --git a/crypto/lzo.c b/crypto/lzo.c
1042     index 1c2aa69c54b8..d1ff69404353 100644
1043     --- a/crypto/lzo.c
1044     +++ b/crypto/lzo.c
1045     @@ -103,3 +103,4 @@ module_exit(lzo_mod_fini);
1046    
1047     MODULE_LICENSE("GPL");
1048     MODULE_DESCRIPTION("LZO Compression Algorithm");
1049     +MODULE_ALIAS_CRYPTO("lzo");
1050     diff --git a/crypto/md4.c b/crypto/md4.c
1051     index 0477a6a01d58..3515af425cc9 100644
1052     --- a/crypto/md4.c
1053     +++ b/crypto/md4.c
1054     @@ -255,4 +255,4 @@ module_exit(md4_mod_fini);
1055    
1056     MODULE_LICENSE("GPL");
1057     MODULE_DESCRIPTION("MD4 Message Digest Algorithm");
1058     -
1059     +MODULE_ALIAS_CRYPTO("md4");
1060     diff --git a/crypto/md5.c b/crypto/md5.c
1061     index 7febeaab923b..36f5e5b103f3 100644
1062     --- a/crypto/md5.c
1063     +++ b/crypto/md5.c
1064     @@ -168,3 +168,4 @@ module_exit(md5_mod_fini);
1065    
1066     MODULE_LICENSE("GPL");
1067     MODULE_DESCRIPTION("MD5 Message Digest Algorithm");
1068     +MODULE_ALIAS_CRYPTO("md5");
1069     diff --git a/crypto/michael_mic.c b/crypto/michael_mic.c
1070     index 079b761bc70d..46195e0d0f4d 100644
1071     --- a/crypto/michael_mic.c
1072     +++ b/crypto/michael_mic.c
1073     @@ -184,3 +184,4 @@ module_exit(michael_mic_exit);
1074     MODULE_LICENSE("GPL v2");
1075     MODULE_DESCRIPTION("Michael MIC");
1076     MODULE_AUTHOR("Jouni Malinen <j@w1.fi>");
1077     +MODULE_ALIAS_CRYPTO("michael_mic");
1078     diff --git a/crypto/pcbc.c b/crypto/pcbc.c
1079     index d1b8bdfb5855..f654965f0933 100644
1080     --- a/crypto/pcbc.c
1081     +++ b/crypto/pcbc.c
1082     @@ -295,3 +295,4 @@ module_exit(crypto_pcbc_module_exit);
1083    
1084     MODULE_LICENSE("GPL");
1085     MODULE_DESCRIPTION("PCBC block cipher algorithm");
1086     +MODULE_ALIAS_CRYPTO("pcbc");
1087     diff --git a/crypto/pcrypt.c b/crypto/pcrypt.c
1088     index b2c99dc1c5e2..61ff946db748 100644
1089     --- a/crypto/pcrypt.c
1090     +++ b/crypto/pcrypt.c
1091     @@ -565,3 +565,4 @@ module_exit(pcrypt_exit);
1092     MODULE_LICENSE("GPL");
1093     MODULE_AUTHOR("Steffen Klassert <steffen.klassert@secunet.com>");
1094     MODULE_DESCRIPTION("Parallel crypto wrapper");
1095     +MODULE_ALIAS_CRYPTO("pcrypt");
1096     diff --git a/crypto/rmd128.c b/crypto/rmd128.c
1097     index 8a0f68b7f257..049486ede938 100644
1098     --- a/crypto/rmd128.c
1099     +++ b/crypto/rmd128.c
1100     @@ -327,3 +327,4 @@ module_exit(rmd128_mod_fini);
1101     MODULE_LICENSE("GPL");
1102     MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1103     MODULE_DESCRIPTION("RIPEMD-128 Message Digest");
1104     +MODULE_ALIAS_CRYPTO("rmd128");
1105     diff --git a/crypto/rmd160.c b/crypto/rmd160.c
1106     index 525d7bb752cf..de585e51d455 100644
1107     --- a/crypto/rmd160.c
1108     +++ b/crypto/rmd160.c
1109     @@ -371,3 +371,4 @@ module_exit(rmd160_mod_fini);
1110     MODULE_LICENSE("GPL");
1111     MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1112     MODULE_DESCRIPTION("RIPEMD-160 Message Digest");
1113     +MODULE_ALIAS_CRYPTO("rmd160");
1114     diff --git a/crypto/rmd256.c b/crypto/rmd256.c
1115     index 69293d9b56e0..4ec02a754e09 100644
1116     --- a/crypto/rmd256.c
1117     +++ b/crypto/rmd256.c
1118     @@ -346,3 +346,4 @@ module_exit(rmd256_mod_fini);
1119     MODULE_LICENSE("GPL");
1120     MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1121     MODULE_DESCRIPTION("RIPEMD-256 Message Digest");
1122     +MODULE_ALIAS_CRYPTO("rmd256");
1123     diff --git a/crypto/rmd320.c b/crypto/rmd320.c
1124     index 09f97dfdfbba..770f2cb369f8 100644
1125     --- a/crypto/rmd320.c
1126     +++ b/crypto/rmd320.c
1127     @@ -395,3 +395,4 @@ module_exit(rmd320_mod_fini);
1128     MODULE_LICENSE("GPL");
1129     MODULE_AUTHOR("Adrian-Ken Rueegsegger <ken@codelabs.ch>");
1130     MODULE_DESCRIPTION("RIPEMD-320 Message Digest");
1131     +MODULE_ALIAS_CRYPTO("rmd320");
1132     diff --git a/crypto/salsa20_generic.c b/crypto/salsa20_generic.c
1133     index 9a4770c02284..f550b5d94630 100644
1134     --- a/crypto/salsa20_generic.c
1135     +++ b/crypto/salsa20_generic.c
1136     @@ -248,4 +248,5 @@ module_exit(salsa20_generic_mod_fini);
1137    
1138     MODULE_LICENSE("GPL");
1139     MODULE_DESCRIPTION ("Salsa20 stream cipher algorithm");
1140     -MODULE_ALIAS("salsa20");
1141     +MODULE_ALIAS_CRYPTO("salsa20");
1142     +MODULE_ALIAS_CRYPTO("salsa20-generic");
1143     diff --git a/crypto/seed.c b/crypto/seed.c
1144     index 9c904d6d2151..c6ba8438be43 100644
1145     --- a/crypto/seed.c
1146     +++ b/crypto/seed.c
1147     @@ -476,3 +476,4 @@ module_exit(seed_fini);
1148     MODULE_DESCRIPTION("SEED Cipher Algorithm");
1149     MODULE_LICENSE("GPL");
1150     MODULE_AUTHOR("Hye-Shik Chang <perky@FreeBSD.org>, Kim Hyun <hkim@kisa.or.kr>");
1151     +MODULE_ALIAS_CRYPTO("seed");
1152     diff --git a/crypto/seqiv.c b/crypto/seqiv.c
1153     index f2cba4ed6f25..49a4069ff453 100644
1154     --- a/crypto/seqiv.c
1155     +++ b/crypto/seqiv.c
1156     @@ -362,3 +362,4 @@ module_exit(seqiv_module_exit);
1157    
1158     MODULE_LICENSE("GPL");
1159     MODULE_DESCRIPTION("Sequence Number IV Generator");
1160     +MODULE_ALIAS_CRYPTO("seqiv");
1161     diff --git a/crypto/serpent_generic.c b/crypto/serpent_generic.c
1162     index 7ddbd7e88859..94970a794975 100644
1163     --- a/crypto/serpent_generic.c
1164     +++ b/crypto/serpent_generic.c
1165     @@ -665,5 +665,6 @@ module_exit(serpent_mod_fini);
1166     MODULE_LICENSE("GPL");
1167     MODULE_DESCRIPTION("Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm");
1168     MODULE_AUTHOR("Dag Arne Osvik <osvik@ii.uib.no>");
1169     -MODULE_ALIAS("tnepres");
1170     -MODULE_ALIAS("serpent");
1171     +MODULE_ALIAS_CRYPTO("tnepres");
1172     +MODULE_ALIAS_CRYPTO("serpent");
1173     +MODULE_ALIAS_CRYPTO("serpent-generic");
1174     diff --git a/crypto/sha1_generic.c b/crypto/sha1_generic.c
1175     index 42794803c480..fdf7c00de4b0 100644
1176     --- a/crypto/sha1_generic.c
1177     +++ b/crypto/sha1_generic.c
1178     @@ -153,4 +153,5 @@ module_exit(sha1_generic_mod_fini);
1179     MODULE_LICENSE("GPL");
1180     MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
1181    
1182     -MODULE_ALIAS("sha1");
1183     +MODULE_ALIAS_CRYPTO("sha1");
1184     +MODULE_ALIAS_CRYPTO("sha1-generic");
1185     diff --git a/crypto/sha256_generic.c b/crypto/sha256_generic.c
1186     index 543366779524..136381bdd48d 100644
1187     --- a/crypto/sha256_generic.c
1188     +++ b/crypto/sha256_generic.c
1189     @@ -384,5 +384,7 @@ module_exit(sha256_generic_mod_fini);
1190     MODULE_LICENSE("GPL");
1191     MODULE_DESCRIPTION("SHA-224 and SHA-256 Secure Hash Algorithm");
1192    
1193     -MODULE_ALIAS("sha224");
1194     -MODULE_ALIAS("sha256");
1195     +MODULE_ALIAS_CRYPTO("sha224");
1196     +MODULE_ALIAS_CRYPTO("sha224-generic");
1197     +MODULE_ALIAS_CRYPTO("sha256");
1198     +MODULE_ALIAS_CRYPTO("sha256-generic");
1199     diff --git a/crypto/sha512_generic.c b/crypto/sha512_generic.c
1200     index 4c5862095679..fb2d7b8f163f 100644
1201     --- a/crypto/sha512_generic.c
1202     +++ b/crypto/sha512_generic.c
1203     @@ -285,5 +285,7 @@ module_exit(sha512_generic_mod_fini);
1204     MODULE_LICENSE("GPL");
1205     MODULE_DESCRIPTION("SHA-512 and SHA-384 Secure Hash Algorithms");
1206    
1207     -MODULE_ALIAS("sha384");
1208     -MODULE_ALIAS("sha512");
1209     +MODULE_ALIAS_CRYPTO("sha384");
1210     +MODULE_ALIAS_CRYPTO("sha384-generic");
1211     +MODULE_ALIAS_CRYPTO("sha512");
1212     +MODULE_ALIAS_CRYPTO("sha512-generic");
1213     diff --git a/crypto/tea.c b/crypto/tea.c
1214     index 0a572323ee4a..b70b441c7d1e 100644
1215     --- a/crypto/tea.c
1216     +++ b/crypto/tea.c
1217     @@ -270,8 +270,9 @@ static void __exit tea_mod_fini(void)
1218     crypto_unregister_algs(tea_algs, ARRAY_SIZE(tea_algs));
1219     }
1220    
1221     -MODULE_ALIAS("xtea");
1222     -MODULE_ALIAS("xeta");
1223     +MODULE_ALIAS_CRYPTO("tea");
1224     +MODULE_ALIAS_CRYPTO("xtea");
1225     +MODULE_ALIAS_CRYPTO("xeta");
1226    
1227     module_init(tea_mod_init);
1228     module_exit(tea_mod_fini);
1229     diff --git a/crypto/tgr192.c b/crypto/tgr192.c
1230     index 87403556fd0b..f7ed2fba396c 100644
1231     --- a/crypto/tgr192.c
1232     +++ b/crypto/tgr192.c
1233     @@ -676,8 +676,9 @@ static void __exit tgr192_mod_fini(void)
1234     crypto_unregister_shashes(tgr_algs, ARRAY_SIZE(tgr_algs));
1235     }
1236    
1237     -MODULE_ALIAS("tgr160");
1238     -MODULE_ALIAS("tgr128");
1239     +MODULE_ALIAS_CRYPTO("tgr192");
1240     +MODULE_ALIAS_CRYPTO("tgr160");
1241     +MODULE_ALIAS_CRYPTO("tgr128");
1242    
1243     module_init(tgr192_mod_init);
1244     module_exit(tgr192_mod_fini);
1245     diff --git a/crypto/twofish_generic.c b/crypto/twofish_generic.c
1246     index 2d5000552d0f..ebf7a3efb572 100644
1247     --- a/crypto/twofish_generic.c
1248     +++ b/crypto/twofish_generic.c
1249     @@ -211,4 +211,5 @@ module_exit(twofish_mod_fini);
1250    
1251     MODULE_LICENSE("GPL");
1252     MODULE_DESCRIPTION ("Twofish Cipher Algorithm");
1253     -MODULE_ALIAS("twofish");
1254     +MODULE_ALIAS_CRYPTO("twofish");
1255     +MODULE_ALIAS_CRYPTO("twofish-generic");
1256     diff --git a/crypto/vmac.c b/crypto/vmac.c
1257     index 2eb11a30c29c..bf2d3a89845f 100644
1258     --- a/crypto/vmac.c
1259     +++ b/crypto/vmac.c
1260     @@ -713,3 +713,4 @@ module_exit(vmac_module_exit);
1261    
1262     MODULE_LICENSE("GPL");
1263     MODULE_DESCRIPTION("VMAC hash algorithm");
1264     +MODULE_ALIAS_CRYPTO("vmac");
1265     diff --git a/crypto/wp512.c b/crypto/wp512.c
1266     index 180f1d6e03f4..253db94b5479 100644
1267     --- a/crypto/wp512.c
1268     +++ b/crypto/wp512.c
1269     @@ -1167,8 +1167,9 @@ static void __exit wp512_mod_fini(void)
1270     crypto_unregister_shashes(wp_algs, ARRAY_SIZE(wp_algs));
1271     }
1272    
1273     -MODULE_ALIAS("wp384");
1274     -MODULE_ALIAS("wp256");
1275     +MODULE_ALIAS_CRYPTO("wp512");
1276     +MODULE_ALIAS_CRYPTO("wp384");
1277     +MODULE_ALIAS_CRYPTO("wp256");
1278    
1279     module_init(wp512_mod_init);
1280     module_exit(wp512_mod_fini);
1281     diff --git a/crypto/xcbc.c b/crypto/xcbc.c
1282     index a5fbdf3738cf..df90b332554c 100644
1283     --- a/crypto/xcbc.c
1284     +++ b/crypto/xcbc.c
1285     @@ -286,3 +286,4 @@ module_exit(crypto_xcbc_module_exit);
1286    
1287     MODULE_LICENSE("GPL");
1288     MODULE_DESCRIPTION("XCBC keyed hash algorithm");
1289     +MODULE_ALIAS_CRYPTO("xcbc");
1290     diff --git a/crypto/xts.c b/crypto/xts.c
1291     index ca1608f44cb5..f6fd43f100c8 100644
1292     --- a/crypto/xts.c
1293     +++ b/crypto/xts.c
1294     @@ -362,3 +362,4 @@ module_exit(crypto_module_exit);
1295    
1296     MODULE_LICENSE("GPL");
1297     MODULE_DESCRIPTION("XTS block cipher mode");
1298     +MODULE_ALIAS_CRYPTO("xts");
1299     diff --git a/crypto/zlib.c b/crypto/zlib.c
1300     index 06b62e5cdcc7..d98078835281 100644
1301     --- a/crypto/zlib.c
1302     +++ b/crypto/zlib.c
1303     @@ -378,3 +378,4 @@ module_exit(zlib_mod_fini);
1304     MODULE_LICENSE("GPL");
1305     MODULE_DESCRIPTION("Zlib Compression Algorithm");
1306     MODULE_AUTHOR("Sony Corporation");
1307     +MODULE_ALIAS_CRYPTO("zlib");
1308     diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
1309     index 37acda6fa7e4..136803c47cdb 100644
1310     --- a/drivers/ata/libata-sff.c
1311     +++ b/drivers/ata/libata-sff.c
1312     @@ -1333,7 +1333,19 @@ void ata_sff_flush_pio_task(struct ata_port *ap)
1313     DPRINTK("ENTER\n");
1314    
1315     cancel_delayed_work_sync(&ap->sff_pio_task);
1316     +
1317     + /*
1318     + * We wanna reset the HSM state to IDLE. If we do so without
1319     + * grabbing the port lock, critical sections protected by it which
1320     + * expect the HSM state to stay stable may get surprised. For
1321     + * example, we may set IDLE in between the time
1322     + * __ata_sff_port_intr() checks for HSM_ST_IDLE and before it calls
1323     + * ata_sff_hsm_move() causing ata_sff_hsm_move() to BUG().
1324     + */
1325     + spin_lock_irq(ap->lock);
1326     ap->hsm_task_state = HSM_ST_IDLE;
1327     + spin_unlock_irq(ap->lock);
1328     +
1329     ap->sff_pio_task_link = NULL;
1330    
1331     if (ata_msg_ctl(ap))
1332     diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c
1333     index 2e391730e8be..776b59fbe861 100644
1334     --- a/drivers/ata/sata_dwc_460ex.c
1335     +++ b/drivers/ata/sata_dwc_460ex.c
1336     @@ -797,7 +797,7 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq)
1337     if (err) {
1338     dev_err(host_pvt.dwc_dev, "%s: dma_request_interrupts returns"
1339     " %d\n", __func__, err);
1340     - goto error_out;
1341     + return err;
1342     }
1343    
1344     /* Enabe DMA */
1345     @@ -808,11 +808,6 @@ static int dma_dwc_init(struct sata_dwc_device *hsdev, int irq)
1346     sata_dma_regs);
1347    
1348     return 0;
1349     -
1350     -error_out:
1351     - dma_dwc_exit(hsdev);
1352     -
1353     - return err;
1354     }
1355    
1356     static int sata_dwc_scr_read(struct ata_link *link, unsigned int scr, u32 *val)
1357     @@ -1662,7 +1657,7 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1358     char *ver = (char *)&versionr;
1359     u8 *base = NULL;
1360     int err = 0;
1361     - int irq, rc;
1362     + int irq;
1363     struct ata_host *host;
1364     struct ata_port_info pi = sata_dwc_port_info[0];
1365     const struct ata_port_info *ppi[] = { &pi, NULL };
1366     @@ -1725,7 +1720,7 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1367     if (irq == NO_IRQ) {
1368     dev_err(&ofdev->dev, "no SATA DMA irq\n");
1369     err = -ENODEV;
1370     - goto error_out;
1371     + goto error_iomap;
1372     }
1373    
1374     /* Get physical SATA DMA register base address */
1375     @@ -1734,14 +1729,16 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1376     dev_err(&ofdev->dev, "ioremap failed for AHBDMA register"
1377     " address\n");
1378     err = -ENODEV;
1379     - goto error_out;
1380     + goto error_iomap;
1381     }
1382    
1383     /* Save dev for later use in dev_xxx() routines */
1384     host_pvt.dwc_dev = &ofdev->dev;
1385    
1386     /* Initialize AHB DMAC */
1387     - dma_dwc_init(hsdev, irq);
1388     + err = dma_dwc_init(hsdev, irq);
1389     + if (err)
1390     + goto error_dma_iomap;
1391    
1392     /* Enable SATA Interrupts */
1393     sata_dwc_enable_interrupts(hsdev);
1394     @@ -1759,9 +1756,8 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1395     * device discovery process, invoking our port_start() handler &
1396     * error_handler() to execute a dummy Softreset EH session
1397     */
1398     - rc = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht);
1399     -
1400     - if (rc != 0)
1401     + err = ata_host_activate(host, irq, sata_dwc_isr, 0, &sata_dwc_sht);
1402     + if (err)
1403     dev_err(&ofdev->dev, "failed to activate host");
1404    
1405     dev_set_drvdata(&ofdev->dev, host);
1406     @@ -1770,7 +1766,8 @@ static int sata_dwc_probe(struct platform_device *ofdev)
1407     error_out:
1408     /* Free SATA DMA resources */
1409     dma_dwc_exit(hsdev);
1410     -
1411     +error_dma_iomap:
1412     + iounmap((void __iomem *)host_pvt.sata_dma_regs);
1413     error_iomap:
1414     iounmap(base);
1415     error_kmalloc:
1416     @@ -1791,6 +1788,7 @@ static int sata_dwc_remove(struct platform_device *ofdev)
1417     /* Free SATA DMA resources */
1418     dma_dwc_exit(hsdev);
1419    
1420     + iounmap((void __iomem *)host_pvt.sata_dma_regs);
1421     iounmap(hsdev->reg_base);
1422     kfree(hsdev);
1423     kfree(host);
1424     diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
1425     index c24379ffd4e3..b2ae184a637c 100644
1426     --- a/drivers/block/drbd/drbd_req.c
1427     +++ b/drivers/block/drbd/drbd_req.c
1428     @@ -1309,6 +1309,7 @@ int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct
1429     struct request_queue * const b =
1430     mdev->ldev->backing_bdev->bd_disk->queue;
1431     if (b->merge_bvec_fn) {
1432     + bvm->bi_bdev = mdev->ldev->backing_bdev;
1433     backing_limit = b->merge_bvec_fn(b, bvm, bvec);
1434     limit = min(limit, backing_limit);
1435     }
1436     diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
1437     index 5dcc8305abd1..711dcf4a0313 100644
1438     --- a/drivers/bus/mvebu-mbus.c
1439     +++ b/drivers/bus/mvebu-mbus.c
1440     @@ -209,12 +209,25 @@ static void mvebu_mbus_disable_window(struct mvebu_mbus_state *mbus,
1441     }
1442    
1443     /* Checks whether the given window number is available */
1444     +
1445     +/* On Armada XP, 375 and 38x the MBus window 13 has the remap
1446     + * capability, like windows 0 to 7. However, the mvebu-mbus driver
1447     + * isn't currently taking into account this special case, which means
1448     + * that when window 13 is actually used, the remap registers are left
1449     + * to 0, making the device using this MBus window unavailable. The
1450     + * quick fix for stable is to not use window 13. A follow up patch
1451     + * will correctly handle this window.
1452     +*/
1453     static int mvebu_mbus_window_is_free(struct mvebu_mbus_state *mbus,
1454     const int win)
1455     {
1456     void __iomem *addr = mbus->mbuswins_base +
1457     mbus->soc->win_cfg_offset(win);
1458     u32 ctrl = readl(addr + WIN_CTRL_OFF);
1459     +
1460     + if (win == 13)
1461     + return false;
1462     +
1463     return !(ctrl & WIN_CTRL_ENABLE);
1464     }
1465    
1466     diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
1467     index b7960185919d..3dfa3e5e3705 100644
1468     --- a/drivers/clocksource/exynos_mct.c
1469     +++ b/drivers/clocksource/exynos_mct.c
1470     @@ -94,8 +94,8 @@ static void exynos4_mct_write(unsigned int value, unsigned long offset)
1471     __raw_writel(value, reg_base + offset);
1472    
1473     if (likely(offset >= EXYNOS4_MCT_L_BASE(0))) {
1474     - stat_addr = (offset & ~EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
1475     - switch (offset & EXYNOS4_MCT_L_MASK) {
1476     + stat_addr = (offset & EXYNOS4_MCT_L_MASK) + MCT_L_WSTAT_OFFSET;
1477     + switch (offset & ~EXYNOS4_MCT_L_MASK) {
1478     case MCT_L_TCON_OFFSET:
1479     mask = 1 << 3; /* L_TCON write status */
1480     break;
1481     diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
1482     index 633ba945e153..c178ed8c3908 100644
1483     --- a/drivers/crypto/padlock-aes.c
1484     +++ b/drivers/crypto/padlock-aes.c
1485     @@ -563,4 +563,4 @@ MODULE_DESCRIPTION("VIA PadLock AES algorithm support");
1486     MODULE_LICENSE("GPL");
1487     MODULE_AUTHOR("Michal Ludvig");
1488    
1489     -MODULE_ALIAS("aes");
1490     +MODULE_ALIAS_CRYPTO("aes");
1491     diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
1492     index 9266c0e25492..93d7753ab38a 100644
1493     --- a/drivers/crypto/padlock-sha.c
1494     +++ b/drivers/crypto/padlock-sha.c
1495     @@ -593,7 +593,7 @@ MODULE_DESCRIPTION("VIA PadLock SHA1/SHA256 algorithms support.");
1496     MODULE_LICENSE("GPL");
1497     MODULE_AUTHOR("Michal Ludvig");
1498    
1499     -MODULE_ALIAS("sha1-all");
1500     -MODULE_ALIAS("sha256-all");
1501     -MODULE_ALIAS("sha1-padlock");
1502     -MODULE_ALIAS("sha256-padlock");
1503     +MODULE_ALIAS_CRYPTO("sha1-all");
1504     +MODULE_ALIAS_CRYPTO("sha256-all");
1505     +MODULE_ALIAS_CRYPTO("sha1-padlock");
1506     +MODULE_ALIAS_CRYPTO("sha256-padlock");
1507     diff --git a/drivers/crypto/ux500/cryp/cryp_core.c b/drivers/crypto/ux500/cryp/cryp_core.c
1508     index 3833bd71cc5d..e08275de37ef 100644
1509     --- a/drivers/crypto/ux500/cryp/cryp_core.c
1510     +++ b/drivers/crypto/ux500/cryp/cryp_core.c
1511     @@ -1775,7 +1775,7 @@ module_exit(ux500_cryp_mod_fini);
1512     module_param(cryp_mode, int, 0);
1513    
1514     MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 CRYP crypto engine.");
1515     -MODULE_ALIAS("aes-all");
1516     -MODULE_ALIAS("des-all");
1517     +MODULE_ALIAS_CRYPTO("aes-all");
1518     +MODULE_ALIAS_CRYPTO("des-all");
1519    
1520     MODULE_LICENSE("GPL");
1521     diff --git a/drivers/crypto/ux500/hash/hash_core.c b/drivers/crypto/ux500/hash/hash_core.c
1522     index cf5508967539..6789c1653913 100644
1523     --- a/drivers/crypto/ux500/hash/hash_core.c
1524     +++ b/drivers/crypto/ux500/hash/hash_core.c
1525     @@ -1998,7 +1998,7 @@ module_exit(ux500_hash_mod_fini);
1526     MODULE_DESCRIPTION("Driver for ST-Ericsson UX500 HASH engine.");
1527     MODULE_LICENSE("GPL");
1528    
1529     -MODULE_ALIAS("sha1-all");
1530     -MODULE_ALIAS("sha256-all");
1531     -MODULE_ALIAS("hmac-sha1-all");
1532     -MODULE_ALIAS("hmac-sha256-all");
1533     +MODULE_ALIAS_CRYPTO("sha1-all");
1534     +MODULE_ALIAS_CRYPTO("sha256-all");
1535     +MODULE_ALIAS_CRYPTO("hmac-sha1-all");
1536     +MODULE_ALIAS_CRYPTO("hmac-sha256-all");
1537     diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
1538     index c2534d62911c..1d74a80e031e 100644
1539     --- a/drivers/gpio/gpiolib.c
1540     +++ b/drivers/gpio/gpiolib.c
1541     @@ -362,7 +362,7 @@ static ssize_t gpio_value_store(struct device *dev,
1542     return status;
1543     }
1544    
1545     -static const DEVICE_ATTR(value, 0644,
1546     +static DEVICE_ATTR(value, 0644,
1547     gpio_value_show, gpio_value_store);
1548    
1549     static irqreturn_t gpio_sysfs_irq(int irq, void *priv)
1550     @@ -580,17 +580,17 @@ static ssize_t gpio_active_low_store(struct device *dev,
1551     return status ? : size;
1552     }
1553    
1554     -static const DEVICE_ATTR(active_low, 0644,
1555     +static DEVICE_ATTR(active_low, 0644,
1556     gpio_active_low_show, gpio_active_low_store);
1557    
1558     -static const struct attribute *gpio_attrs[] = {
1559     +static struct attribute *gpio_attrs[] = {
1560     &dev_attr_value.attr,
1561     &dev_attr_active_low.attr,
1562     NULL,
1563     };
1564    
1565     static const struct attribute_group gpio_attr_group = {
1566     - .attrs = (struct attribute **) gpio_attrs,
1567     + .attrs = gpio_attrs,
1568     };
1569    
1570     /*
1571     @@ -627,7 +627,7 @@ static ssize_t chip_ngpio_show(struct device *dev,
1572     }
1573     static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL);
1574    
1575     -static const struct attribute *gpiochip_attrs[] = {
1576     +static struct attribute *gpiochip_attrs[] = {
1577     &dev_attr_base.attr,
1578     &dev_attr_label.attr,
1579     &dev_attr_ngpio.attr,
1580     @@ -635,7 +635,7 @@ static const struct attribute *gpiochip_attrs[] = {
1581     };
1582    
1583     static const struct attribute_group gpiochip_attr_group = {
1584     - .attrs = (struct attribute **) gpiochip_attrs,
1585     + .attrs = gpiochip_attrs,
1586     };
1587    
1588     /*
1589     @@ -806,20 +806,24 @@ static int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
1590     if (direction_may_change) {
1591     status = device_create_file(dev, &dev_attr_direction);
1592     if (status)
1593     - goto fail_unregister_device;
1594     + goto fail_remove_attr_group;
1595     }
1596    
1597     if (gpiod_to_irq(desc) >= 0 && (direction_may_change ||
1598     !test_bit(FLAG_IS_OUT, &desc->flags))) {
1599     status = device_create_file(dev, &dev_attr_edge);
1600     if (status)
1601     - goto fail_unregister_device;
1602     + goto fail_remove_attr_direction;
1603     }
1604    
1605     set_bit(FLAG_EXPORT, &desc->flags);
1606     mutex_unlock(&sysfs_lock);
1607     return 0;
1608    
1609     +fail_remove_attr_direction:
1610     + device_remove_file(dev, &dev_attr_direction);
1611     +fail_remove_attr_group:
1612     + sysfs_remove_group(&dev->kobj, &gpio_attr_group);
1613     fail_unregister_device:
1614     device_unregister(dev);
1615     fail_unlock:
1616     @@ -971,6 +975,9 @@ static void gpiod_unexport(struct gpio_desc *desc)
1617     mutex_unlock(&sysfs_lock);
1618    
1619     if (dev) {
1620     + device_remove_file(dev, &dev_attr_edge);
1621     + device_remove_file(dev, &dev_attr_direction);
1622     + sysfs_remove_group(&dev->kobj, &gpio_attr_group);
1623     device_unregister(dev);
1624     put_device(dev);
1625     }
1626     @@ -1036,6 +1043,7 @@ static void gpiochip_unexport(struct gpio_chip *chip)
1627     mutex_lock(&sysfs_lock);
1628     dev = class_find_device(&gpio_class, NULL, chip, match_export);
1629     if (dev) {
1630     + sysfs_remove_group(&dev->kobj, &gpiochip_attr_group);
1631     put_device(dev);
1632     device_unregister(dev);
1633     chip->exported = 0;
1634     diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
1635     index 0a30088178b0..0b71a0aaf4fc 100644
1636     --- a/drivers/gpu/drm/i915/i915_gem.c
1637     +++ b/drivers/gpu/drm/i915/i915_gem.c
1638     @@ -4449,7 +4449,7 @@ static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task)
1639     if (!mutex_is_locked(mutex))
1640     return false;
1641    
1642     -#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_MUTEXES)
1643     +#if defined(CONFIG_SMP) && !defined(CONFIG_DEBUG_MUTEXES)
1644     return mutex->owner == task;
1645     #else
1646     /* Since UP may be pre-empted, we cannot assume that we own the lock */
1647     diff --git a/drivers/md/dm-cache-metadata.c b/drivers/md/dm-cache-metadata.c
1648     index de737ba1d351..b361ce4ce511 100644
1649     --- a/drivers/md/dm-cache-metadata.c
1650     +++ b/drivers/md/dm-cache-metadata.c
1651     @@ -88,6 +88,9 @@ struct cache_disk_superblock {
1652     } __packed;
1653    
1654     struct dm_cache_metadata {
1655     + atomic_t ref_count;
1656     + struct list_head list;
1657     +
1658     struct block_device *bdev;
1659     struct dm_block_manager *bm;
1660     struct dm_space_map *metadata_sm;
1661     @@ -634,10 +637,10 @@ static void unpack_value(__le64 value_le, dm_oblock_t *block, unsigned *flags)
1662    
1663     /*----------------------------------------------------------------*/
1664    
1665     -struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
1666     - sector_t data_block_size,
1667     - bool may_format_device,
1668     - size_t policy_hint_size)
1669     +static struct dm_cache_metadata *metadata_open(struct block_device *bdev,
1670     + sector_t data_block_size,
1671     + bool may_format_device,
1672     + size_t policy_hint_size)
1673     {
1674     int r;
1675     struct dm_cache_metadata *cmd;
1676     @@ -648,6 +651,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
1677     return NULL;
1678     }
1679    
1680     + atomic_set(&cmd->ref_count, 1);
1681     init_rwsem(&cmd->root_lock);
1682     cmd->bdev = bdev;
1683     cmd->data_block_size = data_block_size;
1684     @@ -670,10 +674,95 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
1685     return cmd;
1686     }
1687    
1688     +/*
1689     + * We keep a little list of ref counted metadata objects to prevent two
1690     + * different target instances creating separate bufio instances. This is
1691     + * an issue if a table is reloaded before the suspend.
1692     + */
1693     +static DEFINE_MUTEX(table_lock);
1694     +static LIST_HEAD(table);
1695     +
1696     +static struct dm_cache_metadata *lookup(struct block_device *bdev)
1697     +{
1698     + struct dm_cache_metadata *cmd;
1699     +
1700     + list_for_each_entry(cmd, &table, list)
1701     + if (cmd->bdev == bdev) {
1702     + atomic_inc(&cmd->ref_count);
1703     + return cmd;
1704     + }
1705     +
1706     + return NULL;
1707     +}
1708     +
1709     +static struct dm_cache_metadata *lookup_or_open(struct block_device *bdev,
1710     + sector_t data_block_size,
1711     + bool may_format_device,
1712     + size_t policy_hint_size)
1713     +{
1714     + struct dm_cache_metadata *cmd, *cmd2;
1715     +
1716     + mutex_lock(&table_lock);
1717     + cmd = lookup(bdev);
1718     + mutex_unlock(&table_lock);
1719     +
1720     + if (cmd)
1721     + return cmd;
1722     +
1723     + cmd = metadata_open(bdev, data_block_size, may_format_device, policy_hint_size);
1724     + if (cmd) {
1725     + mutex_lock(&table_lock);
1726     + cmd2 = lookup(bdev);
1727     + if (cmd2) {
1728     + mutex_unlock(&table_lock);
1729     + __destroy_persistent_data_objects(cmd);
1730     + kfree(cmd);
1731     + return cmd2;
1732     + }
1733     + list_add(&cmd->list, &table);
1734     + mutex_unlock(&table_lock);
1735     + }
1736     +
1737     + return cmd;
1738     +}
1739     +
1740     +static bool same_params(struct dm_cache_metadata *cmd, sector_t data_block_size)
1741     +{
1742     + if (cmd->data_block_size != data_block_size) {
1743     + DMERR("data_block_size (%llu) different from that in metadata (%llu)\n",
1744     + (unsigned long long) data_block_size,
1745     + (unsigned long long) cmd->data_block_size);
1746     + return false;
1747     + }
1748     +
1749     + return true;
1750     +}
1751     +
1752     +struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,
1753     + sector_t data_block_size,
1754     + bool may_format_device,
1755     + size_t policy_hint_size)
1756     +{
1757     + struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size,
1758     + may_format_device, policy_hint_size);
1759     + if (cmd && !same_params(cmd, data_block_size)) {
1760     + dm_cache_metadata_close(cmd);
1761     + return NULL;
1762     + }
1763     +
1764     + return cmd;
1765     +}
1766     +
1767     void dm_cache_metadata_close(struct dm_cache_metadata *cmd)
1768     {
1769     - __destroy_persistent_data_objects(cmd);
1770     - kfree(cmd);
1771     + if (atomic_dec_and_test(&cmd->ref_count)) {
1772     + mutex_lock(&table_lock);
1773     + list_del(&cmd->list);
1774     + mutex_unlock(&table_lock);
1775     +
1776     + __destroy_persistent_data_objects(cmd);
1777     + kfree(cmd);
1778     + }
1779     }
1780    
1781     int dm_cache_resize(struct dm_cache_metadata *cmd, dm_cblock_t new_cache_size)
1782     diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
1783     index 2332b5ced0dd..4daf5c03b33b 100644
1784     --- a/drivers/md/raid5.c
1785     +++ b/drivers/md/raid5.c
1786     @@ -2678,7 +2678,8 @@ static int fetch_block(struct stripe_head *sh, struct stripe_head_state *s,
1787     (s->failed >= 2 && fdev[1]->toread) ||
1788     (sh->raid_conf->level <= 5 && s->failed && fdev[0]->towrite &&
1789     !test_bit(R5_OVERWRITE, &fdev[0]->flags)) ||
1790     - (sh->raid_conf->level == 6 && s->failed && s->to_write))) {
1791     + ((sh->raid_conf->level == 6 || sh->sector >= sh->raid_conf->mddev->recovery_cp)
1792     + && s->failed && s->to_write))) {
1793     /* we would like to get this block, possibly by computing it,
1794     * otherwise read it if the backing disk is insync
1795     */
1796     diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
1797     index 9bf47a064cdf..a4694aa20a3e 100644
1798     --- a/drivers/net/can/dev.c
1799     +++ b/drivers/net/can/dev.c
1800     @@ -643,10 +643,14 @@ static int can_changelink(struct net_device *dev,
1801     if (dev->flags & IFF_UP)
1802     return -EBUSY;
1803     cm = nla_data(data[IFLA_CAN_CTRLMODE]);
1804     - if (cm->flags & ~priv->ctrlmode_supported)
1805     +
1806     + /* check whether changed bits are allowed to be modified */
1807     + if (cm->mask & ~priv->ctrlmode_supported)
1808     return -EOPNOTSUPP;
1809     +
1810     + /* clear bits to be modified and copy the flag values */
1811     priv->ctrlmode &= ~cm->mask;
1812     - priv->ctrlmode |= cm->flags;
1813     + priv->ctrlmode |= (cm->flags & cm->mask);
1814     }
1815    
1816     if (data[IFLA_CAN_BITTIMING]) {
1817     diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
1818     index bb7ee9cb00b1..9c9fc69a01b3 100644
1819     --- a/drivers/pinctrl/core.c
1820     +++ b/drivers/pinctrl/core.c
1821     @@ -1693,14 +1693,15 @@ void pinctrl_unregister(struct pinctrl_dev *pctldev)
1822     if (pctldev == NULL)
1823     return;
1824    
1825     - mutex_lock(&pinctrldev_list_mutex);
1826     mutex_lock(&pctldev->mutex);
1827     -
1828     pinctrl_remove_device_debugfs(pctldev);
1829     + mutex_unlock(&pctldev->mutex);
1830    
1831     if (!IS_ERR(pctldev->p))
1832     pinctrl_put(pctldev->p);
1833    
1834     + mutex_lock(&pinctrldev_list_mutex);
1835     + mutex_lock(&pctldev->mutex);
1836     /* TODO: check that no pinmuxes are still active? */
1837     list_del(&pctldev->node);
1838     /* Destroy descriptor tree */
1839     diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c
1840     index 9de41aa14896..6f512fa4fa03 100644
1841     --- a/drivers/s390/crypto/ap_bus.c
1842     +++ b/drivers/s390/crypto/ap_bus.c
1843     @@ -44,6 +44,7 @@
1844     #include <linux/hrtimer.h>
1845     #include <linux/ktime.h>
1846     #include <asm/facility.h>
1847     +#include <linux/crypto.h>
1848    
1849     #include "ap_bus.h"
1850    
1851     diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
1852     index 0ff37a5e286c..f7732f3b9804 100644
1853     --- a/drivers/scsi/ipr.c
1854     +++ b/drivers/scsi/ipr.c
1855     @@ -645,6 +645,7 @@ static void ipr_init_ipr_cmnd(struct ipr_cmnd *ipr_cmd,
1856     ipr_reinit_ipr_cmnd(ipr_cmd);
1857     ipr_cmd->u.scratch = 0;
1858     ipr_cmd->sibling = NULL;
1859     + ipr_cmd->eh_comp = NULL;
1860     ipr_cmd->fast_done = fast_done;
1861     init_timer(&ipr_cmd->timer);
1862     }
1863     @@ -810,6 +811,8 @@ static void ipr_scsi_eh_done(struct ipr_cmnd *ipr_cmd)
1864    
1865     scsi_dma_unmap(ipr_cmd->scsi_cmd);
1866     scsi_cmd->scsi_done(scsi_cmd);
1867     + if (ipr_cmd->eh_comp)
1868     + complete(ipr_cmd->eh_comp);
1869     list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q);
1870     }
1871    
1872     @@ -4767,6 +4770,84 @@ static int ipr_slave_alloc(struct scsi_device *sdev)
1873     return rc;
1874     }
1875    
1876     +/**
1877     + * ipr_match_lun - Match function for specified LUN
1878     + * @ipr_cmd: ipr command struct
1879     + * @device: device to match (sdev)
1880     + *
1881     + * Returns:
1882     + * 1 if command matches sdev / 0 if command does not match sdev
1883     + **/
1884     +static int ipr_match_lun(struct ipr_cmnd *ipr_cmd, void *device)
1885     +{
1886     + if (ipr_cmd->scsi_cmd && ipr_cmd->scsi_cmd->device == device)
1887     + return 1;
1888     + return 0;
1889     +}
1890     +
1891     +/**
1892     + * ipr_wait_for_ops - Wait for matching commands to complete
1893     + * @ipr_cmd: ipr command struct
1894     + * @device: device to match (sdev)
1895     + * @match: match function to use
1896     + *
1897     + * Returns:
1898     + * SUCCESS / FAILED
1899     + **/
1900     +static int ipr_wait_for_ops(struct ipr_ioa_cfg *ioa_cfg, void *device,
1901     + int (*match)(struct ipr_cmnd *, void *))
1902     +{
1903     + struct ipr_cmnd *ipr_cmd;
1904     + int wait;
1905     + unsigned long flags;
1906     + struct ipr_hrr_queue *hrrq;
1907     + signed long timeout = IPR_ABORT_TASK_TIMEOUT;
1908     + DECLARE_COMPLETION_ONSTACK(comp);
1909     +
1910     + ENTER;
1911     + do {
1912     + wait = 0;
1913     +
1914     + for_each_hrrq(hrrq, ioa_cfg) {
1915     + spin_lock_irqsave(hrrq->lock, flags);
1916     + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) {
1917     + if (match(ipr_cmd, device)) {
1918     + ipr_cmd->eh_comp = &comp;
1919     + wait++;
1920     + }
1921     + }
1922     + spin_unlock_irqrestore(hrrq->lock, flags);
1923     + }
1924     +
1925     + if (wait) {
1926     + timeout = wait_for_completion_timeout(&comp, timeout);
1927     +
1928     + if (!timeout) {
1929     + wait = 0;
1930     +
1931     + for_each_hrrq(hrrq, ioa_cfg) {
1932     + spin_lock_irqsave(hrrq->lock, flags);
1933     + list_for_each_entry(ipr_cmd, &hrrq->hrrq_pending_q, queue) {
1934     + if (match(ipr_cmd, device)) {
1935     + ipr_cmd->eh_comp = NULL;
1936     + wait++;
1937     + }
1938     + }
1939     + spin_unlock_irqrestore(hrrq->lock, flags);
1940     + }
1941     +
1942     + if (wait)
1943     + dev_err(&ioa_cfg->pdev->dev, "Timed out waiting for aborted commands\n");
1944     + LEAVE;
1945     + return wait ? FAILED : SUCCESS;
1946     + }
1947     + }
1948     + } while (wait);
1949     +
1950     + LEAVE;
1951     + return SUCCESS;
1952     +}
1953     +
1954     static int ipr_eh_host_reset(struct scsi_cmnd *cmd)
1955     {
1956     struct ipr_ioa_cfg *ioa_cfg;
1957     @@ -4985,11 +5066,17 @@ static int __ipr_eh_dev_reset(struct scsi_cmnd *scsi_cmd)
1958     static int ipr_eh_dev_reset(struct scsi_cmnd *cmd)
1959     {
1960     int rc;
1961     + struct ipr_ioa_cfg *ioa_cfg;
1962     +
1963     + ioa_cfg = (struct ipr_ioa_cfg *) cmd->device->host->hostdata;
1964    
1965     spin_lock_irq(cmd->device->host->host_lock);
1966     rc = __ipr_eh_dev_reset(cmd);
1967     spin_unlock_irq(cmd->device->host->host_lock);
1968    
1969     + if (rc == SUCCESS)
1970     + rc = ipr_wait_for_ops(ioa_cfg, cmd->device, ipr_match_lun);
1971     +
1972     return rc;
1973     }
1974    
1975     @@ -5167,13 +5254,18 @@ static int ipr_eh_abort(struct scsi_cmnd *scsi_cmd)
1976     {
1977     unsigned long flags;
1978     int rc;
1979     + struct ipr_ioa_cfg *ioa_cfg;
1980    
1981     ENTER;
1982    
1983     + ioa_cfg = (struct ipr_ioa_cfg *) scsi_cmd->device->host->hostdata;
1984     +
1985     spin_lock_irqsave(scsi_cmd->device->host->host_lock, flags);
1986     rc = ipr_cancel_op(scsi_cmd);
1987     spin_unlock_irqrestore(scsi_cmd->device->host->host_lock, flags);
1988    
1989     + if (rc == SUCCESS)
1990     + rc = ipr_wait_for_ops(ioa_cfg, scsi_cmd->device, ipr_match_lun);
1991     LEAVE;
1992     return rc;
1993     }
1994     diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
1995     index 07a85ce41782..535f57328a72 100644
1996     --- a/drivers/scsi/ipr.h
1997     +++ b/drivers/scsi/ipr.h
1998     @@ -1578,6 +1578,7 @@ struct ipr_cmnd {
1999     struct scsi_device *sdev;
2000     } u;
2001    
2002     + struct completion *eh_comp;
2003     struct ipr_hrr_queue *hrrq;
2004     struct ipr_ioa_cfg *ioa_cfg;
2005     };
2006     diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
2007     index 301b08496478..1d94316f0ea4 100644
2008     --- a/drivers/xen/swiotlb-xen.c
2009     +++ b/drivers/xen/swiotlb-xen.c
2010     @@ -390,7 +390,7 @@ static void xen_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
2011    
2012     /* NOTE: We use dev_addr here, not paddr! */
2013     if (is_xen_swiotlb_buffer(dev_addr)) {
2014     - swiotlb_tbl_unmap_single(hwdev, dev_addr, size, dir);
2015     + swiotlb_tbl_unmap_single(hwdev, paddr, size, dir);
2016     return;
2017     }
2018    
2019     diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
2020     index e4c4ac07cc32..2a71466b0115 100644
2021     --- a/fs/ext4/ext4.h
2022     +++ b/fs/ext4/ext4.h
2023     @@ -589,6 +589,7 @@ enum {
2024     #define EXT4_FREE_BLOCKS_NO_QUOT_UPDATE 0x0008
2025     #define EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER 0x0010
2026     #define EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER 0x0020
2027     +#define EXT4_FREE_BLOCKS_RESERVE 0x0040
2028    
2029     /*
2030     * Flags used by ext4_discard_partial_page_buffers
2031     diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
2032     index 84d817b842a8..7fbd1c5b74af 100644
2033     --- a/fs/ext4/extents.c
2034     +++ b/fs/ext4/extents.c
2035     @@ -1722,7 +1722,8 @@ static void ext4_ext_try_to_merge_up(handle_t *handle,
2036    
2037     brelse(path[1].p_bh);
2038     ext4_free_blocks(handle, inode, NULL, blk, 1,
2039     - EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET);
2040     + EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET |
2041     + EXT4_FREE_BLOCKS_RESERVE);
2042     }
2043    
2044     /*
2045     diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
2046     index 162b80d527a0..df5050f9080b 100644
2047     --- a/fs/ext4/mballoc.c
2048     +++ b/fs/ext4/mballoc.c
2049     @@ -4610,6 +4610,7 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode,
2050     struct buffer_head *gd_bh;
2051     ext4_group_t block_group;
2052     struct ext4_sb_info *sbi;
2053     + struct ext4_inode_info *ei = EXT4_I(inode);
2054     struct ext4_buddy e4b;
2055     unsigned int count_clusters;
2056     int err = 0;
2057     @@ -4808,7 +4809,6 @@ do_more:
2058     ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh);
2059     ext4_group_desc_csum_set(sb, block_group, gdp);
2060     ext4_unlock_group(sb, block_group);
2061     - percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters);
2062    
2063     if (sbi->s_log_groups_per_flex) {
2064     ext4_group_t flex_group = ext4_flex_group(sbi, block_group);
2065     @@ -4816,10 +4816,23 @@ do_more:
2066     &sbi->s_flex_groups[flex_group].free_clusters);
2067     }
2068    
2069     - ext4_mb_unload_buddy(&e4b);
2070     -
2071     - if (!(flags & EXT4_FREE_BLOCKS_NO_QUOT_UPDATE))
2072     + if (flags & EXT4_FREE_BLOCKS_RESERVE && ei->i_reserved_data_blocks) {
2073     + percpu_counter_add(&sbi->s_dirtyclusters_counter,
2074     + count_clusters);
2075     + spin_lock(&ei->i_block_reservation_lock);
2076     + if (flags & EXT4_FREE_BLOCKS_METADATA)
2077     + ei->i_reserved_meta_blocks += count_clusters;
2078     + else
2079     + ei->i_reserved_data_blocks += count_clusters;
2080     + spin_unlock(&ei->i_block_reservation_lock);
2081     + if (!(flags & EXT4_FREE_BLOCKS_NO_QUOT_UPDATE))
2082     + dquot_reclaim_block(inode,
2083     + EXT4_C2B(sbi, count_clusters));
2084     + } else if (!(flags & EXT4_FREE_BLOCKS_NO_QUOT_UPDATE))
2085     dquot_free_block(inode, EXT4_C2B(sbi, count_clusters));
2086     + percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters);
2087     +
2088     + ext4_mb_unload_buddy(&e4b);
2089    
2090     /* We dirtied the bitmap block */
2091     BUFFER_TRACE(bitmap_bh, "dirtied bitmap block");
2092     diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
2093     index 7a10e047bc33..4f7f451ca70d 100644
2094     --- a/fs/quota/dquot.c
2095     +++ b/fs/quota/dquot.c
2096     @@ -1102,6 +1102,14 @@ static void dquot_claim_reserved_space(struct dquot *dquot, qsize_t number)
2097     dquot->dq_dqb.dqb_rsvspace -= number;
2098     }
2099    
2100     +static void dquot_reclaim_reserved_space(struct dquot *dquot, qsize_t number)
2101     +{
2102     + if (WARN_ON_ONCE(dquot->dq_dqb.dqb_curspace < number))
2103     + number = dquot->dq_dqb.dqb_curspace;
2104     + dquot->dq_dqb.dqb_rsvspace += number;
2105     + dquot->dq_dqb.dqb_curspace -= number;
2106     +}
2107     +
2108     static inline
2109     void dquot_free_reserved_space(struct dquot *dquot, qsize_t number)
2110     {
2111     @@ -1536,6 +1544,15 @@ void inode_claim_rsv_space(struct inode *inode, qsize_t number)
2112     }
2113     EXPORT_SYMBOL(inode_claim_rsv_space);
2114    
2115     +void inode_reclaim_rsv_space(struct inode *inode, qsize_t number)
2116     +{
2117     + spin_lock(&inode->i_lock);
2118     + *inode_reserved_space(inode) += number;
2119     + __inode_sub_bytes(inode, number);
2120     + spin_unlock(&inode->i_lock);
2121     +}
2122     +EXPORT_SYMBOL(inode_reclaim_rsv_space);
2123     +
2124     void inode_sub_rsv_space(struct inode *inode, qsize_t number)
2125     {
2126     spin_lock(&inode->i_lock);
2127     @@ -1710,6 +1727,35 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
2128     EXPORT_SYMBOL(dquot_claim_space_nodirty);
2129    
2130     /*
2131     + * Convert allocated space back to in-memory reserved quotas
2132     + */
2133     +void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
2134     +{
2135     + int cnt;
2136     +
2137     + if (!dquot_active(inode)) {
2138     + inode_reclaim_rsv_space(inode, number);
2139     + return;
2140     + }
2141     +
2142     + down_read(&sb_dqopt(inode->i_sb)->dqptr_sem);
2143     + spin_lock(&dq_data_lock);
2144     + /* Claim reserved quotas to allocated quotas */
2145     + for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
2146     + if (inode->i_dquot[cnt])
2147     + dquot_reclaim_reserved_space(inode->i_dquot[cnt],
2148     + number);
2149     + }
2150     + /* Update inode bytes */
2151     + inode_reclaim_rsv_space(inode, number);
2152     + spin_unlock(&dq_data_lock);
2153     + mark_all_dquot_dirty(inode->i_dquot);
2154     + up_read(&sb_dqopt(inode->i_sb)->dqptr_sem);
2155     + return;
2156     +}
2157     +EXPORT_SYMBOL(dquot_reclaim_space_nodirty);
2158     +
2159     +/*
2160     * This operation can block, but only after everything is updated
2161     */
2162     void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
2163     diff --git a/fs/stat.c b/fs/stat.c
2164     index 04ce1ac20d20..d0ea7ef75e26 100644
2165     --- a/fs/stat.c
2166     +++ b/fs/stat.c
2167     @@ -447,9 +447,8 @@ void inode_add_bytes(struct inode *inode, loff_t bytes)
2168    
2169     EXPORT_SYMBOL(inode_add_bytes);
2170    
2171     -void inode_sub_bytes(struct inode *inode, loff_t bytes)
2172     +void __inode_sub_bytes(struct inode *inode, loff_t bytes)
2173     {
2174     - spin_lock(&inode->i_lock);
2175     inode->i_blocks -= bytes >> 9;
2176     bytes &= 511;
2177     if (inode->i_bytes < bytes) {
2178     @@ -457,6 +456,14 @@ void inode_sub_bytes(struct inode *inode, loff_t bytes)
2179     inode->i_bytes += 512;
2180     }
2181     inode->i_bytes -= bytes;
2182     +}
2183     +
2184     +EXPORT_SYMBOL(__inode_sub_bytes);
2185     +
2186     +void inode_sub_bytes(struct inode *inode, loff_t bytes)
2187     +{
2188     + spin_lock(&inode->i_lock);
2189     + __inode_sub_bytes(inode, bytes);
2190     spin_unlock(&inode->i_lock);
2191     }
2192    
2193     diff --git a/include/linux/crypto.h b/include/linux/crypto.h
2194     index b92eadf92d72..2b00d92a6e6f 100644
2195     --- a/include/linux/crypto.h
2196     +++ b/include/linux/crypto.h
2197     @@ -26,6 +26,19 @@
2198     #include <linux/uaccess.h>
2199    
2200     /*
2201     + * Autoloaded crypto modules should only use a prefixed name to avoid allowing
2202     + * arbitrary modules to be loaded. Loading from userspace may still need the
2203     + * unprefixed names, so retains those aliases as well.
2204     + * This uses __MODULE_INFO directly instead of MODULE_ALIAS because pre-4.3
2205     + * gcc (e.g. avr32 toolchain) uses __LINE__ for uniqueness, and this macro
2206     + * expands twice on the same line. Instead, use a separate base name for the
2207     + * alias.
2208     + */
2209     +#define MODULE_ALIAS_CRYPTO(name) \
2210     + __MODULE_INFO(alias, alias_userspace, name); \
2211     + __MODULE_INFO(alias, alias_crypto, "crypto-" name)
2212     +
2213     +/*
2214     * Algorithm masks and types.
2215     */
2216     #define CRYPTO_ALG_TYPE_MASK 0x0000000f
2217     diff --git a/include/linux/fs.h b/include/linux/fs.h
2218     index 65c2be22b601..d57bc5df7225 100644
2219     --- a/include/linux/fs.h
2220     +++ b/include/linux/fs.h
2221     @@ -2489,6 +2489,7 @@ extern void generic_fillattr(struct inode *, struct kstat *);
2222     extern int vfs_getattr(struct path *, struct kstat *);
2223     void __inode_add_bytes(struct inode *inode, loff_t bytes);
2224     void inode_add_bytes(struct inode *inode, loff_t bytes);
2225     +void __inode_sub_bytes(struct inode *inode, loff_t bytes);
2226     void inode_sub_bytes(struct inode *inode, loff_t bytes);
2227     loff_t inode_get_bytes(struct inode *inode);
2228     void inode_set_bytes(struct inode *inode, loff_t bytes);
2229     diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
2230     index 1c50093ae656..6965fe394c3b 100644
2231     --- a/include/linux/quotaops.h
2232     +++ b/include/linux/quotaops.h
2233     @@ -41,6 +41,7 @@ void __quota_error(struct super_block *sb, const char *func,
2234     void inode_add_rsv_space(struct inode *inode, qsize_t number);
2235     void inode_claim_rsv_space(struct inode *inode, qsize_t number);
2236     void inode_sub_rsv_space(struct inode *inode, qsize_t number);
2237     +void inode_reclaim_rsv_space(struct inode *inode, qsize_t number);
2238    
2239     void dquot_initialize(struct inode *inode);
2240     void dquot_drop(struct inode *inode);
2241     @@ -59,6 +60,7 @@ int dquot_alloc_inode(const struct inode *inode);
2242    
2243     int dquot_claim_space_nodirty(struct inode *inode, qsize_t number);
2244     void dquot_free_inode(const struct inode *inode);
2245     +void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number);
2246    
2247     int dquot_disable(struct super_block *sb, int type, unsigned int flags);
2248     /* Suspend quotas on remount RO */
2249     @@ -238,6 +240,13 @@ static inline int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
2250     return 0;
2251     }
2252    
2253     +static inline int dquot_reclaim_space_nodirty(struct inode *inode,
2254     + qsize_t number)
2255     +{
2256     + inode_sub_bytes(inode, number);
2257     + return 0;
2258     +}
2259     +
2260     static inline int dquot_disable(struct super_block *sb, int type,
2261     unsigned int flags)
2262     {
2263     @@ -336,6 +345,12 @@ static inline int dquot_claim_block(struct inode *inode, qsize_t nr)
2264     return ret;
2265     }
2266    
2267     +static inline void dquot_reclaim_block(struct inode *inode, qsize_t nr)
2268     +{
2269     + dquot_reclaim_space_nodirty(inode, nr << inode->i_blkbits);
2270     + mark_inode_dirty_sync(inode);
2271     +}
2272     +
2273     static inline void dquot_free_space_nodirty(struct inode *inode, qsize_t nr)
2274     {
2275     __dquot_free_space(inode, nr, 0);
2276     diff --git a/include/linux/time.h b/include/linux/time.h
2277     index d5d229b2e5af..7d532a32ff3a 100644
2278     --- a/include/linux/time.h
2279     +++ b/include/linux/time.h
2280     @@ -173,6 +173,19 @@ extern void getboottime(struct timespec *ts);
2281     extern void monotonic_to_bootbased(struct timespec *ts);
2282     extern void get_monotonic_boottime(struct timespec *ts);
2283    
2284     +static inline bool timeval_valid(const struct timeval *tv)
2285     +{
2286     + /* Dates before 1970 are bogus */
2287     + if (tv->tv_sec < 0)
2288     + return false;
2289     +
2290     + /* Can't have more microseconds then a second */
2291     + if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC)
2292     + return false;
2293     +
2294     + return true;
2295     +}
2296     +
2297     extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
2298     extern int timekeeping_valid_for_hres(void);
2299     extern u64 timekeeping_max_deferment(void);
2300     diff --git a/kernel/time.c b/kernel/time.c
2301     index d21398e6da87..31ec845d0e80 100644
2302     --- a/kernel/time.c
2303     +++ b/kernel/time.c
2304     @@ -195,6 +195,10 @@ SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv,
2305     if (tv) {
2306     if (copy_from_user(&user_tv, tv, sizeof(*tv)))
2307     return -EFAULT;
2308     +
2309     + if (!timeval_valid(&user_tv))
2310     + return -EINVAL;
2311     +
2312     new_ts.tv_sec = user_tv.tv_sec;
2313     new_ts.tv_nsec = user_tv.tv_usec * NSEC_PER_USEC;
2314     }
2315     diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
2316     index af8d1d4f3d55..28db9bedc857 100644
2317     --- a/kernel/time/ntp.c
2318     +++ b/kernel/time/ntp.c
2319     @@ -631,6 +631,13 @@ int ntp_validate_timex(struct timex *txc)
2320     if ((txc->modes & ADJ_SETOFFSET) && (!capable(CAP_SYS_TIME)))
2321     return -EPERM;
2322    
2323     + if (txc->modes & ADJ_FREQUENCY) {
2324     + if (LONG_MIN / PPM_SCALE > txc->freq)
2325     + return -EINVAL;
2326     + if (LONG_MAX / PPM_SCALE < txc->freq)
2327     + return -EINVAL;
2328     + }
2329     +
2330     return 0;
2331     }
2332    
2333     diff --git a/net/netfilter/ipvs/ip_vs_ftp.c b/net/netfilter/ipvs/ip_vs_ftp.c
2334     index 77c173282f38..4a662f15eaee 100644
2335     --- a/net/netfilter/ipvs/ip_vs_ftp.c
2336     +++ b/net/netfilter/ipvs/ip_vs_ftp.c
2337     @@ -183,6 +183,8 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp,
2338     struct nf_conn *ct;
2339     struct net *net;
2340    
2341     + *diff = 0;
2342     +
2343     #ifdef CONFIG_IP_VS_IPV6
2344     /* This application helper doesn't work with IPv6 yet,
2345     * so turn this into a no-op for IPv6 packets
2346     @@ -191,8 +193,6 @@ static int ip_vs_ftp_out(struct ip_vs_app *app, struct ip_vs_conn *cp,
2347     return 1;
2348     #endif
2349    
2350     - *diff = 0;
2351     -
2352     /* Only useful for established sessions */
2353     if (cp->state != IP_VS_TCP_S_ESTABLISHED)
2354     return 1;
2355     @@ -321,6 +321,9 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
2356     struct ip_vs_conn *n_cp;
2357     struct net *net;
2358    
2359     + /* no diff required for incoming packets */
2360     + *diff = 0;
2361     +
2362     #ifdef CONFIG_IP_VS_IPV6
2363     /* This application helper doesn't work with IPv6 yet,
2364     * so turn this into a no-op for IPv6 packets
2365     @@ -329,9 +332,6 @@ static int ip_vs_ftp_in(struct ip_vs_app *app, struct ip_vs_conn *cp,
2366     return 1;
2367     #endif
2368    
2369     - /* no diff required for incoming packets */
2370     - *diff = 0;
2371     -
2372     /* Only useful for established sessions */
2373     if (cp->state != IP_VS_TCP_S_ESTABLISHED)
2374     return 1;
2375     diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
2376     index 858966ab019c..679218b56ede 100755
2377     --- a/scripts/recordmcount.pl
2378     +++ b/scripts/recordmcount.pl
2379     @@ -262,7 +262,6 @@ if ($arch eq "x86_64") {
2380     # force flags for this arch
2381     $ld .= " -m shlelf_linux";
2382     $objcopy .= " -O elf32-sh-linux";
2383     - $cc .= " -m32";
2384    
2385     } elsif ($arch eq "powerpc") {
2386     $local_regex = "^[0-9a-fA-F]+\\s+t\\s+(\\.?\\S+)";
2387     diff --git a/security/keys/gc.c b/security/keys/gc.c
2388     index d67c97bb1025..797818695c87 100644
2389     --- a/security/keys/gc.c
2390     +++ b/security/keys/gc.c
2391     @@ -201,12 +201,12 @@ static noinline void key_gc_unused_keys(struct list_head *keys)
2392     if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags))
2393     atomic_dec(&key->user->nikeys);
2394    
2395     - key_user_put(key->user);
2396     -
2397     /* now throw away the key memory */
2398     if (key->type->destroy)
2399     key->type->destroy(key);
2400    
2401     + key_user_put(key->user);
2402     +
2403     kfree(key->description);
2404    
2405     #ifdef KEY_DEBUGGING
2406     diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
2407     index be4db47cb2d9..061be0e5fa5a 100644
2408     --- a/sound/usb/mixer.c
2409     +++ b/sound/usb/mixer.c
2410     @@ -886,6 +886,7 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval,
2411     case USB_ID(0x046d, 0x0807): /* Logitech Webcam C500 */
2412     case USB_ID(0x046d, 0x0808):
2413     case USB_ID(0x046d, 0x0809):
2414     + case USB_ID(0x046d, 0x0819): /* Logitech Webcam C210 */
2415     case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */
2416     case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */
2417     case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */