X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=linux-core%2Fdrm_drv.c;h=c24456717b4c56a2c80dd222c9970962b0094f8f;hb=1d2bb68d28fe39746299ee8ddb664a62de839b0c;hp=bc32ed5059696a293b1dba972ddbbf4bcdaac63d;hpb=487c42bd42d93304278abce03b36c935bdc83284;p=platform%2Fupstream%2Flibdrm.git diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c index bc32ed5..c244567 100644 --- a/linux-core/drm_drv.c +++ b/linux-core/drm_drv.c @@ -617,9 +617,10 @@ long drm_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if ((nr >= DRM_COMMAND_BASE) && (nr < DRM_COMMAND_END) && (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls)) ioctl = &dev->driver->ioctls[nr - DRM_COMMAND_BASE]; - else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) + else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) { ioctl = &drm_ioctls[nr]; - else { + cmd = ioctl->cmd; + } else { retcode = -EINVAL; goto err_i1; } @@ -635,6 +636,7 @@ long drm_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) goto err_i1; } #endif + func = ioctl->func; /* is there a local override? */ if ((nr == DRM_IOCTL_NR(DRM_IOCTL_DMA)) && dev->driver->dma_ioctl) @@ -659,7 +661,7 @@ long drm_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) retcode = func(dev, kdata, file_priv); } - if ((retcode == 0) && (cmd & IOC_OUT)) { + if (cmd & IOC_OUT) { if (copy_to_user((void __user *)arg, kdata, _IOC_SIZE(cmd)) != 0) retcode = -EACCES;