summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/msm-hyp/msm_drv_hyp.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm-hyp/msm_drv_hyp.c b/drivers/gpu/drm/msm-hyp/msm_drv_hyp.c
index baf7ee266088..133b1220f5fb 100644
--- a/drivers/gpu/drm/msm-hyp/msm_drv_hyp.c
+++ b/drivers/gpu/drm/msm-hyp/msm_drv_hyp.c
@@ -355,11 +355,35 @@ static int msm_ioctl_query_client_id(struct drm_device *dev, void *data,
return ret;
}
+static long msm_drm_ioctl(struct file *filp,
+ unsigned int cmd, unsigned long arg)
+{
+ switch (cmd) {
+ case DRM_IOCTL_PRIME_FD_TO_HANDLE:
+ {
+ struct drm_prime_handle cmd_data;
+
+ if (copy_from_user(&cmd_data, (void __user *)arg,
+ sizeof(struct drm_prime_handle)) != 0)
+ return -EFAULT;
+ cmd_data.handle = cmd_data.fd;
+ if (copy_to_user((void __user *)arg, &cmd_data,
+ sizeof(struct drm_prime_handle)) != 0)
+ return -EFAULT;
+ return 0;
+ }
+ case DRM_IOCTL_GEM_CLOSE:
+ return 0;
+ default:
+ return drm_ioctl(filp, cmd, arg);
+ }
+}
+
static const struct file_operations fops = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .unlocked_ioctl = drm_ioctl,
+ .unlocked_ioctl = msm_drm_ioctl,
.poll = drm_poll,
.read = drm_read,
.write = msm_drm_write,