diff options
Diffstat (limited to 'bsd')
| -rw-r--r-- | bsd/drm_auth.h | 8 | ||||
| -rw-r--r-- | bsd/drm_drv.h | 10 | ||||
| -rw-r--r-- | bsd/drm_os_freebsd.h | 35 | ||||
| -rw-r--r-- | bsd/drm_os_netbsd.h | 13 | ||||
| -rw-r--r-- | bsd/drm_vm.h | 8 | 
5 files changed, 44 insertions, 30 deletions
| diff --git a/bsd/drm_auth.h b/bsd/drm_auth.h index 9e34b35c..537718c1 100644 --- a/bsd/drm_auth.h +++ b/bsd/drm_auth.h @@ -120,13 +120,7 @@ int DRM(getmagic)(DRM_IOCTL_ARGS)  	drm_file_t *priv;  	DRM_DEVICE; -	DRM_LOCK(); -	priv = (drm_file_t *) DRM(find_file_by_proc)(dev, p); -	DRM_UNLOCK(); -	if (priv == NULL) { -		DRM_DEBUG("can't find authenticator\n"); -		return EINVAL; -	} +	DRM_GET_PRIV_WITH_RETURN(priv, filp);  				/* Find unique magic */  	if (priv->magic) { diff --git a/bsd/drm_drv.h b/bsd/drm_drv.h index 7d753836..582a4112 100644 --- a/bsd/drm_drv.h +++ b/bsd/drm_drv.h @@ -824,7 +824,7 @@ int DRM(close)(dev_t kdev, int flags, int fmt, DRM_STRUCTPROC *p)  	priv = DRM(find_file_by_proc)(dev, p);  	if (!priv) {  		DRM_UNLOCK(); -		DRM_DEBUG("can't find authenticator\n"); +		DRM_ERROR("can't find authenticator\n");  		return EINVAL;  	} @@ -938,13 +938,7 @@ int DRM(ioctl)(dev_t kdev, u_long cmd, caddr_t data, int flags,  	int nr = DRM_IOCTL_NR(cmd);  	drm_file_t *priv; -	DRM_LOCK(); -	priv = (drm_file_t *) DRM(find_file_by_proc)(dev, p); -	DRM_UNLOCK(); -	if (priv == NULL) { -		DRM_DEBUG("can't find authenticator\n"); -		return EINVAL; -	} +	DRM_GET_PRIV_WITH_RETURN(priv, (DRMFILE)DRM_CURRENTPID);  	atomic_inc( &dev->counts[_DRM_STAT_IOCTLS] );  	++priv->ioctl_count; diff --git a/bsd/drm_os_freebsd.h b/bsd/drm_os_freebsd.h index 42385137..89231ecd 100644 --- a/bsd/drm_os_freebsd.h +++ b/bsd/drm_os_freebsd.h @@ -173,6 +173,21 @@ typedef void			irqreturn_t;  #define DRM_MTRR_WC	MDF_WRITECOMBINE +#define DRM_GET_PRIV_WITH_RETURN(_priv, _filp)			\ +do {								\ +	if (_filp != (DRMFILE)DRM_CURRENTPID) {			\ +		DRM_ERROR("filp doesn't match curproc\n");	\ +		return EINVAL;					\ +	}							\ +	DRM_LOCK();						\ +	_priv = DRM(find_file_by_proc)(dev, DRM_CURPROC);	\ +	DRM_UNLOCK();						\ +	if (_priv == NULL) {					\ +		DRM_ERROR("can't find authenticator\n");	\ +		return EINVAL;					\ +	}							\ +} while (0) +  #define LOCK_TEST_WITH_RETURN(dev, filp)				\  do {									\  	if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock) ||		\ @@ -391,17 +406,21 @@ find_first_zero_bit(volatile void *p, int max)  				/* Macros to make printf easier */  #define DRM_ERROR(fmt, arg...) \ -	printf("error: " "[" DRM_NAME ":%s] *ERROR* " fmt , __func__ , ## arg) +	printf("error: [" DRM_NAME ":pid%d:%s] *ERROR* " fmt,		\ +	    DRM_CURRENTPID, __func__ , ## arg) +  #define DRM_MEM_ERROR(area, fmt, arg...) \ -	printf("error: " "[" DRM_NAME ":%s:%s] *ERROR* " fmt , \ -		__func__, DRM(mem_stats)[area].name , ##arg) -#define DRM_INFO(fmt, arg...)  printf("info: " "[" DRM_NAME "] " fmt , ## arg) +	printf("error: [" DRM_NAME ":pid%d:%s:%s] *ERROR* " fmt,	\ +	    DRM_CURRENTPID , __func__, DRM(mem_stats)[area].name , ##arg) + +#define DRM_INFO(fmt, arg...)  printf("info: [" DRM_NAME "] " fmt , ## arg)  #if DRM_DEBUG_CODE -#define DRM_DEBUG(fmt, arg...)						  \ -	do {								  \ -		if (DRM(flags) & DRM_FLAG_DEBUG)			  \ -			printf("[" DRM_NAME ":%s] " fmt , __func__ , ## arg); \ +#define DRM_DEBUG(fmt, arg...)						\ +	do {								\ +		if (DRM(flags) & DRM_FLAG_DEBUG)			\ +			printf("[" DRM_NAME ":pid%d:%s] " fmt,		\ +			    DRM_CURRENTPID, __func__ , ## arg);		\  	} while (0)  #else  #define DRM_DEBUG(fmt, arg...)		 do { } while (0) diff --git a/bsd/drm_os_netbsd.h b/bsd/drm_os_netbsd.h index b03399d8..4c95c50f 100644 --- a/bsd/drm_os_netbsd.h +++ b/bsd/drm_os_netbsd.h @@ -140,6 +140,19 @@ extern const int DRM(M_DRM) = M_DEVBUF;  #define DRM_AGP_FIND_DEVICE()	agp_find_device(0) +#define DRM_GET_PRIV_WITH_RETURN(_priv, _filp)			\ +do {								\ +	if (_filp != (DRMFILE)DRM_CURRENTPID) {			\ +		DRM_ERROR("filp doesn't match curproc\n");	\ +		return EINVAL;					\ +	}							\ +	_priv = DRM(find_file_by_proc)(dev, DRM_CURPROC);	\ +	if (_priv == NULL) {					\ +		DRM_ERROR("can't find authenticator\n");	\ +		return EINVAL;					\ +	}							\ +} while (0) +  #define LOCK_TEST_WITH_RETURN(dev, filp)				\  do {									\  	if (!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock) ||		\ diff --git a/bsd/drm_vm.h b/bsd/drm_vm.h index 9e9f1e14..e4ae8c7e 100644 --- a/bsd/drm_vm.h +++ b/bsd/drm_vm.h @@ -65,13 +65,7 @@ paddr_t DRM(mmap)(dev_t kdev, off_t offset, int prot)  	drm_map_list_entry_t *listentry = NULL;  	drm_file_t *priv; -	DRM_LOCK(); -	priv = DRM(find_file_by_proc)(dev, DRM_CURPROC); -	DRM_UNLOCK(); -	if (!priv) { -		DRM_DEBUG("can't find authenticator\n"); -		return EINVAL; -	} +	DRM_GET_PRIV_WITH_RETURN(priv, (DRMFILE)DRM_CURRENTPID);  	if (!priv->authenticated)  		return DRM_ERR(EACCES); | 
