aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto')
-rw-r--r--drivers/crypto/padlock-aes.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/crypto/padlock-aes.c b/drivers/crypto/padlock-aes.c
index 71407c578afe..963e03dcb1ba 100644
--- a/drivers/crypto/padlock-aes.c
+++ b/drivers/crypto/padlock-aes.c
@@ -99,9 +99,6 @@ byte(const uint32_t x, const unsigned n)
99 return x >> (n << 3); 99 return x >> (n << 3);
100} 100}
101 101
102#define uint32_t_in(x) le32_to_cpu(*(const uint32_t *)(x))
103#define uint32_t_out(to, from) (*(uint32_t *)(to) = cpu_to_le32(from))
104
105#define E_KEY ctx->E 102#define E_KEY ctx->E
106#define D_KEY ctx->D 103#define D_KEY ctx->D
107 104
@@ -294,6 +291,7 @@ static int
294aes_set_key(void *ctx_arg, const uint8_t *in_key, unsigned int key_len, uint32_t *flags) 291aes_set_key(void *ctx_arg, const uint8_t *in_key, unsigned int key_len, uint32_t *flags)
295{ 292{
296 struct aes_ctx *ctx = aes_ctx(ctx_arg); 293 struct aes_ctx *ctx = aes_ctx(ctx_arg);
294 const __le32 *key = (const __le32 *)in_key;
297 uint32_t i, t, u, v, w; 295 uint32_t i, t, u, v, w;
298 uint32_t P[AES_EXTENDED_KEY_SIZE]; 296 uint32_t P[AES_EXTENDED_KEY_SIZE];
299 uint32_t rounds; 297 uint32_t rounds;
@@ -313,10 +311,10 @@ aes_set_key(void *ctx_arg, const uint8_t *in_key, unsigned int key_len, uint32_t
313 ctx->E = ctx->e_data; 311 ctx->E = ctx->e_data;
314 ctx->D = ctx->e_data; 312 ctx->D = ctx->e_data;
315 313
316 E_KEY[0] = uint32_t_in (in_key); 314 E_KEY[0] = le32_to_cpu(key[0]);
317 E_KEY[1] = uint32_t_in (in_key + 4); 315 E_KEY[1] = le32_to_cpu(key[1]);
318 E_KEY[2] = uint32_t_in (in_key + 8); 316 E_KEY[2] = le32_to_cpu(key[2]);
319 E_KEY[3] = uint32_t_in (in_key + 12); 317 E_KEY[3] = le32_to_cpu(key[3]);
320 318
321 /* Prepare control words. */ 319 /* Prepare control words. */
322 memset(&ctx->cword, 0, sizeof(ctx->cword)); 320 memset(&ctx->cword, 0, sizeof(ctx->cword));
@@ -343,17 +341,17 @@ aes_set_key(void *ctx_arg, const uint8_t *in_key, unsigned int key_len, uint32_t
343 break; 341 break;
344 342
345 case 24: 343 case 24:
346 E_KEY[4] = uint32_t_in (in_key + 16); 344 E_KEY[4] = le32_to_cpu(key[4]);
347 t = E_KEY[5] = uint32_t_in (in_key + 20); 345 t = E_KEY[5] = le32_to_cpu(key[5]);
348 for (i = 0; i < 8; ++i) 346 for (i = 0; i < 8; ++i)
349 loop6 (i); 347 loop6 (i);
350 break; 348 break;
351 349
352 case 32: 350 case 32:
353 E_KEY[4] = uint32_t_in (in_key + 16); 351 E_KEY[4] = le32_to_cpu(in_key[4]);
354 E_KEY[5] = uint32_t_in (in_key + 20); 352 E_KEY[5] = le32_to_cpu(in_key[5]);
355 E_KEY[6] = uint32_t_in (in_key + 24); 353 E_KEY[6] = le32_to_cpu(in_key[6]);
356 t = E_KEY[7] = uint32_t_in (in_key + 28); 354 t = E_KEY[7] = le32_to_cpu(in_key[7]);
357 for (i = 0; i < 7; ++i) 355 for (i = 0; i < 7; ++i)
358 loop8 (i); 356 loop8 (i);
359 break; 357 break;