diff --git a/drivers/video/rockchip/rga3/include/rga.h b/drivers/video/rockchip/rga3/include/rga.h index 92c82a2c5316..d8fdd4988893 100644 --- a/drivers/video/rockchip/rga3/include/rga.h +++ b/drivers/video/rockchip/rga3/include/rga.h @@ -209,7 +209,7 @@ struct rga_external_buffer { }; struct rga_buffer_pool { - struct rga_external_buffer __user *buffers; + uint64_t buffers_ptr; uint32_t size; }; diff --git a/drivers/video/rockchip/rga3/include/rga_drv.h b/drivers/video/rockchip/rga3/include/rga_drv.h index 5b24660f73a2..1c9bdc7a7eb9 100644 --- a/drivers/video/rockchip/rga3/include/rga_drv.h +++ b/drivers/video/rockchip/rga3/include/rga_drv.h @@ -79,7 +79,7 @@ #define DRIVER_MAJOR_VERISON 1 #define DRIVER_MINOR_VERSION 2 -#define DRIVER_REVISION_VERSION 3 +#define DRIVER_REVISION_VERSION 4 #define DRIVER_VERSION (STR(DRIVER_MAJOR_VERISON) "." STR(DRIVER_MINOR_VERSION) \ "." STR(DRIVER_REVISION_VERSION)) diff --git a/drivers/video/rockchip/rga3/rga_drv.c b/drivers/video/rockchip/rga3/rga_drv.c index bad958ec6154..702487785f15 100644 --- a/drivers/video/rockchip/rga3/rga_drv.c +++ b/drivers/video/rockchip/rga3/rga_drv.c @@ -255,7 +255,7 @@ static long rga_ioctl_import_buffer(unsigned long arg) return -EFBIG; } - if (buffer_pool.buffers == NULL) { + if (buffer_pool.buffers_ptr == 0) { pr_err("Import buffers is NULL!\n"); return -EFAULT; } @@ -267,7 +267,8 @@ static long rga_ioctl_import_buffer(unsigned long arg) return -ENOMEM; } - if (unlikely(copy_from_user(external_buffer, buffer_pool.buffers, + if (unlikely(copy_from_user(external_buffer, + u64_to_user_ptr(buffer_pool.buffers_ptr), sizeof(struct rga_external_buffer) * buffer_pool.size))) { pr_err("rga_buffer_pool external_buffer list copy_from_user failed\n"); ret = -EFAULT; @@ -286,7 +287,8 @@ static long rga_ioctl_import_buffer(unsigned long arg) external_buffer[i].handle = ret; } - if (unlikely(copy_to_user(buffer_pool.buffers, external_buffer, + if (unlikely(copy_to_user(u64_to_user_ptr(buffer_pool.buffers_ptr), + external_buffer, sizeof(struct rga_external_buffer) * buffer_pool.size))) { pr_err("rga_buffer_pool external_buffer list copy_to_user failed\n"); ret = -EFAULT; @@ -319,7 +321,7 @@ static long rga_ioctl_release_buffer(unsigned long arg) return -EFBIG; } - if (buffer_pool.buffers == NULL) { + if (buffer_pool.buffers_ptr == 0) { pr_err("Release buffers is NULL!\n"); return -EFAULT; } @@ -331,7 +333,8 @@ static long rga_ioctl_release_buffer(unsigned long arg) return -ENOMEM; } - if (unlikely(copy_from_user(external_buffer, buffer_pool.buffers, + if (unlikely(copy_from_user(external_buffer, + u64_to_user_ptr(buffer_pool.buffers_ptr), sizeof(struct rga_external_buffer) * buffer_pool.size))) { pr_err("rga_buffer_pool external_buffer list copy_from_user failed\n"); ret = -EFAULT; diff --git a/drivers/video/rockchip/rga3/rga_job.c b/drivers/video/rockchip/rga3/rga_job.c index f6a70e78a402..bfde0c08dea7 100644 --- a/drivers/video/rockchip/rga3/rga_job.c +++ b/drivers/video/rockchip/rga3/rga_job.c @@ -777,7 +777,7 @@ int rga_job_config_by_user_ctx(struct rga_user_ctx_t *user_ctx) first_config = true; } - if (unlikely(copy_from_user(cached_cmd, (struct rga_req *)(unsigned long)user_ctx->cmd_ptr, + if (unlikely(copy_from_user(cached_cmd, u64_to_user_ptr(user_ctx->cmd_ptr), sizeof(struct rga_req) * user_ctx->cmd_num))) { pr_err("rga_user_ctx cmd list copy_from_user failed\n"); if (first_config)