crypto: testmgr - handle endianness correctly in alg_test_crc32c()
The crc32c context is in CPU endianness, whereas the final digest is little endian. alg_test_crc32c() got this mixed up. Fix it. The test passes both before and after, but this patch fixes the following sparse warning: crypto/testmgr.c:1912:24: warning: cast to restricted __le32 Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Родитель
73381da5f9
Коммит
cb9dde8801
|
@ -1889,7 +1889,7 @@ static int alg_test_crc32c(const struct alg_test_desc *desc,
|
|||
const char *driver, u32 type, u32 mask)
|
||||
{
|
||||
struct crypto_shash *tfm;
|
||||
u32 val;
|
||||
__le32 val;
|
||||
int err;
|
||||
|
||||
err = alg_test_hash(desc, driver, type, mask);
|
||||
|
@ -1911,7 +1911,7 @@ static int alg_test_crc32c(const struct alg_test_desc *desc,
|
|||
shash->tfm = tfm;
|
||||
shash->flags = 0;
|
||||
|
||||
*ctx = le32_to_cpu(420553207);
|
||||
*ctx = 420553207;
|
||||
err = crypto_shash_final(shash, (u8 *)&val);
|
||||
if (err) {
|
||||
printk(KERN_ERR "alg: crc32c: Operation failed for "
|
||||
|
@ -1919,9 +1919,9 @@ static int alg_test_crc32c(const struct alg_test_desc *desc,
|
|||
break;
|
||||
}
|
||||
|
||||
if (val != ~420553207) {
|
||||
printk(KERN_ERR "alg: crc32c: Test failed for %s: "
|
||||
"%d\n", driver, val);
|
||||
if (val != cpu_to_le32(~420553207)) {
|
||||
pr_err("alg: crc32c: Test failed for %s: %u\n",
|
||||
driver, le32_to_cpu(val));
|
||||
err = -EINVAL;
|
||||
}
|
||||
} while (0);
|
||||
|
|
Загрузка…
Ссылка в новой задаче