summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Shu <Edward.Shu@Sun.COM>2008-09-27 08:09:48 +0800
committerEdward Shu <Edward.Shu@Sun.COM>2008-09-27 08:09:48 +0800
commit907f0cacfc5d8be3ad3eca7cc7f37f103567f321 (patch)
tree2f6ff0172da219c37cf8c2c1083559e88daa431d
parent3f4df6d3f6e40b6234f63f6aa7212364ab9f0016 (diff)
downloadillumos-joyent-907f0cacfc5d8be3ad3eca7cc7f37f103567f321.tar.gz
PSARC 2008/610 Amendment to PSARC 2004/151
6739533 Suspend / Resume on intel_igd_965gm doesn't work properly
-rw-r--r--usr/src/uts/intel/io/agpgart/agpgart.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/usr/src/uts/intel/io/agpgart/agpgart.c b/usr/src/uts/intel/io/agpgart/agpgart.c
index 1eeb4c247c..005dc57ac0 100644
--- a/usr/src/uts/intel/io/agpgart/agpgart.c
+++ b/usr/src/uts/intel/io/agpgart/agpgart.c
@@ -2558,11 +2558,16 @@ agpgart_open(dev_t *dev, int openflags, int otyp, cred_t *credp)
agpgart_softstate_t *softstate;
int rc = 0;
+ if (secpolicy_gart_access(credp)) {
+ AGPDB_PRINT2((CE_WARN, "agpgart_open: permission denied"));
+ return (EPERM);
+ }
softstate = ddi_get_soft_state(agpgart_glob_soft_handle, instance);
if (softstate == NULL) {
AGPDB_PRINT2((CE_WARN, "agpgart_open: get soft state err"));
return (ENXIO);
}
+
mutex_enter(&softstate->asoft_instmutex);
if (softstate->asoft_opened) {
@@ -3033,11 +3038,6 @@ agpgart_ioctl(dev_t dev, int cmd, intptr_t intarg, int flags,
return (ENXIO);
}
- if ((cmd != AGPIOC_INFO) && secpolicy_gart_access(credp)) {
- AGPDB_PRINT2((CE_WARN, "agpgart_ioctl: permission denied"));
- return (EPERM);
- }
-
mutex_enter(&softstate->asoft_instmutex);
switch (cmd) {
@@ -3096,16 +3096,6 @@ agpgart_segmap(dev_t dev, off_t off, struct as *asp,
mutex_enter(&softstate->asoft_instmutex);
- /*
- * Process must have gart map privilege or gart access privilege
- * to map agp memory.
- */
- if (secpolicy_gart_map(credp)) {
- mutex_exit(&softstate->asoft_instmutex);
- AGPDB_PRINT2((CE_WARN, "agpgart_segmap: permission denied"));
- return (EPERM);
- }
-
rc = devmap_setup(dev, (offset_t)off, asp, addrp,
(size_t)len, prot, maxprot, flags, credp);