• Gustavo A. R. Silva's avatar
    crypto: p10-aes-gcm - Avoid -Wstringop-overflow warnings · aaa03fdb
    Gustavo A. R. Silva authored
    The compiler doesn't know that `32` is an offset into the Hash table:
    
     56 struct Hash_ctx {
     57         u8 H[16];       /* subkey */
     58         u8 Htable[256]; /* Xi, Hash table(offset 32) */
     59 };
    
    So, it legitimately complains about a potential out-of-bounds issue
    if `256 bytes` are accessed in `htable` (this implies going
    `32 bytes` beyond the boundaries of `Htable`):
    
    arch/powerpc/crypto/aes-gcm-p10-glue.c: In function 'gcmp10_init':
    arch/powerpc/crypto/aes-gcm-p10-glue.c:120:9: error: 'gcm_init_htable' accessing 256 bytes in a region of size 224 [-Werror=stringop-overflow=]
      120 |         gcm_init_htable(hash->Htable+32, hash->H);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    arch/powerpc/crypto/aes-gcm-p10-glue.c:120:9: note: referencing argument 1 of type 'unsigned char[256]'
    arch/powerpc/crypto/aes-gcm-p10-glue.c:120:9: note: referencing argument 2 of type 'unsigned char[16]'
    arch/powerpc/crypto/aes-gcm-p10-glue.c:40:17: note: in a call to function 'gcm_init_htable'
       40 | asmlinkage void gcm_init_htable(unsigned char htable[256], unsigned char Xi[16]);
          |                 ^~~~~~~~~~~~~~~
    
    Address this by avoiding specifying the size of `htable` in the function
    prototype; and just for consistency, do the same for parameter `Xi`.
    Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
    Closes: https://lore.kernel.org/linux-next/20231121131903.68a37932@canb.auug.org.au/Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    aaa03fdb
aes-gcm-p10-glue.c 7.92 KB