[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210614223317.999867-2-tyhicks@linux.microsoft.com>
Date: Mon, 14 Jun 2021 17:33:10 -0500
From: Tyler Hicks <tyhicks@...ux.microsoft.com>
To: Jens Wiklander <jens.wiklander@...aro.org>,
Allen Pais <apais@...ux.microsoft.com>,
Sumit Garg <sumit.garg@...aro.org>,
Peter Huewe <peterhuewe@....de>,
Jarkko Sakkinen <jarkko@...nel.org>,
Jason Gunthorpe <jgg@...pe.ca>,
Vikas Gupta <vikas.gupta@...adcom.com>
Cc: Thirupathaiah Annapureddy <thiruan@...rosoft.com>,
Pavel Tatashin <pasha.tatashin@...een.com>,
Rafał Miłecki <zajec5@...il.com>,
op-tee@...ts.trustedfirmware.org, linux-integrity@...r.kernel.org,
bcm-kernel-feedback-list@...adcom.com, linux-mips@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH v5 1/8] optee: Fix memory leak when failing to register shm pages
Free the previously allocated pages when we encounter an error condition
while attempting to register the pages with the secure world.
Fixes: a249dd200d03 ("tee: optee: Fix dynamic shm pool allocations")
Fixes: 5a769f6ff439 ("optee: Fix multi page dynamic shm pool alloc")
Cc: stable@...r.kernel.org
Signed-off-by: Tyler Hicks <tyhicks@...ux.microsoft.com>
Reviewed-by: Jens Wiklander <jens.wiklander@...aro.org>
---
drivers/tee/optee/shm_pool.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/tee/optee/shm_pool.c b/drivers/tee/optee/shm_pool.c
index d767eebf30bd..da06ce9b9313 100644
--- a/drivers/tee/optee/shm_pool.c
+++ b/drivers/tee/optee/shm_pool.c
@@ -32,8 +32,10 @@ static int pool_op_alloc(struct tee_shm_pool_mgr *poolm,
struct page **pages;
pages = kcalloc(nr_pages, sizeof(pages), GFP_KERNEL);
- if (!pages)
- return -ENOMEM;
+ if (!pages) {
+ rc = -ENOMEM;
+ goto err;
+ }
for (i = 0; i < nr_pages; i++) {
pages[i] = page;
@@ -44,8 +46,14 @@ static int pool_op_alloc(struct tee_shm_pool_mgr *poolm,
rc = optee_shm_register(shm->ctx, shm, pages, nr_pages,
(unsigned long)shm->kaddr);
kfree(pages);
+ if (rc)
+ goto err;
}
+ return 0;
+
+err:
+ __free_pages(page, order);
return rc;
}
--
2.25.1
Powered by blists - more mailing lists