]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tee: shm: fix shm leak in register_shm_helper()
authorGeorgiy Osokin <g.osokin@auroraos.dev>
Wed, 8 Apr 2026 15:52:03 +0000 (18:52 +0300)
committerJens Wiklander <jens.wiklander@linaro.org>
Wed, 20 May 2026 06:49:09 +0000 (08:49 +0200)
register_shm_helper() allocates shm before calling
iov_iter_npages(). If iov_iter_npages() returns 0, the function
jumps to err_ctx_put and leaks shm.

This can be triggered by TEE_IOC_SHM_REGISTER with
struct tee_ioctl_shm_register_data where length is 0.

Jump to err_free_shm instead.

Fixes: 7bdee4157591 ("tee: Use iov_iter to better support shared buffer registration")
Cc: stable@vger.kernel.org
Cc: lvc-project@linuxtesting.org
Signed-off-by: Georgiy Osokin <g.osokin@auroraos.dev>
Reviewed-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
drivers/tee/tee_shm.c

index e9ea9f80cfd9ac506030a69049aa43836692d685..6742b3579c86d6ffb06510d6e36cb9fb3e6a1e8e 100644 (file)
@@ -435,7 +435,7 @@ register_shm_helper(struct tee_context *ctx, struct iov_iter *iter, u32 flags,
        num_pages = iov_iter_npages(iter, INT_MAX);
        if (!num_pages) {
                ret = ERR_PTR(-ENOMEM);
-               goto err_ctx_put;
+               goto err_free_shm;
        }
 
        shm->pages = kzalloc_objs(*shm->pages, num_pages);