diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2009-07-15 06:37:48 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2009-07-15 06:37:48 -0400 |
commit | faae890883624e14a328863eafabf54a36698774 (patch) | |
tree | 647d5c14ed5ced5e20792a591a79b0c7a207fdcb /drivers/crypto | |
parent | b5ebd44eb7559ea6135d536bafd02323d2ef0547 (diff) |
crypto: padlock - Fix compile error on i386
The previous change to allow hashing from states other than the
initial broke compilation on i386 because the inline assembly
tried to squeeze a u64 into a 32-bit register. As we've already
checked for 32-bit overflows we can simply truncate it to u32,
or unsigned long so that we don't truncate at all on x86-64.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/padlock-sha.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c index fb6e6c343148..a936ba49b390 100644 --- a/drivers/crypto/padlock-sha.c +++ b/drivers/crypto/padlock-sha.c | |||
@@ -103,7 +103,8 @@ static int padlock_sha1_finup(struct shash_desc *desc, const u8 *in, | |||
103 | ts_state = irq_ts_save(); | 103 | ts_state = irq_ts_save(); |
104 | asm volatile (".byte 0xf3,0x0f,0xa6,0xc8" /* rep xsha1 */ | 104 | asm volatile (".byte 0xf3,0x0f,0xa6,0xc8" /* rep xsha1 */ |
105 | : \ | 105 | : \ |
106 | : "c"(state.count + count), "a"(state.count), \ | 106 | : "c"((unsigned long)state.count + count), \ |
107 | "a"((unsigned long)state.count), \ | ||
107 | "S"(in), "D"(result)); | 108 | "S"(in), "D"(result)); |
108 | irq_ts_restore(ts_state); | 109 | irq_ts_restore(ts_state); |
109 | 110 | ||
@@ -165,7 +166,8 @@ static int padlock_sha256_finup(struct shash_desc *desc, const u8 *in, | |||
165 | ts_state = irq_ts_save(); | 166 | ts_state = irq_ts_save(); |
166 | asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */ | 167 | asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */ |
167 | : \ | 168 | : \ |
168 | : "c"(state.count + count), "a"(state.count), \ | 169 | : "c"((unsigned long)state.count + count), \ |
170 | "a"((unsigned long)state.count), \ | ||
169 | "S"(in), "D"(result)); | 171 | "S"(in), "D"(result)); |
170 | irq_ts_restore(ts_state); | 172 | irq_ts_restore(ts_state); |
171 | 173 | ||