forked from Minki/linux
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fix from Herbert Xu: "Fix a memory corruption in the padlock-aes driver" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: padlock-aes - Fix Nano workaround data corruption
This commit is contained in:
commit
7123fd41e3
@ -266,6 +266,8 @@ static inline void padlock_xcrypt_ecb(const u8 *input, u8 *output, void *key,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count -= initial;
|
||||||
|
|
||||||
if (initial)
|
if (initial)
|
||||||
asm volatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */
|
asm volatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */
|
||||||
: "+S"(input), "+D"(output)
|
: "+S"(input), "+D"(output)
|
||||||
@ -273,7 +275,7 @@ static inline void padlock_xcrypt_ecb(const u8 *input, u8 *output, void *key,
|
|||||||
|
|
||||||
asm volatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */
|
asm volatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */
|
||||||
: "+S"(input), "+D"(output)
|
: "+S"(input), "+D"(output)
|
||||||
: "d"(control_word), "b"(key), "c"(count - initial));
|
: "d"(control_word), "b"(key), "c"(count));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u8 *padlock_xcrypt_cbc(const u8 *input, u8 *output, void *key,
|
static inline u8 *padlock_xcrypt_cbc(const u8 *input, u8 *output, void *key,
|
||||||
@ -284,6 +286,8 @@ static inline u8 *padlock_xcrypt_cbc(const u8 *input, u8 *output, void *key,
|
|||||||
if (count < cbc_fetch_blocks)
|
if (count < cbc_fetch_blocks)
|
||||||
return cbc_crypt(input, output, key, iv, control_word, count);
|
return cbc_crypt(input, output, key, iv, control_word, count);
|
||||||
|
|
||||||
|
count -= initial;
|
||||||
|
|
||||||
if (initial)
|
if (initial)
|
||||||
asm volatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */
|
asm volatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */
|
||||||
: "+S" (input), "+D" (output), "+a" (iv)
|
: "+S" (input), "+D" (output), "+a" (iv)
|
||||||
@ -291,7 +295,7 @@ static inline u8 *padlock_xcrypt_cbc(const u8 *input, u8 *output, void *key,
|
|||||||
|
|
||||||
asm volatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */
|
asm volatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */
|
||||||
: "+S" (input), "+D" (output), "+a" (iv)
|
: "+S" (input), "+D" (output), "+a" (iv)
|
||||||
: "d" (control_word), "b" (key), "c" (count-initial));
|
: "d" (control_word), "b" (key), "c" (count));
|
||||||
return iv;
|
return iv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user