dm crypt: Fix reqsize in crypt_iv_eboiv_gen
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 6 Oct 2023 01:41:55 +0000 (09:41 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 6 Oct 2023 02:39:18 +0000 (10:39 +0800)
A skcipher_request object is made up of struct skcipher_request
followed by a variable-sized trailer.  The allocation of the
skcipher_request and IV in crypt_iv_eboiv_gen is missing the
memory for struct skcipher_request.  Fix it by adding it to
reqsize.

Fixes: e3023094dffb ("dm crypt: Avoid using MAX_CIPHER_BLOCKSIZE")
Cc: <stable@vger.kernel.org> #6.5+
Reported-by: Tatu Heikkilä <tatu.heikkila@gmail.com>
Reviewed-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/md/dm-crypt.c

index f2662c2..5315fd2 100644 (file)
@@ -753,7 +753,8 @@ static int crypt_iv_eboiv_gen(struct crypt_config *cc, u8 *iv,
        int err;
        u8 *buf;
 
-       reqsize = ALIGN(crypto_skcipher_reqsize(tfm), __alignof__(__le64));
+       reqsize = sizeof(*req) + crypto_skcipher_reqsize(tfm);
+       reqsize = ALIGN(reqsize, __alignof__(__le64));
 
        req = kmalloc(reqsize + cc->iv_size, GFP_NOIO);
        if (!req)