crypto: marvell/cesa - Fix type mismatch warning
authorArnd Bergmann <arnd@arndb.de>
Tue, 23 May 2023 08:33:04 +0000 (10:33 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 2 Jun 2023 10:21:32 +0000 (18:21 +0800)
Commit df8fc4e934c1 ("kbuild: Enable -fstrict-flex-arrays=3") uncovered
a type mismatch in cesa 3des support that leads to a memcpy beyond the
end of a structure:

In function 'fortify_memcpy_chk',
    inlined from 'mv_cesa_des3_ede_setkey' at drivers/crypto/marvell/cesa/cipher.c:307:2:
include/linux/fortify-string.h:583:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
  583 |                         __write_overflow_field(p_size_field, size);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is probably harmless as the actual data that is copied has the correct
type, but clearly worth fixing nonetheless.

Fixes: 4ada48397823 ("crypto: marvell/cesa - add Triple-DES support")
Cc: Kees Cook <keescook@chromium.org>
Cc: Gustavo A. R. Silva" <gustavoars@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/marvell/cesa/cipher.c

index c6f2fa7..0f37dfd 100644 (file)
@@ -297,7 +297,7 @@ static int mv_cesa_des_setkey(struct crypto_skcipher *cipher, const u8 *key,
 static int mv_cesa_des3_ede_setkey(struct crypto_skcipher *cipher,
                                   const u8 *key, unsigned int len)
 {
-       struct mv_cesa_des_ctx *ctx = crypto_skcipher_ctx(cipher);
+       struct mv_cesa_des3_ctx *ctx = crypto_skcipher_ctx(cipher);
        int err;
 
        err = verify_skcipher_des3_key(cipher, key);