Merge branch 'master' into modesetting-gem
[platform/upstream/libdrm.git] / linux-core / drm_drv.c
index 9113fa5..aefbd76 100644 (file)
@@ -176,9 +176,11 @@ static struct drm_ioctl_desc drm_ioctls[] = {
 
        DRM_IOCTL_DEF(DRM_IOCTL_MM_INFO, drm_mm_info_ioctl, 0),
 
+#if OS_HAS_GEM
        DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, 0),
        DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH),
        DRM_IOCTL_DEF(DRM_IOCTL_GEM_OPEN, drm_gem_open_ioctl, DRM_AUTH),
+#endif
 };
 
 #define DRM_CORE_IOCTL_COUNT   ARRAY_SIZE( drm_ioctls )
@@ -428,7 +430,7 @@ static void drm_cleanup(struct drm_device * dev)
 
        drm_ctxbitmap_cleanup(dev);
        drm_ht_remove(&dev->map_hash);
-       drm_memrange_takedown(&dev->offset_manager);
+       drm_mm_takedown(&dev->offset_manager);
        drm_ht_remove(&dev->object_hash);
 
        drm_put_minor(dev, &dev->primary);
@@ -635,9 +637,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;
        }
@@ -654,6 +657,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)
@@ -679,7 +683,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 = -EFAULT;