diff options
author | Eric Biggers <ebiggers@google.com> | 2019-01-10 12:17:55 -0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2019-01-18 18:43:43 +0800 |
commit | cb9dde8801292e31e3964236a72f04926cf500b7 (patch) | |
tree | 89fb81c6f85ad61d82f72fed0c33439ace6c394e /crypto | |
parent | 73381da5f9ec333b1fbe38a156e7764a90e36a74 (diff) | |
download | lwn-cb9dde8801292e31e3964236a72f04926cf500b7.tar.gz lwn-cb9dde8801292e31e3964236a72f04926cf500b7.zip |
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>
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/testmgr.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/crypto/testmgr.c b/crypto/testmgr.c index 1ce53f8058d2..fd31cfa872fb 100644 --- a/crypto/testmgr.c +++ b/crypto/testmgr.c @@ -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); |