diff options
author | rd117015 <none@none> | 2007-05-17 04:11:28 -0700 |
---|---|---|
committer | rd117015 <none@none> | 2007-05-17 04:11:28 -0700 |
commit | 6fa77e955ba14dcaffbada2beecf867f5fd82d19 (patch) | |
tree | fbcaee319ef7da38c9b3175bd8b51b55fc683e1c /usr/src/uts | |
parent | 2c11ab544b9ecd7be94bb44f58c7a0322f148dfe (diff) | |
download | illumos-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.c | 2 | ||||
-rw-r--r-- | usr/src/uts/common/syscall/rctlsys.c | 10 |
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); |