diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-05-25 12:58:47 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-05-27 15:39:37 -0400 |
commit | c6f08966f50b5cf669387e0eb941a8f6b92a641d (patch) | |
tree | 98da4b3e582982b05be9fad8429f40d8bddc9bf1 | |
parent | 9e0756800fa2cd6f10116cd0d8b77bb41522370a (diff) |
switch compat_drm_dma() to drm_ioctl_kernel()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | drivers/gpu/drm/drm_ioc32.c | 38 |
1 files changed, 13 insertions, 25 deletions
diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c index 70cfb85b4385..262b8a6cb0b0 100644 --- a/drivers/gpu/drm/drm_ioc32.c +++ b/drivers/gpu/drm/drm_ioc32.c | |||
@@ -584,38 +584,26 @@ static int compat_drm_dma(struct file *file, unsigned int cmd, | |||
584 | { | 584 | { |
585 | drm_dma32_t d32; | 585 | drm_dma32_t d32; |
586 | drm_dma32_t __user *argp = (void __user *)arg; | 586 | drm_dma32_t __user *argp = (void __user *)arg; |
587 | struct drm_dma __user *d; | 587 | struct drm_dma d; |
588 | int err; | 588 | int err; |
589 | 589 | ||
590 | if (copy_from_user(&d32, argp, sizeof(d32))) | 590 | if (copy_from_user(&d32, argp, sizeof(d32))) |
591 | return -EFAULT; | 591 | return -EFAULT; |
592 | 592 | ||
593 | d = compat_alloc_user_space(sizeof(*d)); | 593 | d.context = d32.context; |
594 | if (!d) | 594 | d.send_count = d32.send_count; |
595 | return -EFAULT; | 595 | d.send_indices = compat_ptr(d32.send_indices); |
596 | 596 | d.send_sizes = compat_ptr(d32.send_sizes); | |
597 | if (__put_user(d32.context, &d->context) | 597 | d.flags = d32.flags; |
598 | || __put_user(d32.send_count, &d->send_count) | 598 | d.request_count = d32.request_count; |
599 | || __put_user((int __user *)(unsigned long)d32.send_indices, | 599 | d.request_indices = compat_ptr(d32.request_indices); |
600 | &d->send_indices) | 600 | d.request_sizes = compat_ptr(d32.request_sizes); |
601 | || __put_user((int __user *)(unsigned long)d32.send_sizes, | 601 | err = drm_ioctl_kernel(file, drm_legacy_dma_ioctl, &d, DRM_AUTH); |
602 | &d->send_sizes) | ||
603 | || __put_user(d32.flags, &d->flags) | ||
604 | || __put_user(d32.request_count, &d->request_count) | ||
605 | || __put_user((int __user *)(unsigned long)d32.request_indices, | ||
606 | &d->request_indices) | ||
607 | || __put_user((int __user *)(unsigned long)d32.request_sizes, | ||
608 | &d->request_sizes)) | ||
609 | return -EFAULT; | ||
610 | |||
611 | err = drm_ioctl(file, DRM_IOCTL_DMA, (unsigned long)d); | ||
612 | if (err) | 602 | if (err) |
613 | return err; | 603 | return err; |
614 | 604 | ||
615 | if (__get_user(d32.request_size, &d->request_size) | 605 | if (put_user(d.request_size, &argp->request_size) |
616 | || __get_user(d32.granted_count, &d->granted_count) | 606 | || put_user(d.granted_count, &argp->granted_count)) |
617 | || __put_user(d32.request_size, &argp->request_size) | ||
618 | || __put_user(d32.granted_count, &argp->granted_count)) | ||
619 | return -EFAULT; | 607 | return -EFAULT; |
620 | 608 | ||
621 | return 0; | 609 | return 0; |
@@ -996,7 +984,7 @@ static struct { | |||
996 | DRM_IOCTL32_DEF(DRM_IOCTL_SET_SAREA_CTX, compat_drm_setsareactx), | 984 | DRM_IOCTL32_DEF(DRM_IOCTL_SET_SAREA_CTX, compat_drm_setsareactx), |
997 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_SAREA_CTX, compat_drm_getsareactx), | 985 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_SAREA_CTX, compat_drm_getsareactx), |
998 | DRM_IOCTL32_DEF(DRM_IOCTL_RES_CTX, compat_drm_resctx), | 986 | DRM_IOCTL32_DEF(DRM_IOCTL_RES_CTX, compat_drm_resctx), |
999 | [DRM_IOCTL_NR(DRM_IOCTL_DMA32)].fn = compat_drm_dma, | 987 | DRM_IOCTL32_DEF(DRM_IOCTL_DMA, compat_drm_dma), |
1000 | #if IS_ENABLED(CONFIG_AGP) | 988 | #if IS_ENABLED(CONFIG_AGP) |
1001 | [DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE32)].fn = compat_drm_agp_enable, | 989 | [DRM_IOCTL_NR(DRM_IOCTL_AGP_ENABLE32)].fn = compat_drm_agp_enable, |
1002 | [DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO32)].fn = compat_drm_agp_info, | 990 | [DRM_IOCTL_NR(DRM_IOCTL_AGP_INFO32)].fn = compat_drm_agp_info, |