diff --git a/drivers/tee/tee_core.c b/drivers/tee/tee_core.c index 0d252f151584b346e325bede300f8172b2558e8c..69be7f764bf938d56ae1a34c29cc951e219c1a6f 100644 --- a/drivers/tee/tee_core.c +++ b/drivers/tee/tee_core.c @@ -172,6 +172,10 @@ tee_ioctl_shm_register(struct tee_context *ctx, if (data.flags) return -EINVAL; + if (!access_ok(VERIFY_WRITE, (void __user *)(unsigned long)data.addr, + data.length)) + return -EFAULT; + shm = tee_shm_register(ctx, data.addr, data.length, TEE_SHM_DMA_BUF | TEE_SHM_USER_MAPPED); if (IS_ERR(shm)) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index c591e7ba4435cd3c035cd440adf4966f6d9c1c88..e4c150346a429834e6dc9856e27f7a85364d72f8 100644 --- a/drivers/tee/tee_shm.c +++ b/drivers/tee/tee_shm.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "tee_private.h" static void tee_shm_release(struct tee_device *teedev, struct tee_shm *shm)