From: Jens Wiklander jens.wiklander@linaro.org
mainline inclusion from mainline-v5.7-rc1 commit 59a135f6fb669f4f79f43160c7b8c8d6bfb37f75 category: cleanup bugzilla: NA CVE: NA
Prepare for fixing CVE-2021-44733. --------------------------------
Removes list_shm from struct tee_context since the linked list isn't used any longer.
Signed-off-by: Jens Wiklander jens.wiklander@linaro.org Conflicts: drivers/tee/tee_core.c [yyl: adjust context] Signed-off-by: Yang Yingliang yangyingliang@huawei.com --- drivers/tee/tee_core.c | 1 - drivers/tee/tee_shm.c | 12 +----------- include/linux/tee_drv.h | 3 --- 3 files changed, 1 insertion(+), 15 deletions(-)
diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index dd46b758852aa..0d252f151584b 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -56,7 +56,6 @@ static int tee_open(struct inode *inode, struct file *filp)
kref_init(&ctx->refcount); ctx->teedev = teedev; - INIT_LIST_HEAD(&ctx->list_shm); filp->private_data = ctx; rc = teedev->desc->ops->open(ctx); if (rc) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 0b9ab1d0dd45d..8984158483463 100644 --- a/drivers/tee/tee_shm.c +++ b/drivers/tee/tee_shm.c @@ -26,8 +26,6 @@ static void tee_shm_release(struct tee_shm *shm)
mutex_lock(&teedev->mutex); idr_remove(&teedev->idr, shm->id); - if (shm->ctx) - list_del(&shm->link); mutex_unlock(&teedev->mutex);
if (shm->flags & TEE_SHM_POOL) { @@ -183,12 +181,8 @@ static struct tee_shm *__tee_shm_alloc(struct tee_context *ctx, } }
- if (ctx) { + if (ctx) teedev_ctx_get(ctx); - mutex_lock(&teedev->mutex); - list_add_tail(&shm->link, &ctx->list_shm); - mutex_unlock(&teedev->mutex); - }
return shm; err_rem: @@ -315,10 +309,6 @@ struct tee_shm *tee_shm_register(struct tee_context *ctx, unsigned long addr, } }
- mutex_lock(&teedev->mutex); - list_add_tail(&shm->link, &ctx->list_shm); - mutex_unlock(&teedev->mutex); - return shm; err: if (shm) { diff --git a/include/linux/tee_drv.h b/include/linux/tee_drv.h index a2b3dfcee0b55..f3b5782b026e0 100644 --- a/include/linux/tee_drv.h +++ b/include/linux/tee_drv.h @@ -50,7 +50,6 @@ struct tee_shm_pool; */ struct tee_context { struct tee_device *teedev; - struct list_head list_shm; void *data; struct kref refcount; bool releasing; @@ -170,7 +169,6 @@ void tee_device_unregister(struct tee_device *teedev); * struct tee_shm - shared memory object * @teedev: device used to allocate the object * @ctx: context using the object, if NULL the context is gone - * @link link element * @paddr: physical address of the shared memory * @kaddr: virtual address of the shared memory * @size: size of shared memory @@ -187,7 +185,6 @@ void tee_device_unregister(struct tee_device *teedev); struct tee_shm { struct tee_device *teedev; struct tee_context *ctx; - struct list_head link; phys_addr_t paddr; void *kaddr; size_t size;