From 61d7f8b1f7caa9998438082fe3cbf939e02dae95 Mon Sep 17 00:00:00 2001 From: Alan Hourihane Date: Wed, 23 May 2001 21:08:27 +0000 Subject: [PATCH] fix authentication bug in linux and bsd mmap. --- bsd-core/drm_vm.c | 2 ++ bsd/drm_vm.h | 2 ++ linux-core/drm_vm.c | 2 ++ linux/drm_vm.h | 2 ++ 4 files changed, 8 insertions(+) diff --git a/bsd-core/drm_vm.c b/bsd-core/drm_vm.c index 814cc8bf..fc0c4a78 100644 --- a/bsd-core/drm_vm.c +++ b/bsd-core/drm_vm.c @@ -26,6 +26,8 @@ int DRM(mmap)(dev_t kdev, vm_offset_t offset, int prot) /* DRM_DEBUG("offset = 0x%x\n", offset);*/ + if (!priv->authenticated) DRM_OS_RETURN(EACCES); + if (dev->dma && offset >= 0 && offset < ptoa(dev->dma->page_count)) diff --git a/bsd/drm_vm.h b/bsd/drm_vm.h index 814cc8bf..fc0c4a78 100644 --- a/bsd/drm_vm.h +++ b/bsd/drm_vm.h @@ -26,6 +26,8 @@ int DRM(mmap)(dev_t kdev, vm_offset_t offset, int prot) /* DRM_DEBUG("offset = 0x%x\n", offset);*/ + if (!priv->authenticated) DRM_OS_RETURN(EACCES); + if (dev->dma && offset >= 0 && offset < ptoa(dev->dma->page_count)) diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c index 771c11bd..f7b06767 100644 --- a/linux-core/drm_vm.c +++ b/linux-core/drm_vm.c @@ -377,6 +377,8 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma) DRM_DEBUG("start = 0x%lx, end = 0x%lx, offset = 0x%lx\n", vma->vm_start, vma->vm_end, VM_OFFSET(vma)); + if ( !priv->authenticated ) DRM_OS_RETURN(EACCES); + if (!VM_OFFSET(vma)) return DRM(mmap_dma)(filp, vma); /* A sequential search of a linked list is diff --git a/linux/drm_vm.h b/linux/drm_vm.h index 771c11bd..f7b06767 100644 --- a/linux/drm_vm.h +++ b/linux/drm_vm.h @@ -377,6 +377,8 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma) DRM_DEBUG("start = 0x%lx, end = 0x%lx, offset = 0x%lx\n", vma->vm_start, vma->vm_end, VM_OFFSET(vma)); + if ( !priv->authenticated ) DRM_OS_RETURN(EACCES); + if (!VM_OFFSET(vma)) return DRM(mmap_dma)(filp, vma); /* A sequential search of a linked list is