more -CURRENT fixes

This commit is contained in:
Alan Hourihane 2001-09-17 18:55:20 +00:00
parent ba5415e0e2
commit 861f12f19d
11 changed files with 36 additions and 23 deletions

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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;
/*

View file

@ -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);

View file

@ -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

View file

@ -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;

View file

@ -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;
/*

View file

@ -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);

View file

@ -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

View file

@ -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,