]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: iaa - Fix async_disable descriptor leak
authorTom Zanussi <tom.zanussi@linux.intel.com>
Sun, 25 Feb 2024 20:11:33 +0000 (14:11 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 13 Apr 2024 11:10:07 +0000 (13:10 +0200)
[ Upstream commit 262534ddc88dfea7474ed18adfecf856e4fbe054 ]

The disable_async paths of iaa_compress/decompress() don't free idxd
descriptors in the async_disable case. Currently this only happens in
the testcases where req->dst is set to null. Add a test to free them
in those paths.

Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/intel/iaa/iaa_crypto_main.c

index aa65c1791ce7671c7d69bdeefdd648adae7d9263..64a2e87a55b3c7c0002db7447f20897b6c4e7e4a 100644 (file)
@@ -1328,7 +1328,7 @@ static int iaa_compress(struct crypto_tfm *tfm,   struct acomp_req *req,
 
        *compression_crc = idxd_desc->iax_completion->crc;
 
-       if (!ctx->async_mode)
+       if (!ctx->async_mode || disable_async)
                idxd_free_desc(wq, idxd_desc);
 out:
        return ret;
@@ -1574,7 +1574,7 @@ static int iaa_decompress(struct crypto_tfm *tfm, struct acomp_req *req,
 
        *dlen = req->dlen;
 
-       if (!ctx->async_mode)
+       if (!ctx->async_mode || disable_async)
                idxd_free_desc(wq, idxd_desc);
 
        /* Update stats */