Module Name: src
Committed By: riastradh
Date: Mon Mar 9 01:29:40 UTC 2015
Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_vm.c
Log Message:
Apply access control to gem mmap.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_gem_vm.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/drm/drm_gem_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5 Sat Jul 26 21:15:45 2014
+++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c Mon Mar 9 01:29:40 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $ */
+/* $NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $");
#include <sys/types.h>
@@ -95,7 +95,7 @@ drm_gem_mmap_object(struct drm_device *d
static int
drm_gem_mmap_object_locked(struct drm_device *dev, off_t byte_offset,
size_t nbytes, int prot __unused, struct uvm_object **uobjp,
- voff_t *uoffsetp, struct file *file __unused)
+ voff_t *uoffsetp, struct file *file)
{
const unsigned long startpage = (byte_offset >> PAGE_SHIFT);
const unsigned long npages = (nbytes >> PAGE_SHIFT);
@@ -118,6 +118,9 @@ drm_gem_mmap_object_locked(struct drm_de
return 0;
}
+ if (!drm_vma_node_is_allowed(node, file))
+ return -EACCES;
+
struct drm_gem_object *const obj = container_of(node,
struct drm_gem_object, vma_node);
KASSERT(obj->dev == dev);