Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2654 - (show annotations) (download)
Tue Jul 21 16:20:22 2015 UTC (8 years, 9 months ago) by niro
File size: 81427 byte(s)
-linux-3.10.67
1 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 */