]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: ccp - Fix a crash due to incorrect cleanup usage of kfree
authorElla Ma <alansnape3058@gmail.com>
Fri, 9 Jan 2026 15:17:24 +0000 (16:17 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Jan 2026 08:09:32 +0000 (16:09 +0800)
Annotating a local pointer variable, which will be assigned with the
kmalloc-family functions, with the `__cleanup(kfree)` attribute will
make the address of the local variable, rather than the address returned
by kmalloc, passed to kfree directly and lead to a crash due to invalid
deallocation of stack address. According to other places in the repo,
the correct usage should be `__free(kfree)`. The code coincidentally
compiled because the parameter type `void *` of kfree is compatible with
the desired type `struct { ... } **`.

Fixes: a71475582ada ("crypto: ccp - reduce stack usage in ccp_run_aes_gcm_cmd")
Signed-off-by: Ella Ma <alansnape3058@gmail.com>
Acked-by: Tom Lendacky <thomas.lendacky@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccp/ccp-ops.c

index d78865d9d5f09c8fa9fa41b9255504bf0fed8795..d0412e58476253adb123ec353527e94f857f7f86 100644 (file)
@@ -642,7 +642,7 @@ ccp_run_aes_gcm_cmd(struct ccp_cmd_queue *cmd_q, struct ccp_cmd *cmd)
                struct ccp_data dst;
                struct ccp_data aad;
                struct ccp_op op;
-       } *wa __cleanup(kfree) = kzalloc(sizeof *wa, GFP_KERNEL);
+       } *wa __free(kfree) = kzalloc(sizeof(*wa), GFP_KERNEL);
        unsigned int dm_offset;
        unsigned int authsize;
        unsigned int jobid;