Skip to content

Commit 84bc3c0

Browse files
committed
Merge tag 'tee-fixes-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/jenswi/linux-tee into arm/fixes
TEE fixes for v6.17 - Fixing a memory leak in the error path for tee_dyn_shm_alloc_helper() - Fixing a NULL pointer dereference in tee_shm_put() * tag 'tee-fixes-for-v6.17' of https://git.kernel.org/pub/scm/linux/kernel/git/jenswi/linux-tee: tee: fix memory leak in tee_dyn_shm_alloc_helper tee: fix NULL pointer dereference in tee_shm_put Link: https://lore.kernel.org/r/20250819122641.GA3486750@rayden Signed-off-by: Arnd Bergmann <[email protected]>
2 parents e6e7099 + 50a74d0 commit 84bc3c0

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

drivers/tee/tee_shm.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ int tee_dyn_shm_alloc_helper(struct tee_shm *shm, size_t size, size_t align,
230230
pages = kcalloc(nr_pages, sizeof(*pages), GFP_KERNEL);
231231
if (!pages) {
232232
rc = -ENOMEM;
233-
goto err;
233+
goto err_pages;
234234
}
235235

236236
for (i = 0; i < nr_pages; i++)
@@ -243,11 +243,13 @@ int tee_dyn_shm_alloc_helper(struct tee_shm *shm, size_t size, size_t align,
243243
rc = shm_register(shm->ctx, shm, pages, nr_pages,
244244
(unsigned long)shm->kaddr);
245245
if (rc)
246-
goto err;
246+
goto err_kfree;
247247
}
248248

249249
return 0;
250-
err:
250+
err_kfree:
251+
kfree(pages);
252+
err_pages:
251253
free_pages_exact(shm->kaddr, shm->size);
252254
shm->kaddr = NULL;
253255
return rc;
@@ -560,9 +562,13 @@ EXPORT_SYMBOL_GPL(tee_shm_get_from_id);
560562
*/
561563
void tee_shm_put(struct tee_shm *shm)
562564
{
563-
struct tee_device *teedev = shm->ctx->teedev;
565+
struct tee_device *teedev;
564566
bool do_release = false;
565567

568+
if (!shm || !shm->ctx || !shm->ctx->teedev)
569+
return;
570+
571+
teedev = shm->ctx->teedev;
566572
mutex_lock(&teedev->mutex);
567573
if (refcount_dec_and_test(&shm->refcount)) {
568574
/*

0 commit comments

Comments
 (0)