summaryrefslogtreecommitdiff
path: root/usr/src/uts
diff options
context:
space:
mode:
authorrd117015 <none@none>2007-05-17 04:11:28 -0700
committerrd117015 <none@none>2007-05-17 04:11:28 -0700
commit6fa77e955ba14dcaffbada2beecf867f5fd82d19 (patch)
treefbcaee319ef7da38c9b3175bd8b51b55fc683e1c /usr/src/uts
parent2c11ab544b9ecd7be94bb44f58c7a0322f148dfe (diff)
downloadillumos-joyent-6fa77e955ba14dcaffbada2beecf867f5fd82d19.tar.gz
6542609 setprojrctl() breaks when called from within a zone
6550352 project_kstat_delete() should not use sizeof (zone_kstat_t)
Diffstat (limited to 'usr/src/uts')
-rw-r--r--usr/src/uts/common/os/project.c2
-rw-r--r--usr/src/uts/common/syscall/rctlsys.c10
2 files changed, 6 insertions, 6 deletions
diff --git a/usr/src/uts/common/os/project.c b/usr/src/uts/common/os/project.c
index 2fe052cfbe..e19f1959bc 100644
--- a/usr/src/uts/common/os/project.c
+++ b/usr/src/uts/common/os/project.c
@@ -1020,7 +1020,7 @@ project_kstat_delete(kproject_t *pj)
if (pj->kpj_data.kpd_lockedmem_kstat != NULL) {
data = pj->kpj_data.kpd_lockedmem_kstat->ks_data;
kstat_delete(pj->kpj_data.kpd_lockedmem_kstat);
- kmem_free(data, sizeof (zone_kstat_t));
+ kmem_free(data, sizeof (kproject_kstat_t));
}
pj->kpj_data.kpd_lockedmem_kstat = NULL;
}
diff --git a/usr/src/uts/common/syscall/rctlsys.c b/usr/src/uts/common/syscall/rctlsys.c
index b82f4b0566..5c4da3274b 100644
--- a/usr/src/uts/common/syscall/rctlsys.c
+++ b/usr/src/uts/common/syscall/rctlsys.c
@@ -870,11 +870,6 @@ rctlsys_projset(char *name, rctl_opaque_t *rblk, size_t size, int flags)
return (set_errno(EFAULT));
}
- if (secpolicy_rctlsys(CRED(), B_TRUE) != 0) {
- kmem_free(kname, MAXPATHLEN);
- return (set_errno(EPERM));
- }
-
if (size > RCTL_PROJSET_MAXSIZE) {
kmem_free(kname, MAXPATHLEN);
return (set_errno(EINVAL));
@@ -893,6 +888,11 @@ rctlsys_projset(char *name, rctl_opaque_t *rblk, size_t size, int flags)
return (set_errno(EINVAL));
}
+ if (secpolicy_rctlsys(CRED(), B_FALSE) != 0) {
+ kmem_free(kname, MAXPATHLEN);
+ return (set_errno(EPERM));
+ }
+
/* Allocate an array large enough for all resource control blocks */
krblk = kmem_zalloc(sizeof (rctl_opaque_t) * size, KM_SLEEP);