diff options
author | la135387 <none@none> | 2005-07-22 16:18:39 -0700 |
---|---|---|
committer | la135387 <none@none> | 2005-07-22 16:18:39 -0700 |
commit | 26cf27f05670b1ca90e4a07802cba858cb358690 (patch) | |
tree | e688cf237930db054ae49f8feea76058db33ad64 | |
parent | 70f54ead78cbbb40e97bd3ff9f175c5c71783c3c (diff) | |
download | illumos-joyent-26cf27f05670b1ca90e4a07802cba858cb358690.tar.gz |
6263078 Machine description API doesn't support kmem_free()
6264415 md_fini should not free the pointer to the machine description data
6292409 prtdiag: cannot open /dev/openprom: Permission denied ; when run as non root user only
-rw-r--r-- | usr/src/cmd/picl/plugins/sun4v/mdesc/init.c | 11 | ||||
-rw-r--r-- | usr/src/common/mdesc/mdesc_fini.c | 3 | ||||
-rw-r--r-- | usr/src/common/mdesc/mdesc_init_intern.c | 5 | ||||
-rw-r--r-- | usr/src/common/mdesc/mdesc_scandag.c | 2 | ||||
-rw-r--r-- | usr/src/pkgdefs/SUNWkvm.v/prototype_com | 2 | ||||
-rw-r--r-- | usr/src/uts/common/sys/mdesc.h | 2 | ||||
-rw-r--r-- | usr/src/uts/common/sys/mdesc_impl.h | 2 |
7 files changed, 18 insertions, 9 deletions
diff --git a/usr/src/cmd/picl/plugins/sun4v/mdesc/init.c b/usr/src/cmd/picl/plugins/sun4v/mdesc/init.c index 044709ea20..8b6a7f2af3 100644 --- a/usr/src/cmd/picl/plugins/sun4v/mdesc/init.c +++ b/usr/src/cmd/picl/plugins/sun4v/mdesc/init.c @@ -42,6 +42,8 @@ #define MDESC_PATH "/devices/pseudo/mdesc@0:mdesc" #define SIZE 8192 +static void mdesc_free(void *bufp, size_t size); + md_t * mdesc_devinit(void) { @@ -98,7 +100,7 @@ mdesc_devinit(void) if (NULL == bufp) return (NULL); - mdp = md_init_intern((uint64_t *)bufp, malloc, free); + mdp = md_init_intern((uint64_t *)bufp, malloc, mdesc_free); if (NULL == mdp) { free(bufp); return (NULL); @@ -106,3 +108,10 @@ mdesc_devinit(void) return (mdp); } + +/*ARGSUSED*/ +void +mdesc_free(void *bufp, size_t size) +{ + free(bufp); +} diff --git a/usr/src/common/mdesc/mdesc_fini.c b/usr/src/common/mdesc/mdesc_fini.c index f449150be5..f0b010b386 100644 --- a/usr/src/common/mdesc/mdesc_fini.c +++ b/usr/src/common/mdesc/mdesc_fini.c @@ -37,8 +37,7 @@ md_fini(md_t *ptr) mdp = (md_impl_t *)ptr; - mdp->freep(mdp->caddr); - mdp->freep(mdp); + mdp->freep(mdp, sizeof (md_impl_t)); return (0); } diff --git a/usr/src/common/mdesc/mdesc_init_intern.c b/usr/src/common/mdesc/mdesc_init_intern.c index 8148a133dd..2ba2877abb 100644 --- a/usr/src/common/mdesc/mdesc_init_intern.c +++ b/usr/src/common/mdesc/mdesc_init_intern.c @@ -32,7 +32,8 @@ #include <sys/mdesc_impl.h> md_t * -md_init_intern(uint64_t *ptr, void *(*allocp)(size_t), void (*freep)(void *)) +md_init_intern(uint64_t *ptr, void *(*allocp)(size_t), + void (*freep)(void *, size_t)) { md_impl_t *mdp; int idx; @@ -160,6 +161,6 @@ cleanup:; * we build one. */ cleanup_nohash:; - mdp->freep(mdp); + mdp->freep(mdp, sizeof (md_impl_t)); return (NULL); } diff --git a/usr/src/common/mdesc/mdesc_scandag.c b/usr/src/common/mdesc/mdesc_scandag.c index 58e0b0d39f..11b4e24ab2 100644 --- a/usr/src/common/mdesc/mdesc_scandag.c +++ b/usr/src/common/mdesc/mdesc_scandag.c @@ -112,7 +112,7 @@ md_scan_dag(md_t *ptr, node_name_cookie, arc_name_cookie, seenp, &idx, stashp, 0); - mdp->freep(seenp); + mdp->freep(seenp, mdp->element_count); return (res >= 0 ? idx : res); } diff --git a/usr/src/pkgdefs/SUNWkvm.v/prototype_com b/usr/src/pkgdefs/SUNWkvm.v/prototype_com index ccceee8b36..6f6dfc2b83 100644 --- a/usr/src/pkgdefs/SUNWkvm.v/prototype_com +++ b/usr/src/pkgdefs/SUNWkvm.v/prototype_com @@ -60,7 +60,7 @@ d none usr/platform/sun4v/lib 755 root bin # # add binary and libraries for prtdiag # -f none usr/platform/sun4v/sbin/prtdiag 2755 root bin +f none usr/platform/sun4v/sbin/prtdiag 2755 root sys f none usr/platform/sun4v/lib/libprtdiag.so.1 755 root bin s none usr/platform/sun4v/lib/libprtdiag.so=./libprtdiag.so.1 # diff --git a/usr/src/uts/common/sys/mdesc.h b/usr/src/uts/common/sys/mdesc.h index ad7fd23789..87e3e8492b 100644 --- a/usr/src/uts/common/sys/mdesc.h +++ b/usr/src/uts/common/sys/mdesc.h @@ -100,7 +100,7 @@ typedef void * md_t; extern md_t *md_init(void *); extern md_t *md_init_intern(uint64_t *, void*(*)(size_t), - void (*)(void*)); + void (*)(void*, size_t)); extern int md_fini(md_t *); diff --git a/usr/src/uts/common/sys/mdesc_impl.h b/usr/src/uts/common/sys/mdesc_impl.h index 920c42093f..9d8083a513 100644 --- a/usr/src/uts/common/sys/mdesc_impl.h +++ b/usr/src/uts/common/sys/mdesc_impl.h @@ -115,7 +115,7 @@ struct MACHINE_DESCRIPTION { caddr_t caddr; void *(*allocp)(size_t); - void (*freep)(void*); + void (*freep)(void*, size_t); md_header_t *headerp; md_element_t *mdep; |