mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-08 02:19:51 +01:00
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:a249dd200d("tee: optee: Fix dynamic shm pool allocations") Fixes:5a769f6ff4("optee: Fix multi page dynamic shm pool alloc") Cc: [email protected] Signed-off-by: Tyler Hicks <[email protected]> Reviewed-by: Jens Wiklander <[email protected]> Reviewed-by: Sumit Garg <[email protected]> Signed-off-by: Jens Wiklander <[email protected]>
This commit is contained in:
1 parent
2734d6c1b1
commit
ec185dd3ab
1 file changed
+10
-2
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user