diff options
| -rw-r--r-- | bsd-core/drm_drv.c | 21 | 
1 files changed, 6 insertions, 15 deletions
| diff --git a/bsd-core/drm_drv.c b/bsd-core/drm_drv.c index 208f4382..afd90351 100644 --- a/bsd-core/drm_drv.c +++ b/bsd-core/drm_drv.c @@ -821,14 +821,7 @@ int drm_close(struct cdev *kdev, int flags, int fmt, DRM_STRUCTPROC *p)  int drm_ioctl(struct cdev *kdev, u_long cmd, caddr_t data, int flags,       DRM_STRUCTPROC *p)  { -#ifdef __FreeBSD__ -	drm_device_t *dev = kdev->si_drv1; -#elif defined(__NetBSD__) -	drm_device_t *dev = device_lookup(&drm_cd, minor(kdev)); -#else -	drm_device_t *dev = device_lookup(&drm_cd, -            minor(kdev)))->dv_cfdata->cf_driver->cd_devs[minor(kdev)]; -#endif +	drm_device_t *dev = drm_get_device_from_kdev(kdev);  	int retcode = 0;  	drm_ioctl_desc_t *ioctl;  	int (*func)(drm_device_t *dev, void *data, struct drm_file *file_priv); @@ -915,15 +908,13 @@ int drm_ioctl(struct cdev *kdev, u_long cmd, caddr_t data, int flags,  	    ((ioctl->flags & DRM_MASTER) && !file_priv->master))  		return EACCES; -	if (is_driver_ioctl) -		DRM_LOCK(); -	retcode = func(dev, data, file_priv);  	if (is_driver_ioctl) { +		DRM_LOCK(); +		/* shared code returns -errno */ +		retcode = -func(dev, data, file_priv);  		DRM_UNLOCK(); -		/* Driver ioctls in shared code follow the linux convention of -		 * returning -errno instead of errno. -		 */ -		retcode = -retcode; +	} else { +		retcode = func(dev, data, file_priv);  	}  	if (retcode != 0) | 
