diff options
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r-- | usr/src/uts/common/disp/cmt.c | 4 | ||||
-rw-r--r-- | usr/src/uts/common/io/ppm/ppm.c | 16 | ||||
-rw-r--r-- | usr/src/uts/common/krtld/kobj.c | 11 | ||||
-rw-r--r-- | usr/src/uts/common/os/bp_map.c | 5 | ||||
-rw-r--r-- | usr/src/uts/common/os/lgrp.c | 7 | ||||
-rw-r--r-- | usr/src/uts/common/os/mem_config.c | 6 | ||||
-rw-r--r-- | usr/src/uts/common/sys/kobj_impl.h | 2 | ||||
-rw-r--r-- | usr/src/uts/common/vm/vm_pagelist.c | 30 | ||||
-rw-r--r-- | usr/src/uts/common/xen/io/xpvd.c | 10 |
9 files changed, 56 insertions, 35 deletions
diff --git a/usr/src/uts/common/disp/cmt.c b/usr/src/uts/common/disp/cmt.c index 0196b15dae..fd734bd229 100644 --- a/usr/src/uts/common/disp/cmt.c +++ b/usr/src/uts/common/disp/cmt.c @@ -1353,7 +1353,7 @@ cmt_pad_disable(pghw_type_t type) /* ARGSUSED */ static void cmt_ev_thread_swtch(pg_t *pg, cpu_t *cp, hrtime_t now, kthread_t *old, - kthread_t *new) + kthread_t *new) { pg_cmt_t *cmt_pg = (pg_cmt_t *)pg; @@ -1747,6 +1747,8 @@ pg_cmt_lineage_validate(pg_cmt_t **lineage, int *sz, cpu_pg_t *pgdata) lgrp_handle_t lgrp; ASSERT(MUTEX_HELD(&cpu_lock)); + pg = NULL; + pg_next = NULL; revalidate: size = *sz; diff --git a/usr/src/uts/common/io/ppm/ppm.c b/usr/src/uts/common/io/ppm/ppm.c index c53f1d723b..0e5c45e466 100644 --- a/usr/src/uts/common/io/ppm/ppm.c +++ b/usr/src/uts/common/io/ppm/ppm.c @@ -764,9 +764,10 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, ppm_owned_t *owned; int mode; int ret = DDI_SUCCESS; - int *res = (int *)result; + int *res = (int *)result; s3a_t s3args; + domp = NULL; #ifdef DEBUG char *str = "ppm_ctlops"; int mask = ppm_debug & (D_CTLOPS1 | D_CTLOPS2); @@ -827,6 +828,9 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, ppmd = ppm_get_dev(rdip, domp); } + if (domp == NULL) + return (DDI_FAILURE); + PPMD(D_LOCKS, ("ppm_lock_%s: %s, %s\n", (domp->dflags & PPMD_LOCK_ALL) ? "all" : "one", ppmd->path, ppm_get_ctlstr(reqp->request_type, D_LOCKS))) @@ -840,14 +844,17 @@ ppm_ctlops(dev_info_t *dip, dev_info_t *rdip, case PMR_PPM_POWER_LOCK_OWNER: ASSERT(reqp->req.ppm_power_lock_owner_req.who == rdip); ppmd = PPM_GET_PRIVATE(rdip); - if (ppmd) + if (ppmd) { domp = ppmd->domp; - else { + } else { domp = ppm_lookup_dev(rdip); ASSERT(domp); ppmd = ppm_get_dev(rdip, domp); } + if (domp == NULL) + return (DDI_FAILURE); + /* * In case of LOCK_ALL, effective owner of the power lock * is the owner of the domain lock. otherwise, it is the owner @@ -1400,6 +1407,9 @@ ppm_cpr_callb(void *arg, int code) mutex_exit(&ppm_cpr_window_lock); break; + default: + ret = DDI_SUCCESS; + break; } return (ret == DDI_SUCCESS); diff --git a/usr/src/uts/common/krtld/kobj.c b/usr/src/uts/common/krtld/kobj.c index 3ed867f0bf..8f2b885149 100644 --- a/usr/src/uts/common/krtld/kobj.c +++ b/usr/src/uts/common/krtld/kobj.c @@ -1176,7 +1176,6 @@ bind_primary(val_t *bootaux, int lmid) if (mp->flags & KOBJ_EXEC) { Dyn *dyn; Word relasz = 0, relaent = 0; - Word shtype; char *rela = NULL; for (dyn = (Dyn *)bootaux[BA_DYNAMIC].ba_ptr; @@ -1191,11 +1190,9 @@ bind_primary(val_t *bootaux, int lmid) relaent = dyn->d_un.d_val; break; case DT_RELA: - shtype = SHT_RELA; rela = (char *)dyn->d_un.d_ptr; break; case DT_REL: - shtype = SHT_REL; rela = (char *)dyn->d_un.d_ptr; break; } @@ -1212,8 +1209,8 @@ bind_primary(val_t *bootaux, int lmid) _kobj_printf(ops, "krtld: relocating: file=%s " "KOBJ_EXEC\n", mp->filename); #endif - if (do_relocate(mp, rela, shtype, relasz/relaent, - relaent, (Addr)mp->text) < 0) + if (do_relocate(mp, rela, relasz/relaent, relaent, + (Addr)mp->text) < 0) return (-1); } else { if (do_relocations(mp) < 0) @@ -2103,6 +2100,7 @@ kobj_load_primary_module(struct modctl *modp) if (kobj_load_module(modp, 0) != 0) return (-1); + dep = NULL; mp = modp->mod_mp; mp->flags |= KOBJ_PRIM; @@ -2118,7 +2116,8 @@ kobj_load_primary_module(struct modctl *modp) return (-1); } - add_dependent(mp, dep->mod_mp); + if (dep != NULL) + add_dependent(mp, dep->mod_mp); /* * Relocate it. This module may not be part of a link map, so we diff --git a/usr/src/uts/common/os/bp_map.c b/usr/src/uts/common/os/bp_map.c index 0fd5a5d216..b031514095 100644 --- a/usr/src/uts/common/os/bp_map.c +++ b/usr/src/uts/common/os/bp_map.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/types.h> #include <sys/sysmacros.h> #include <sys/systm.h> @@ -94,6 +92,7 @@ bp_mapin_common(struct buf *bp, int flag) pgcnt_t npages; int color; + as = NULL; /* return if already mapped in, no pageio/physio, or physio to kas */ if ((bp->b_flags & B_REMAPPED) || !(bp->b_flags & (B_PAGEIO | B_PHYS)) || @@ -283,8 +282,8 @@ bp_copy_common(bp_copydir_t dir, struct buf *bp, void *driverbuf, page_t *pp; pfn_t pfn; - ASSERT((offset + size) <= bp->b_bcount); + as = NULL; /* if the buf_t already has a KVA, just do a bcopy */ if (!(bp->b_flags & (B_PHYS | B_PAGEIO))) { diff --git a/usr/src/uts/common/os/lgrp.c b/usr/src/uts/common/os/lgrp.c index d8039f1a1f..f3404a1cdf 100644 --- a/usr/src/uts/common/os/lgrp.c +++ b/usr/src/uts/common/os/lgrp.c @@ -848,6 +848,7 @@ lgrp_create(void) int i; ASSERT(!lgrp_initialized || MUTEX_HELD(&cpu_lock)); + lgrpid = 0; /* * Find an open slot in the lgroup table and recycle unused lgroup @@ -1346,6 +1347,10 @@ lgrp_mem_init(int mnode, lgrp_handle_t hand, boolean_t is_copy_rename) klgrpset_add(changed, lgrp->lgrp_id); count++; } + } else { + if (drop_lock) + mutex_exit(&cpu_lock); + return; } /* @@ -3570,6 +3575,8 @@ lgrp_shm_policy_get(struct anon_map *amp, ulong_t anon_index, vnode_t *vp, avl_tree_t *tree; avl_index_t where; + shm_locality = NULL; + tree = NULL; /* * Get policy segment tree from anon_map or vnode and use specified * anon index or vnode offset as offset diff --git a/usr/src/uts/common/os/mem_config.c b/usr/src/uts/common/os/mem_config.c index 3571747e9c..c1a769d04d 100644 --- a/usr/src/uts/common/os/mem_config.c +++ b/usr/src/uts/common/os/mem_config.c @@ -144,7 +144,7 @@ kphysm_add_memory_dynamic(pfn_t base, pgcnt_t npgs) void *mapva; void *metabase = (void *)base; pgcnt_t nkpmpgs = 0; - offset_t kpm_pages_off; + offset_t kpm_pages_off = 0; cmn_err(CE_CONT, "?kphysm_add_memory_dynamic: adding %ldK at 0x%" PRIx64 "\n", @@ -410,7 +410,7 @@ mapalloc: * * If a memseg is reused, invalidate memseg pointers in * all cpu vm caches. We need to do this this since the check - * pp >= seg->pages && pp < seg->epages + * pp >= seg->pages && pp < seg->epages * used in various places is not atomic and so the first compare * can happen before reuse and the second compare after reuse. * The invalidation ensures that a memseg is not deferenced while @@ -2642,7 +2642,7 @@ kphysm_del_cleanup(struct mem_handle *mhp) { struct memdelspan *mdsp; struct memseg *seg; - struct memseg **segpp; + struct memseg **segpp; struct memseg *seglist; pfn_t p_end; uint64_t avmem; diff --git a/usr/src/uts/common/sys/kobj_impl.h b/usr/src/uts/common/sys/kobj_impl.h index 8b3ce3fdeb..a8488365b9 100644 --- a/usr/src/uts/common/sys/kobj_impl.h +++ b/usr/src/uts/common/sys/kobj_impl.h @@ -164,7 +164,7 @@ extern void kobj_init(void *romvec, void *dvec, extern int kobj_notify_add(kobj_notify_list_t *); extern int kobj_notify_remove(kobj_notify_list_t *); extern int do_relocations(struct module *); -extern int do_relocate(struct module *, char *, Word, int, int, Addr); +extern int do_relocate(struct module *, char *, int, int, Addr); extern struct bootops *ops; extern void exitto(caddr_t); extern void kobj_sync_instruction_memory(caddr_t, size_t); diff --git a/usr/src/uts/common/vm/vm_pagelist.c b/usr/src/uts/common/vm/vm_pagelist.c index f494c3d2b4..950b142588 100644 --- a/usr/src/uts/common/vm/vm_pagelist.c +++ b/usr/src/uts/common/vm/vm_pagelist.c @@ -318,16 +318,16 @@ static int mnode_maxmrange[MAX_MEM_NODES]; #define PAGE_COUNTERS(mnode, rg_szc, idx) \ (page_counters[(rg_szc)][(mnode)].hpm_counters[(idx)]) -#define PAGE_COUNTERS_COUNTERS(mnode, rg_szc) \ +#define PAGE_COUNTERS_COUNTERS(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_counters) -#define PAGE_COUNTERS_SHIFT(mnode, rg_szc) \ +#define PAGE_COUNTERS_SHIFT(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_shift) -#define PAGE_COUNTERS_ENTRIES(mnode, rg_szc) \ +#define PAGE_COUNTERS_ENTRIES(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_entries) -#define PAGE_COUNTERS_BASE(mnode, rg_szc) \ +#define PAGE_COUNTERS_BASE(mnode, rg_szc) \ (page_counters[(rg_szc)][(mnode)].hpm_base) #define PAGE_COUNTERS_CURRENT_COLOR_ARRAY(mnode, rg_szc, g) \ @@ -341,7 +341,7 @@ static int mnode_maxmrange[MAX_MEM_NODES]; (((pnum) - PAGE_COUNTERS_BASE((mnode), (rg_szc))) >> \ PAGE_COUNTERS_SHIFT((mnode), (rg_szc))) -#define IDX_TO_PNUM(mnode, rg_szc, index) \ +#define IDX_TO_PNUM(mnode, rg_szc, index) \ (PAGE_COUNTERS_BASE((mnode), (rg_szc)) + \ ((index) << PAGE_COUNTERS_SHIFT((mnode), (rg_szc)))) @@ -546,7 +546,7 @@ page_ctrs_sz(void) pfn_t physbase; pfn_t physmax; uint_t ctrs_sz = 0; - int i; + int i; pgcnt_t colors_per_szc[MMU_PAGE_SIZES]; /* @@ -1925,7 +1925,7 @@ static uint_t page_promote_noreloc_err; * accounting which needs to be done for a returned page. * * RFE: For performance pass in pp instead of pfnum so - * we can avoid excessive calls to page_numtopp_nolock(). + * we can avoid excessive calls to page_numtopp_nolock(). * This would depend on an assumption that all contiguous * pages are in the same memseg so we can just add/dec * our pp. @@ -1970,7 +1970,7 @@ page_promote(int mnode, pfn_t pfnum, uchar_t new_szc, int flags, int mtype) uint_t bin; pgcnt_t tmpnpgs, pages_left; uint_t noreloc; - int which_list; + int which_list; ulong_t index; kmutex_t *phm; @@ -2270,9 +2270,9 @@ page_t * page_freelist_coalesce(int mnode, uchar_t szc, uint_t color, uint_t ceq_mask, int mtype, pfn_t pfnhi) { - int r = szc; /* region size */ + int r = szc; /* region size */ int mrange; - uint_t full, bin, color_mask, wrap = 0; + uint_t full, bin, color_mask, wrap = 0; pfn_t pfnum, lo, hi; size_t len, idx, idx0; pgcnt_t cands = 0, szcpgcnt = page_get_pagecnt(szc); @@ -2420,7 +2420,7 @@ page_freelist_coalesce(int mnode, uchar_t szc, uint_t color, uint_t ceq_mask, /* * RFE: For performance maybe we can do something less * brutal than locking the entire freelist. So far - * this doesn't seem to be a performance problem? + * this doesn't seem to be a performance problem? */ page_freelist_lock(mnode); if (PAGE_COUNTERS(mnode, r, idx) == full) { @@ -2490,8 +2490,8 @@ wrapit: void page_freelist_coalesce_all(int mnode) { - int r; /* region size */ - int idx, full; + int r; /* region size */ + int idx, full; size_t len; int doall = interleaved_mnodes || mnode < 0; int mlo = doall ? 0 : mnode; @@ -2584,7 +2584,7 @@ page_freelist_split(uchar_t szc, uint_t color, int mnode, int mtype, pfn_t pfnlo, pfn_t pfnhi, page_list_walker_t *plw) { uchar_t nszc = szc + 1; - uint_t bin, sbin, bin_prev; + uint_t bin, sbin, bin_prev; page_t *pp, *firstpp; page_t *ret_pp = NULL; uint_t color_mask; @@ -4147,6 +4147,8 @@ page_get_replacement_page(page_t *orig_like_pp, struct lgrp *lgrp_target, lgrp_mnode_cookie_t lgrp_cookie; lgrp_t *lgrp; + mnode = 0; + lgrp = NULL; REPL_STAT_INCR(ngets); like_pp = orig_like_pp; ASSERT(PAGE_EXCL(like_pp)); diff --git a/usr/src/uts/common/xen/io/xpvd.c b/usr/src/uts/common/xen/io/xpvd.c index 5f8966fce7..4609580437 100644 --- a/usr/src/uts/common/xen/io/xpvd.c +++ b/usr/src/uts/common/xen/io/xpvd.c @@ -377,9 +377,11 @@ got_xs_prop: break; } - if ((rv == DDI_PROP_SUCCESS) && (prop_len > 0)) { - bcopy(prop_str, buff, prop_len); - *lengthp = prop_len; + if (rv == DDI_PROP_SUCCESS) { + if (prop_op != PROP_LEN) { + bcopy(prop_str, buff, prop_len); + *lengthp = prop_len; + } } kmem_free(prop_str, len); return (rv); @@ -874,7 +876,7 @@ i_xpvd_parse_devname(char *name, xendev_devclass_t *devclassp, int len = strlen(name) + 1; char *device_name = i_ddi_strdup(name, KM_SLEEP); char *cname = NULL, *caddr = NULL; - boolean_t ret; + boolean_t ret = B_FALSE; i_ddi_parse_name(device_name, &cname, &caddr, NULL); |