mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-27 03:30:13 +01:00
more -CURRENT fixes
This commit is contained in:
parent
ba5415e0e2
commit
861f12f19d
11 changed files with 36 additions and 23 deletions
|
|
@ -56,6 +56,7 @@
|
|||
#define DRM_OS_STRUCTPROC struct thread
|
||||
#define DRM_OS_CURRENTPID curthread->td_proc->p_pid
|
||||
#define DRM_OS_IOCTL dev_t kdev, u_long cmd, caddr_t data, int flags, struct thread *p
|
||||
#define DRM_OS_CHECKSUSER suser(p->td_proc)
|
||||
#else
|
||||
#define DRM_OS_CURPROC curproc
|
||||
#define DRM_OS_STRUCTPROC struct proc
|
||||
|
|
@ -67,6 +68,7 @@
|
|||
#define DRM_OS_LOCK lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, curproc)
|
||||
#define DRM_OS_UNLOCK lockmgr(&dev->dev_lock, LK_RELEASE, 0, curproc)
|
||||
#define DRM_OS_CURRENTPID curproc->p_pid
|
||||
#define DRM_OS_CHECKSUSER suser(p)
|
||||
#endif
|
||||
|
||||
#define DRM_OS_TASKQUEUE_ARGS void *dev, int pending
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@
|
|||
#define DRM_OS_STRUCTPROC struct thread
|
||||
#define DRM_OS_CURRENTPID curthread->td_proc->p_pid
|
||||
#define DRM_OS_IOCTL dev_t kdev, u_long cmd, caddr_t data, int flags, struct thread *p
|
||||
#define DRM_OS_CHECKSUSER suser(p->td_proc)
|
||||
#else
|
||||
#define DRM_OS_CURPROC curproc
|
||||
#define DRM_OS_STRUCTPROC struct proc
|
||||
|
|
@ -67,6 +68,7 @@
|
|||
#define DRM_OS_LOCK lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, curproc)
|
||||
#define DRM_OS_UNLOCK lockmgr(&dev->dev_lock, LK_RELEASE, 0, curproc)
|
||||
#define DRM_OS_CURRENTPID curproc->p_pid
|
||||
#define DRM_OS_CHECKSUSER suser(p)
|
||||
#endif
|
||||
|
||||
#define DRM_OS_TASKQUEUE_ARGS void *dev, int pending
|
||||
|
|
|
|||
|
|
@ -1141,7 +1141,11 @@ int DRM(mapbufs)( DRM_OS_IOCTL )
|
|||
#endif /* __linux__ */
|
||||
#ifdef __FreeBSD__
|
||||
vm_offset_t virtual, address;
|
||||
#ifdef __FreeBSD_version >= 500000
|
||||
struct vmspace *vms = p->td_proc->p_vmspace;
|
||||
#else
|
||||
struct vmspace *vms = p->p_vmspace;
|
||||
#endif
|
||||
#endif /* __FreeBSD__ */
|
||||
drm_buf_map_t request;
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -1219,12 +1219,7 @@ int DRM(ioctl)( DRM_OS_IOCTL )
|
|||
if ( !func ) {
|
||||
DRM_DEBUG( "no function\n" );
|
||||
retcode = EINVAL;
|
||||
} else if ( ( ioctl->root_only &&
|
||||
#ifdef __linux__
|
||||
!capable( CAP_SYS_ADMIN ) )
|
||||
#endif /* __linux__ */
|
||||
#ifdef __FreeBSD__
|
||||
suser(p) )
|
||||
} else if ( ( ioctl->root_only && DRM_OS_CHECKSUSER )
|
||||
#endif /* __FreeBSD__ */
|
||||
|| ( ioctl->auth_needed && !priv->authenticated ) ) {
|
||||
retcode = EACCES;
|
||||
|
|
@ -1421,7 +1416,11 @@ SYSUNINIT(DRM( unregister), SI_SUB_KLD, SI_ORDER_MIDDLE, linux_ioctl_unregister_
|
|||
static int
|
||||
DRM(linux_ioctl)(DRM_OS_STRUCTPROC *p, struct linux_ioctl_args* args)
|
||||
{
|
||||
#ifdef __FreeBSD_version >= 500000
|
||||
struct file *fp = p->td_proc->p_fd->fd_ofiles[args->fd];
|
||||
#else
|
||||
struct file *fp = p->p_fd->fd_ofiles[args->fd];
|
||||
#endif
|
||||
u_long cmd = args->cmd;
|
||||
caddr_t data = (caddr_t) args->arg;
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -121,18 +121,19 @@ int DRM(open_helper)(dev_t kdev, int flags, int fmt, DRM_OS_STRUCTPROC *p,
|
|||
} else {
|
||||
priv = (drm_file_t *) DRM(alloc)(sizeof(*priv), DRM_MEM_FILES);
|
||||
bzero(priv, sizeof(*priv));
|
||||
#if __FreeBSD_version >= 500021
|
||||
priv->uid = p->p_ucred->cr_svuid;
|
||||
#if __FreeBSD_version >= 500000
|
||||
priv->uid = p->td_proc->p_ucred->cr_svuid;
|
||||
priv->pid = p->td_proc->p_pid;
|
||||
#else
|
||||
priv->uid = p->p_cred->p_svuid;
|
||||
priv->pid = p->p_pid;
|
||||
#endif
|
||||
|
||||
priv->pid = p->p_pid;
|
||||
priv->refs = 1;
|
||||
priv->minor = m;
|
||||
priv->devXX = dev;
|
||||
priv->ioctl_count = 0;
|
||||
priv->authenticated = !suser(p);
|
||||
priv->authenticated = !DRM_OS_CHECKSUSER;
|
||||
lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, p);
|
||||
TAILQ_INSERT_TAIL(&dev->files, priv, link);
|
||||
lockmgr(&dev->dev_lock, LK_RELEASE, 0, p);
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@ do { \
|
|||
#define DRM_OS_DELAY(d) udelay(d)
|
||||
#define DRM_OS_RETURN(v) return -v;
|
||||
#define DRM_OS_CURRENTPID current->pid
|
||||
#define DRM_OS_CHECKSUSER !capable( CAP_SYS_ADMIN )
|
||||
#define DRM_OS_KRNTOUSR(arg1, arg2, arg3) \
|
||||
if ( copy_to_user(arg1, &arg2, arg3) ) \
|
||||
return -EFAULT
|
||||
|
|
|
|||
|
|
@ -1141,7 +1141,11 @@ int DRM(mapbufs)( DRM_OS_IOCTL )
|
|||
#endif /* __linux__ */
|
||||
#ifdef __FreeBSD__
|
||||
vm_offset_t virtual, address;
|
||||
#ifdef __FreeBSD_version >= 500000
|
||||
struct vmspace *vms = p->td_proc->p_vmspace;
|
||||
#else
|
||||
struct vmspace *vms = p->p_vmspace;
|
||||
#endif
|
||||
#endif /* __FreeBSD__ */
|
||||
drm_buf_map_t request;
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -1219,12 +1219,7 @@ int DRM(ioctl)( DRM_OS_IOCTL )
|
|||
if ( !func ) {
|
||||
DRM_DEBUG( "no function\n" );
|
||||
retcode = EINVAL;
|
||||
} else if ( ( ioctl->root_only &&
|
||||
#ifdef __linux__
|
||||
!capable( CAP_SYS_ADMIN ) )
|
||||
#endif /* __linux__ */
|
||||
#ifdef __FreeBSD__
|
||||
suser(p) )
|
||||
} else if ( ( ioctl->root_only && DRM_OS_CHECKSUSER )
|
||||
#endif /* __FreeBSD__ */
|
||||
|| ( ioctl->auth_needed && !priv->authenticated ) ) {
|
||||
retcode = EACCES;
|
||||
|
|
@ -1421,7 +1416,11 @@ SYSUNINIT(DRM( unregister), SI_SUB_KLD, SI_ORDER_MIDDLE, linux_ioctl_unregister_
|
|||
static int
|
||||
DRM(linux_ioctl)(DRM_OS_STRUCTPROC *p, struct linux_ioctl_args* args)
|
||||
{
|
||||
#ifdef __FreeBSD_version >= 500000
|
||||
struct file *fp = p->td_proc->p_fd->fd_ofiles[args->fd];
|
||||
#else
|
||||
struct file *fp = p->p_fd->fd_ofiles[args->fd];
|
||||
#endif
|
||||
u_long cmd = args->cmd;
|
||||
caddr_t data = (caddr_t) args->arg;
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -121,18 +121,19 @@ int DRM(open_helper)(dev_t kdev, int flags, int fmt, DRM_OS_STRUCTPROC *p,
|
|||
} else {
|
||||
priv = (drm_file_t *) DRM(alloc)(sizeof(*priv), DRM_MEM_FILES);
|
||||
bzero(priv, sizeof(*priv));
|
||||
#if __FreeBSD_version >= 500021
|
||||
priv->uid = p->p_ucred->cr_svuid;
|
||||
#if __FreeBSD_version >= 500000
|
||||
priv->uid = p->td_proc->p_ucred->cr_svuid;
|
||||
priv->pid = p->td_proc->p_pid;
|
||||
#else
|
||||
priv->uid = p->p_cred->p_svuid;
|
||||
priv->pid = p->p_pid;
|
||||
#endif
|
||||
|
||||
priv->pid = p->p_pid;
|
||||
priv->refs = 1;
|
||||
priv->minor = m;
|
||||
priv->devXX = dev;
|
||||
priv->ioctl_count = 0;
|
||||
priv->authenticated = !suser(p);
|
||||
priv->authenticated = !DRM_OS_CHECKSUSER;
|
||||
lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, p);
|
||||
TAILQ_INSERT_TAIL(&dev->files, priv, link);
|
||||
lockmgr(&dev->dev_lock, LK_RELEASE, 0, p);
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@ do { \
|
|||
#define DRM_OS_DELAY(d) udelay(d)
|
||||
#define DRM_OS_RETURN(v) return -v;
|
||||
#define DRM_OS_CURRENTPID current->pid
|
||||
#define DRM_OS_CHECKSUSER !capable( CAP_SYS_ADMIN )
|
||||
#define DRM_OS_KRNTOUSR(arg1, arg2, arg3) \
|
||||
if ( copy_to_user(arg1, &arg2, arg3) ) \
|
||||
return -EFAULT
|
||||
|
|
|
|||
|
|
@ -1517,9 +1517,8 @@ int r128_cce_indirect( DRM_OS_IOCTL )
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ( copy_from_user( &indirect, (drm_r128_indirect_t *)arg,
|
||||
sizeof(indirect) ) )
|
||||
return -EFAULT;
|
||||
DRM_OS_KRNFROMUSR( indirect, (drm_r128_indirect_t *) arg,
|
||||
sizeof(indirect) );
|
||||
|
||||
DRM_DEBUG( "indirect: idx=%d s=%d e=%d d=%d\n",
|
||||
indirect.idx, indirect.start,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue