diff options
author | Patrick Mooney <pmooney@pfmooney.com> | 2016-06-13 18:25:25 +0000 |
---|---|---|
committer | Patrick Mooney <pmooney@pfmooney.com> | 2016-06-16 02:06:21 +0000 |
commit | 1f08385768db431ea5cf7fa5d3c37d4991908a2f (patch) | |
tree | 9b65dd195e13cbfb057c42cfda6c58ac91dfe697 /usr/src | |
parent | 3112412ca585c56db075bfd875b942c104281f36 (diff) | |
download | illumos-joyent-1f08385768db431ea5cf7fa5d3c37d4991908a2f.tar.gz |
OS-5462 lxbrand kernel should be lint clean
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Diffstat (limited to 'usr/src')
33 files changed, 306 insertions, 254 deletions
diff --git a/usr/src/uts/common/brand/lx/cgroups/cgrps.h b/usr/src/uts/common/brand/lx/cgroups/cgrps.h index df938adcea..82005fd1d8 100644 --- a/usr/src/uts/common/brand/lx/cgroups/cgrps.h +++ b/usr/src/uts/common/brand/lx/cgroups/cgrps.h @@ -202,8 +202,7 @@ extern struct vnodeops *cgrp_vnodeops; int cgrp_dirdelete(cgrp_node_t *, cgrp_node_t *, char *, enum dr_op, cred_t *); int cgrp_direnter(cgrp_mnt_t *, cgrp_node_t *, char *, enum de_op, - cgrp_node_t *, struct vattr *, cgrp_node_t **, cred_t *, - caller_context_t *); + cgrp_node_t *, struct vattr *, cgrp_node_t **, cred_t *); void cgrp_dirinit(cgrp_node_t *, cgrp_node_t *, cred_t *); int cgrp_dirlookup(cgrp_node_t *, char *, cgrp_node_t **, cred_t *); void cgrp_dirtrunc(cgrp_node_t *); diff --git a/usr/src/uts/common/brand/lx/cgroups/cgrps_node.c b/usr/src/uts/common/brand/lx/cgroups/cgrps_node.c index 8950be1966..66b6f60376 100644 --- a/usr/src/uts/common/brand/lx/cgroups/cgrps_node.c +++ b/usr/src/uts/common/brand/lx/cgroups/cgrps_node.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/types.h> @@ -32,7 +32,7 @@ static int cgrp_dirmakecgnode(cgrp_node_t *, cgrp_mnt_t *, struct vattr *, enum de_op, cgrp_node_t **, struct cred *); -static int cgrp_diraddentry(cgrp_node_t *, cgrp_node_t *, char *, enum de_op); +static int cgrp_diraddentry(cgrp_node_t *, cgrp_node_t *, char *); static cgrp_subsys_dirent_t cgrp_generic_dir[] = { { CG_PROCS, "cgroup.procs" }, @@ -128,7 +128,7 @@ cgrp_hash_out(cgrp_dirent_t *c) static cgrp_dirent_t * cgrp_hash_lookup(char *name, cgrp_node_t *parent, cgrp_nodehold_t hold, - cgrp_node_t **found) + cgrp_node_t **found) { cgrp_dirent_t *l; uint_t hash; @@ -222,15 +222,13 @@ cgrp_cg_hash_remove(cgrp_mnt_t *cgm, cgrp_node_t *cn) * We have to look at all of the processes to find applicable ones. */ static void -cgrp_cg_hash_init(cgrp_mnt_t *cgm, cgrp_node_t *cn) +cgrp_cg_hash_init(cgrp_node_t *cn) { int i; int cnt = 0; zoneid_t zoneid = curproc->p_zone->zone_id; pid_t schedpid = curproc->p_zone->zone_zsched->p_pid; - ASSERT(MUTEX_HELD(&cgm->cg_contents)); - /* Scan all of the process entries */ mutex_enter(&pidlock); for (i = 1; i < v.v_proc; i++) { @@ -351,10 +349,9 @@ int cgrp_dirlookup(cgrp_node_t *parent, char *name, cgrp_node_t **foundcp, cred_t *cred) { - cgrp_mnt_t *cgm = VTOCGM(parent->cgn_vnode); int error; - ASSERT(MUTEX_HELD(&cgm->cg_contents)); + ASSERT(MUTEX_HELD(&VTOCGM(parent->cgn_vnode)->cg_contents)); *foundcp = NULL; if (parent->cgn_type != CG_CGROUP_DIR) return (ENOTDIR); @@ -398,8 +395,7 @@ cgrp_direnter( cgrp_node_t *cn, /* existing cgrp_node, if rename */ struct vattr *va, cgrp_node_t **cnp, /* return cgrp_node, if create/mkdir */ - cred_t *cred, - caller_context_t *ctp) + cred_t *cred) { cgrp_dirent_t *cdp; cgrp_node_t *found = NULL; @@ -484,7 +480,7 @@ cgrp_direnter( } } - error = cgrp_diraddentry(dir, cn, name, op); + error = cgrp_diraddentry(dir, cn, name); if (error != 0) { if (op == DE_CREATE || op == DE_MKDIR) { /* @@ -715,8 +711,8 @@ cgrp_addnode(cgrp_mnt_t *cgm, cgrp_node_t *dir, char *name, ASSERT(MUTEX_HELD(&cgm->cg_contents)); - cgrp_direnter(cgm, dir, name, DE_CREATE, (cgrp_node_t *)NULL, nattr, - &ncn, cr, NULL); + VERIFY0(cgrp_direnter(cgm, dir, name, DE_CREATE, (cgrp_node_t *)NULL, + nattr, &ncn, cr)); /* * Fix the inode and assign the pseudo file type to be correct. @@ -772,7 +768,7 @@ cgrp_dirinit(cgrp_node_t *parent, cgrp_node_t *dir, cred_t *cr) cgrp_cg_hash_insert(cgm, dir); /* Initialise the first cgroup if this is top-level group */ if (parent == dir) - cgrp_cg_hash_init(cgm, dir); + cgrp_cg_hash_init(dir); /* * Initialize the entries @@ -844,9 +840,8 @@ cgrp_dirtrunc(cgrp_node_t *dir) { cgrp_dirent_t *cgdp; timestruc_t now; - cgrp_mnt_t *cgm = VTOCGM(dir->cgn_vnode); - ASSERT(MUTEX_HELD(&cgm->cg_contents)); + ASSERT(MUTEX_HELD(&VTOCGM(dir->cgn_vnode)->cg_contents)); ASSERT(dir->cgn_type == CG_CGROUP_DIR); for (cgdp = dir->cgn_dir; cgdp; cgdp = dir->cgn_dir) { @@ -884,7 +879,7 @@ cgrp_dirtrunc(cgrp_node_t *dir) } static int -cgrp_diraddentry(cgrp_node_t *dir, cgrp_node_t *cn, char *name, enum de_op op) +cgrp_diraddentry(cgrp_node_t *dir, cgrp_node_t *cn, char *name) { cgrp_dirent_t *cdp, *cpdp; size_t namelen, alloc_size; diff --git a/usr/src/uts/common/brand/lx/cgroups/cgrps_vfsops.c b/usr/src/uts/common/brand/lx/cgroups/cgrps_vfsops.c index a9bd783569..22966295e0 100644 --- a/usr/src/uts/common/brand/lx/cgroups/cgrps_vfsops.c +++ b/usr/src/uts/common/brand/lx/cgroups/cgrps_vfsops.c @@ -484,7 +484,7 @@ cgrp_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr) cgm->cg_rootnode = cp; cp->cgn_type = CG_CGROUP_DIR; - cp->cgn_nodeid = cgrp_inode(ssid, cgm->cg_gen); + cp->cgn_nodeid = cgrp_inode(CG_CGROUP_DIR, cgm->cg_gen); cgrp_dirinit(cp, cp, cr); mutex_exit(&cgm->cg_contents); @@ -915,7 +915,6 @@ cgrp_rel_agent_event(cgrp_mnt_t *cgm, cgrp_node_t *cn) char nm[MAXNAMELEN]; char *argstr, *oldstr, *tmp; id_t cid; - int agent_err; proc_t *p = ttoproc(curthread); zone_t *z = p->p_zone; lx_lwp_data_t *plwpd = ttolxlwp(curthread); @@ -944,7 +943,7 @@ cgrp_rel_agent_event(cgrp_mnt_t *cgm, cgrp_node_t *cn) * Iterate up the directory tree to construct the agent argument string. */ do { - cgrp_get_dirname(cn, nm, sizeof (nm)); + VERIFY0(cgrp_get_dirname(cn, nm, sizeof (nm))); DTRACE_PROBE1(cgrp__dir__name, char *, nm); if (*argstr == '\0') { (void) snprintf(argstr, MAXPATHLEN, "/%s", nm); @@ -999,8 +998,8 @@ cgrp_rel_agent_event(cgrp_mnt_t *cgm, cgrp_node_t *cn) if (cid == -1) cid = defaultcid; - if ((agent_err = newproc(cgrp_run_rel_agent, (void *)rarg, cid, - minclsyspri - 1, NULL, -1)) != 0) { + if (newproc(cgrp_run_rel_agent, (void *)rarg, cid, minclsyspri - 1, + NULL, -1) != 0) { /* There's nothing we can do if creating the proc fails. */ kmem_free(rarg->crraa_event_path, MAXPATHLEN); kmem_free(rarg->crraa_agent_path, sizeof (cgm->cg_agent)); diff --git a/usr/src/uts/common/brand/lx/cgroups/cgrps_vnops.c b/usr/src/uts/common/brand/lx/cgroups/cgrps_vnops.c index bd571c8c18..08136ddfdb 100644 --- a/usr/src/uts/common/brand/lx/cgroups/cgrps_vnops.c +++ b/usr/src/uts/common/brand/lx/cgroups/cgrps_vnops.c @@ -401,15 +401,12 @@ cgrp_wr_proc_or_task(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio, } static int -cgrp_wr(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio, struct cred *cr, - caller_context_t *ct) +cgrp_wr(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) { - struct vnode *vp; int error = 0; rlim64_t limit = uio->uio_llimit; - vp = CGNTOV(cn); - ASSERT(vp->v_type == VREG); + ASSERT(CGNTOV(cn)->v_type == VREG); if (uio->uio_loffset < 0) return (EINVAL); @@ -610,7 +607,7 @@ cgrp_rd_procs(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) /* Scan all of the process entries */ for (i = 1; i < v.v_proc && (uresid = uio->uio_resid) > 0; i++) { proc_t *p; - int len; + ssize_t len; pid_t pid; char buf[16]; char *rdp; @@ -780,12 +777,11 @@ cgrp_rd_proc_tasks(uint_t cg_id, proc_t *p, pid_t initpid, ssize_t *offset, * can change if we fill up the read buffer and come back later for a * subsequent read). */ -int +static int cgrp_rd_tasks(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) { int i; ssize_t offset = 0; - ssize_t uresid; zoneid_t zoneid = curproc->p_zone->zone_id; int error = 0; pid_t initpid = curproc->p_zone->zone_proc_initpid; @@ -794,7 +790,7 @@ cgrp_rd_tasks(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) uint_t cg_id = cn->cgn_parent->cgn_id; /* Scan all of the process entries */ - for (i = 1; i < v.v_proc && (uresid = uio->uio_resid) > 0; i++) { + for (i = 1; i < v.v_proc && uio->uio_resid > 0; i++) { proc_t *p; mutex_enter(&pidlock); @@ -843,7 +839,7 @@ cgrp_rd_tasks(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) } static int -cgrp_rd(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio, caller_context_t *ct) +cgrp_rd(cgrp_mnt_t *cgm, cgrp_node_t *cn, struct uio *uio) { int error = 0; @@ -890,11 +886,12 @@ cgrp_read(struct vnode *vp, struct uio *uiop, int ioflag, cred_t *cred, return (EISDIR); if (vp->v_type != VREG) return (EINVAL); - error = cgrp_rd(cgm, cn, uiop, ct); + error = cgrp_rd(cgm, cn, uiop); return (error); } +/* ARGSUSED */ static int cgrp_write(struct vnode *vp, struct uio *uiop, int ioflag, struct cred *cred, struct caller_context *ct) @@ -914,7 +911,7 @@ cgrp_write(struct vnode *vp, struct uio *uiop, int ioflag, struct cred *cred, uiop->uio_loffset = cn->cgn_size; } - error = cgrp_wr(cgm, cn, uiop, cred, ct); + error = cgrp_wr(cgm, cn, uiop); return (error); } @@ -926,15 +923,9 @@ cgrp_getattr(struct vnode *vp, struct vattr *vap, int flags, struct cred *cred, { cgrp_node_t *cn = VTOCGN(vp); cgrp_mnt_t *cgm; - struct vattr va; - int attrs = 1; cgm = VTOCGM(cn->cgn_vnode); mutex_enter(&cgm->cg_contents); - if (attrs == 0) { - cn->cgn_uid = va.va_uid; - cn->cgn_gid = va.va_gid; - } vap->va_type = vp->v_type; vap->va_mode = cn->cgn_mode & MODEMASK; vap->va_uid = cn->cgn_uid; @@ -1065,7 +1056,7 @@ cgrp_lookup(struct vnode *dvp, char *nm, struct vnode **vpp, return (error); } -/*ARGSUSED7*/ +/* ARGSUSED */ static int cgrp_create(struct vnode *dvp, char *nm, struct vattr *vap, enum vcexcl exclusive, int mode, struct vnode **vpp, struct cred *cred, @@ -1141,7 +1132,7 @@ cgrp_remove(struct vnode *dvp, char *nm, struct cred *cred, return (EPERM); } -/* ARGSUSED4 */ +/* ARGSUSED */ static int cgrp_link(struct vnode *dvp, struct vnode *srcvp, char *cnm, struct cred *cred, caller_context_t *ct, int flags) @@ -1222,7 +1213,7 @@ cgrp_rename( */ error = cgrp_direnter(cgm, fromparent, nnm, DE_RENAME, fromcn, (struct vattr *)NULL, - (cgrp_node_t **)NULL, cred, ct); + (cgrp_node_t **)NULL, cred); if (error) goto done; @@ -1282,7 +1273,7 @@ cgrp_mkdir(struct vnode *dvp, char *nm, struct vattr *va, struct vnode **vpp, } error = cgrp_direnter(cgm, parent, nm, DE_MKDIR, (cgrp_node_t *)NULL, - va, &self, cred, ct); + va, &self, cred); if (error) { mutex_exit(&cgm->cg_contents); if (self != NULL) @@ -1422,6 +1413,7 @@ cgrp_readdir(struct vnode *vp, struct uio *uiop, struct cred *cred, int *eofp, bufsize = total_bytes_wanted + sizeof (struct dirent64); outbuf = kmem_alloc(bufsize, KM_SLEEP); + /* LINTED: alignment */ dp = (struct dirent64 *)outbuf; offset = 0; @@ -1478,7 +1470,7 @@ cgrp_readdir(struct vnode *vp, struct uio *uiop, struct cred *cred, int *eofp, return (error); } -/* ARGSUSED5 */ +/* ARGSUSED */ static int cgrp_symlink(struct vnode *dvp, char *lnm, struct vattr *cva, char *cnm, struct cred *cred, caller_context_t *ct, int flags) diff --git a/usr/src/uts/common/brand/lx/devfs/lxd.h b/usr/src/uts/common/brand/lx/devfs/lxd.h index cd256c27c5..a0813a9a12 100644 --- a/usr/src/uts/common/brand/lx/devfs/lxd.h +++ b/usr/src/uts/common/brand/lx/devfs/lxd.h @@ -215,9 +215,8 @@ vnode_t *lxd_make_back_node(vnode_t *, lxd_mnt_t *); void lxd_free_back_node(lxd_node_t *); int lxd_dirdelete(lxd_node_t *, lxd_node_t *, char *, enum dr_op, cred_t *); int lxd_direnter(lxd_mnt_t *, lxd_node_t *, char *, enum de_op, lxd_node_t *, - lxd_node_t *, struct vattr *, lxd_node_t **, cred_t *, - caller_context_t *); -void lxd_dirinit(lxd_node_t *, lxd_node_t *, cred_t *); + lxd_node_t *, struct vattr *, lxd_node_t **, cred_t *); +void lxd_dirinit(lxd_node_t *, lxd_node_t *); int lxd_dirlookup(lxd_node_t *, char *, lxd_node_t **, cred_t *); void lxd_dirtrunc(lxd_node_t *); void lxd_node_init(lxd_mnt_t *, lxd_node_t *, vnode_t *, vattr_t *, cred_t *); diff --git a/usr/src/uts/common/brand/lx/devfs/lxd_node.c b/usr/src/uts/common/brand/lx/devfs/lxd_node.c index 9e67f988bc..0d056ab167 100644 --- a/usr/src/uts/common/brand/lx/devfs/lxd_node.c +++ b/usr/src/uts/common/brand/lx/devfs/lxd_node.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/types.h> @@ -318,7 +318,7 @@ lxd_dirlookup(lxd_node_t *parent, char *name, lxd_node_t **foundnp, cred_t *cr) * The target directory is locked by the caller. */ static int -lxd_dircheckpath(lxd_node_t *fromnode, lxd_node_t *toparent, cred_t *cr) +lxd_dircheckpath(lxd_node_t *fromnode, lxd_node_t *toparent) { int error = 0; lxd_node_t *dir, *dotdot; @@ -402,7 +402,7 @@ lxd_dir_make_node(lxd_node_t *dir, lxd_mnt_t *lxdm, struct vattr *va, ldn->lxdn_mtime = va->va_mtime; if (op == DE_MKDIR) { - lxd_dirinit(dir, ldn, cred); + lxd_dirinit(dir, ldn); } *newnode = ldn; @@ -410,7 +410,7 @@ lxd_dir_make_node(lxd_node_t *dir, lxd_mnt_t *lxdm, struct vattr *va, } static int -lxd_diraddentry(lxd_node_t *dir, lxd_node_t *ldn, char *name, enum de_op op) +lxd_diraddentry(lxd_node_t *dir, lxd_node_t *ldn, char *name) { lxd_dirent_t *dp, *pdp; size_t namelen, alloc_size; @@ -525,8 +525,7 @@ lxd_direnter( lxd_node_t *ldn, /* existing lxd_node, if rename */ struct vattr *va, lxd_node_t **rnp, /* return lxd_node, if create/mkdir */ - cred_t *cr, - caller_context_t *ctp) + cred_t *cr) { lxd_dirent_t *dirp; lxd_node_t *found = NULL; @@ -591,7 +590,7 @@ lxd_direnter( } if ((ldn->lxdn_vnode->v_type) == VDIR) { if ((fromparent != dir) && - (error = lxd_dircheckpath(ldn, dir, cr)) != 0) { + (error = lxd_dircheckpath(ldn, dir)) != 0) { goto out; } } @@ -634,7 +633,7 @@ lxd_direnter( if (error != 0) goto out; - error = lxd_diraddentry(dir, ldn, name, op); + error = lxd_diraddentry(dir, ldn, name); if (error == 0 && rnp != NULL) *rnp = ldn; break; @@ -657,7 +656,7 @@ lxd_direnter( goto out; } - error = lxd_diraddentry(dir, ldn, name, op); + error = lxd_diraddentry(dir, ldn, name); if (error != 0) { if (op == DE_CREATE || op == DE_MKDIR) { /* @@ -895,7 +894,7 @@ lxd_node_init(lxd_mnt_t *lxdm, lxd_node_t *ldn, vnode_t *realvp, vattr_t *vap, * directory. */ void -lxd_dirinit(lxd_node_t *parent, lxd_node_t *dir, cred_t *cr) +lxd_dirinit(lxd_node_t *parent, lxd_node_t *dir) { lxd_dirent_t *dot, *dotdot; timestruc_t now; diff --git a/usr/src/uts/common/brand/lx/devfs/lxd_vfsops.c b/usr/src/uts/common/brand/lx/devfs/lxd_vfsops.c index b474c329ad..e176bec7a4 100644 --- a/usr/src/uts/common/brand/lx/devfs/lxd_vfsops.c +++ b/usr/src/uts/common/brand/lx/devfs/lxd_vfsops.c @@ -320,7 +320,7 @@ lxd_xlate_init() if (lookupnameat(tpath, UIO_SYSSPACE, FOLLOW, NULL, &vp, NULL) != 0) { - mt[j].lxd_mt_minor = -1; + mt[j].lxd_mt_minor = UINT_MAX; continue; } @@ -476,7 +476,7 @@ lxd_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr) lxdm->lxdm_rootnode = ldn; ldn->lxdn_nodeid = lxdm->lxdm_gen++; - lxd_dirinit(ldn, ldn, cr); + lxd_dirinit(ldn, ldn); rw_exit(&ldn->lxdn_rwlock); @@ -823,6 +823,7 @@ lxd_pts_devt_translator(dev_t dev, dev_t *jdev) *jdev = LX_MAKEDEVICE(lx_maj, lx_min); } +/* ARGSUSED */ static void lxd_ptm_devt_translator(dev_t dev, dev_t *jdev) { diff --git a/usr/src/uts/common/brand/lx/devfs/lxd_vnops.c b/usr/src/uts/common/brand/lx/devfs/lxd_vnops.c index bee93f6aad..a39cd5a0db 100644 --- a/usr/src/uts/common/brand/lx/devfs/lxd_vnops.c +++ b/usr/src/uts/common/brand/lx/devfs/lxd_vnops.c @@ -355,6 +355,7 @@ lxd_fsync(vnode_t *vp, int syncflag, struct cred *cr, caller_context_t *ct) return (VOP_FSYNC(vp, syncflag, cr, ct)); } +/* ARGSUSED */ static void lxd_front_inactive(struct vnode *vp, struct cred *cred, caller_context_t *ct) { @@ -658,7 +659,7 @@ lxd_create(vnode_t *dvp, char *nm, struct vattr *va, enum vcexcl exclusive, lnp = NULL; rw_enter(&parent->lxdn_rwlock, RW_WRITER); error = lxd_direnter(lxdm, parent, nm, DE_CREATE, NULL, NULL, - va, &lnp, cr, ct); + va, &lnp, cr); rw_exit(&parent->lxdn_rwlock); if (error == 0) { @@ -677,6 +678,7 @@ lxd_create(vnode_t *dvp, char *nm, struct vattr *va, enum vcexcl exclusive, return (error); } +/* ARGSUSED */ static int lxd_remove(vnode_t *dvp, char *nm, struct cred *cr, caller_context_t *ct, int flags) @@ -706,6 +708,7 @@ lxd_remove(vnode_t *dvp, char *nm, struct cred *cr, caller_context_t *ct, return (error); } +/* ARGSUSED */ static int lxd_link(vnode_t *tdvp, vnode_t *vp, char *tnm, struct cred *cr, caller_context_t *ct, int flags) @@ -713,6 +716,7 @@ lxd_link(vnode_t *tdvp, vnode_t *vp, char *tnm, struct cred *cr, return (ENOTSUP); } +/* ARGSUSED */ static int lxd_rename(vnode_t *odvp, char *onm, vnode_t *ndvp, char *nnm, struct cred *cr, caller_context_t *ct, int flags) @@ -780,7 +784,7 @@ lxd_rename(vnode_t *odvp, char *onm, vnode_t *ndvp, char *nnm, struct cred *cr, rw_enter(&newparent->lxdn_rwlock, RW_WRITER); error = lxd_direnter(lxdm, newparent, nnm, DE_RENAME, oldparent, fromnode, (struct vattr *)NULL, (lxd_node_t **)NULL, - cr, ct); + cr); rw_exit(&newparent->lxdn_rwlock); if (error) @@ -810,6 +814,7 @@ done: return (error); } +/* ARGSUSED */ static int lxd_mkdir(vnode_t *dvp, char *nm, struct vattr *va, vnode_t **vpp, struct cred *cr, caller_context_t *ct, int flags, vsecattr_t *vsecp) @@ -830,7 +835,7 @@ lxd_mkdir(vnode_t *dvp, char *nm, struct vattr *va, vnode_t **vpp, /* make front directory */ rw_enter(&parent->lxdn_rwlock, RW_WRITER); error = lxd_direnter(lxdm, parent, nm, DE_MKDIR, NULL, NULL, - va, &ndir, cr, ct); + va, &ndir, cr); rw_exit(&parent->lxdn_rwlock); if (error != 0) { @@ -862,6 +867,7 @@ lxd_realvp(vnode_t *vp, vnode_t **vpp, caller_context_t *ct) return (0); } +/* ARGSUSED */ static int lxd_rmdir(vnode_t *dvp, char *nm, vnode_t *cdir, struct cred *cr, caller_context_t *ct, int flags) @@ -936,6 +942,7 @@ err: } /* Not static so it can be used during mount. */ +/* ARGSUSED */ int lxd_symlink(vnode_t *dvp, char *nm, struct vattr *tva, char *tnm, struct cred *cr, caller_context_t *ct, int flags) @@ -958,7 +965,7 @@ lxd_symlink(vnode_t *dvp, char *nm, struct vattr *tva, char *tnm, /* make symlink in the front */ rw_enter(&parent->lxdn_rwlock, RW_WRITER); error = lxd_direnter(lxdm, parent, nm, DE_CREATE, NULL, NULL, - tva, &self, cr, ct); + tva, &self, cr); rw_exit(&parent->lxdn_rwlock); if (error) { diff --git a/usr/src/uts/common/brand/lx/io/lx_netlink.c b/usr/src/uts/common/brand/lx/io/lx_netlink.c index 6fec9ef4cb..d25a5d1296 100644 --- a/usr/src/uts/common/brand/lx/io/lx_netlink.c +++ b/usr/src/uts/common/brand/lx/io/lx_netlink.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ /* @@ -591,7 +591,7 @@ lx_netlink_alloc_mp1(lx_netlink_sock_t *lxsock) mp->b_datap->db_type = M_PROTO; tunit->PRIM_type = T_UNITDATA_IND; tunit->SRC_length = sizeof (*lxsa); - tunit->SRC_offset = (caddr_t)lxsa - (caddr_t)mp->b_rptr; + tunit->SRC_offset = sizeof (*tunit); lxsa->lxnl_family = AF_LX_NETLINK; lxsa->lxnl_port = 0; @@ -613,7 +613,7 @@ lx_netlink_alloc_mp1(lx_netlink_sock_t *lxsock) tunit->OPT_length = sizeof (*cmsg) + ROUNDUP_cmsglen(sizeof (*ucred)); - tunit->OPT_offset = (caddr_t)cmsg - (caddr_t)mp->b_rptr; + tunit->OPT_offset = tunit->SRC_offset + tunit->SRC_length; } else { tunit->OPT_length = 0; tunit->OPT_offset = 0; @@ -917,7 +917,8 @@ lx_netlink_parse_msg_attrs(mblk_t *mp, void **msgp, unsigned int msg_size, * Takes an IPv4 address (in network byte order) and returns the address scope. */ static uint8_t -lx_ipv4_rtscope(in_addr_t nbo_addr) { +lx_ipv4_rtscope(in_addr_t nbo_addr) +{ in_addr_t addr = ntohl(nbo_addr); if ((addr >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET) { return (LX_RTSCOPE_HOST); @@ -936,7 +937,8 @@ lx_ipv4_rtscope(in_addr_t nbo_addr) { * Takes an IPv6 address and returns the address scope. */ static uint8_t -lx_ipv6_rtscope(const in6_addr_t *addr) { +lx_ipv6_rtscope(const in6_addr_t *addr) +{ if (IN6_ARE_ADDR_EQUAL(addr, &ipv6_loopback)) { return (LX_RTSCOPE_HOST); } else if (IN6_IS_ADDR_LINKLOCAL(addr)) { @@ -1029,7 +1031,7 @@ lx_netlink_getlink_lifreq(lx_netlink_reply_t *reply, struct lifreq *lifr) sdl = (struct sockaddr_dl *)&lifr->lifr_addr; bzero(sdl, sizeof (*sdl)); if (!is_loopback) { - lx_netlink_reply_ioctl(reply, SIOCGLIFHWADDR, lifr); + (void) lx_netlink_reply_ioctl(reply, SIOCGLIFHWADDR, lifr); } else { /* Simulate an empty hwaddr for loopback */ sdl->sdl_type = DL_LOOP; diff --git a/usr/src/uts/common/brand/lx/os/lx_brand.c b/usr/src/uts/common/brand/lx/os/lx_brand.c index 6cff045a80..c74d5e8ebd 100644 --- a/usr/src/uts/common/brand/lx/os/lx_brand.c +++ b/usr/src/uts/common/brand/lx/os/lx_brand.c @@ -182,8 +182,7 @@ void lx_free_brand_data(zone_t *); void lx_setbrand(proc_t *); int lx_getattr(zone_t *, int, void *, size_t *); int lx_setattr(zone_t *, int, void *, size_t); -int lx_brandsys(int, int64_t *, uintptr_t, uintptr_t, uintptr_t, - uintptr_t, uintptr_t); +int lx_brandsys(int, int64_t *, uintptr_t, uintptr_t, uintptr_t, uintptr_t); void lx_set_kern_version(zone_t *, char *); void lx_copy_procdata(proc_t *, proc_t *); @@ -333,7 +332,7 @@ lx_proc_exit(proc_t *p) proc_t *cp; mutex_enter(&p->p_lock); - VERIFY(lxpd = ptolxproc(p)); + VERIFY((lxpd = ptolxproc(p)) != NULL); VERIFY(lxpd->l_ptrace == 0); if ((lxpd->l_flags & LX_PROC_CHILD_DEATHSIG) == 0) { mutex_exit(&p->p_lock); @@ -471,7 +470,7 @@ lx_map32limit(proc_t *p) * This is only relevant for 64-bit processes. */ if (p->p_model == DATAMODEL_LP64) - return (1 << 31); + return ((uint32_t)1 << 31); return ((uint32_t)USERLIMIT32); } @@ -549,6 +548,7 @@ lx_pagefault(proc_t *p, klwp_t *lwp, caddr_t addr, enum fault_type type, * Critically, this routine should _not_ modify any LWP state as the * savecontext() does not run until after this hook. */ +/* ARGSUSED */ static caddr_t lx_sendsig_stack(int sig) { @@ -583,6 +583,7 @@ lx_sendsig_stack(int sig) * per-LWP mode flags for system calls and stacks. The pre-signal * context has already been saved and delivered to the user at this point. */ +/* ARGSUSED */ static void lx_sendsig(int sig) { @@ -832,7 +833,7 @@ lx_zone_zfs_open(ldi_handle_t *lh, dev_t *zfs_dev) } ldi_ident_release(li); if (ldi_get_dev(*lh, zfs_dev) != 0) { - ldi_close(*lh, FREAD|FWRITE, kcred); + (void) ldi_close(*lh, FREAD|FWRITE, kcred); return (-1); } return (0); @@ -990,7 +991,7 @@ lx_zone_get_zvols(zone_t *zone, ldi_handle_t lh, minor_t *emul_minor) (*emul_minor)++); if (zvol_name2minor(znm, &m) != 0) { (void) zvol_create_minor(znm); - zvol_name2minor(znm, &m); + VERIFY(zvol_name2minor(znm, &m) == 0); } if (m != 0) { vd->lxvd_real_dev = makedevice( @@ -1044,7 +1045,7 @@ lx_zone_get_zfsds(zone_t *zone, minor_t *emul_minor) vd->lxvd_type = LXVD_ZFS_DS; vd->lxvd_real_dev = vfsp->vfs_dev; vd->lxvd_emul_dev = makedevice(LX_MAJOR_DISK, (*emul_minor)++); - snprintf(vd->lxvd_name, sizeof (vd->lxvd_name), + (void) snprintf(vd->lxvd_name, sizeof (vd->lxvd_name), "zfsds%u", 0); (void) strlcpy(vd->lxvd_real_name, refstr_value(vfsp->vfs_resource), @@ -1121,7 +1122,7 @@ lx_init_brand_data(zone_t *zone, kmutex_t *zsl) lx_zone_get_zfsds(zone, &emul_minor); lx_zone_get_zvols(zone, lh, &emul_minor); - ldi_close(lh, FREAD|FWRITE, kcred); + (void) ldi_close(lh, FREAD|FWRITE, kcred); } else { /* Avoid matching any devices */ data->lxzd_zfs_dev = makedevice(-1, 0); @@ -1140,7 +1141,7 @@ lx_free_brand_data(zone_t *zone) * Since zone_kcred has been cleaned up already, close the * socket using the global kcred. */ - ksocket_close(data->lxzd_ioctl_sock, kcred); + (void) ksocket_close(data->lxzd_ioctl_sock, kcred); data->lxzd_ioctl_sock = NULL; } ASSERT(data->lxzd_cgroup == NULL); @@ -1228,7 +1229,7 @@ lx_trace_sysreturn(int syscall_num, long ret) */ int lx_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, uintptr_t arg5) + uintptr_t arg3, uintptr_t arg4) { kthread_t *t = curthread; klwp_t *lwp = ttolwp(t); @@ -1433,18 +1434,19 @@ lx_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, */ int native_sig = lx_ltos_signo((int)arg2, 0); - pid_t native_pid; - int native_tid; + pid_t spid; + int stid; sigqueue_t *sqp; if (native_sig == 0) return (EINVAL); - lx_lpid_to_spair((pid_t)arg1, &native_pid, &native_tid); + if (lx_lpid_to_spair((pid_t)arg1, &spid, &stid) != 0) { + return (ESRCH); + } sqp = kmem_zalloc(sizeof (sigqueue_t), KM_SLEEP); mutex_enter(&curproc->p_lock); - - if ((t = idtot(curproc, native_tid)) == NULL) { + if ((t = idtot(curproc, stid)) == NULL) { mutex_exit(&curproc->p_lock); kmem_free(sqp, sizeof (sigqueue_t)); return (ESRCH); @@ -1483,45 +1485,6 @@ lx_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, return (lx_ptrace_set_clone_inherit((int)arg1, arg2 == 0 ? B_FALSE : B_TRUE)); - case B_HELPER_WAITID: { - idtype_t idtype = (idtype_t)arg1; - id_t id = (id_t)arg2; - siginfo_t *infop = (siginfo_t *)arg3; - int options = (int)arg4; - - lwpd = ttolxlwp(curthread); - - /* - * Our brand-specific waitid helper only understands a subset of - * the possible idtypes. Ensure we keep to that subset here: - */ - if (idtype != P_ALL && idtype != P_PID && idtype != P_PGID) { - return (EINVAL); - } - - /* - * Enable the return of emulated ptrace(2) stop conditions - * through lx_waitid_helper, and stash the Linux-specific - * extra waitid() flags. - */ - lwpd->br_waitid_emulate = B_TRUE; - lwpd->br_waitid_flags = (int)arg5; - -#if defined(_SYSCALL32_IMPL) - if (get_udatamodel() != DATAMODEL_NATIVE) { - return (waitsys32(idtype, id, infop, options)); - } else -#endif - { - return (waitsys(idtype, id, infop, options)); - } - - lwpd->br_waitid_emulate = B_FALSE; - lwpd->br_waitid_flags = 0; - - return (0); - } - case B_UNSUPPORTED: { char dmsg[256]; @@ -1744,7 +1707,7 @@ lx_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, * lx_syscall_return() looks at the errno in the LWP, * so set it here: */ - set_errno(error); + (void) set_errno(error); } lx_syscall_return(ttolwp(curthread), (int)arg2, (long)arg3); @@ -1842,6 +1805,7 @@ lx_kern_release_cmp(zone_t *zone, const char *vers) * file ownership. This brand hook overrides the illumos native behaviour, * which is based on the PRIV_FILE_SETID privilege. */ +/* ARGSUSED */ static int lx_setid_clear(vattr_t *vap, cred_t *cr) { @@ -1875,11 +1839,11 @@ lx_copy_procdata(proc_t *cp, proc_t *pp) * be required. */ VERIFY(cp->p_brand == &lx_brand); - VERIFY(cpd = cp->p_brand_data); + VERIFY((cpd = cp->p_brand_data) != NULL); mutex_enter(&pp->p_lock); VERIFY(pp->p_brand == &lx_brand); - VERIFY(ppd = pp->p_brand_data); + VERIFY((ppd = pp->p_brand_data) != NULL); bcopy(ppd, cpd, sizeof (lx_proc_data_t)); mutex_exit(&pp->p_lock); @@ -2003,6 +1967,7 @@ lx_map_vdso(struct uarg *args, struct cred *cred) * Exec routine called by elfexec() to load either 32-bit or 64-bit Linux * binaries. */ +/* ARGSUSED4 */ static int lx_elfexec(struct vnode *vp, struct execa *uap, struct uarg *args, struct intpdata *idata, int level, long *execsz, int setid, @@ -2084,6 +2049,7 @@ lx_elfexec(struct vnode *vp, struct execa *uap, struct uarg *args, } hsize = ehdr.e_phentsize; + /* LINTED: alignment */ phdrp = (Phdr *)phdrbase; for (i = nphdrs; i > 0; i--) { switch (phdrp->p_type) { @@ -2093,6 +2059,7 @@ lx_elfexec(struct vnode *vp, struct execa *uap, struct uarg *args, } break; } + /* LINTED: alignment */ phdrp = (Phdr *)((caddr_t)phdrp + hsize); } kmem_free(phdrbase, phdrsize); @@ -2111,6 +2078,7 @@ lx_elfexec(struct vnode *vp, struct execa *uap, struct uarg *args, } hsize = ehdr.e_phentsize; + /* LINTED: alignment */ phdrp = (Elf32_Phdr *)phdrbase; for (i = nphdrs; i > 0; i--) { switch (phdrp->p_type) { @@ -2120,6 +2088,7 @@ lx_elfexec(struct vnode *vp, struct execa *uap, struct uarg *args, } break; } + /* LINTED: alignment */ phdrp = (Elf32_Phdr *)((caddr_t)phdrp + hsize); } kmem_free(phdrbase, phdrsize); diff --git a/usr/src/uts/common/brand/lx/os/lx_misc.c b/usr/src/uts/common/brand/lx/os/lx_misc.c index 7ede833ca4..267c720e67 100644 --- a/usr/src/uts/common/brand/lx/os/lx_misc.c +++ b/usr/src/uts/common/brand/lx/os/lx_misc.c @@ -146,7 +146,7 @@ lx_exec() * function is called that the exec has succeeded. */ rp->r_r0 = 0; - lx_ptrace_stop(LX_PR_SYSEXIT); + (void) lx_ptrace_stop(LX_PR_SYSEXIT); } static void @@ -765,6 +765,7 @@ lx_exit_with_sig(proc_t *cp, sigqueue_t *sqp) * More information on wait in lx brands can be found at * usr/src/lib/brand/lx/lx_brand/common/wait.c. */ +/* ARGSUSED */ boolean_t lx_wait_filter(proc_t *pp, proc_t *cp) { diff --git a/usr/src/uts/common/brand/lx/os/lx_syscall.c b/usr/src/uts/common/brand/lx/os/lx_syscall.c index f48b043aa3..421de407d1 100644 --- a/usr/src/uts/common/brand/lx/os/lx_syscall.c +++ b/usr/src/uts/common/brand/lx/os/lx_syscall.c @@ -208,7 +208,7 @@ lx_emulate_args(klwp_t *lwp, const lx_sysent_t *s, uintptr_t *args) } #endif -int +void lx_syscall_return(klwp_t *lwp, int syscall_num, long ret) { lx_lwp_data_t *lwpd = lwptolxlwp(lwp); @@ -242,7 +242,7 @@ lx_syscall_return(klwp_t *lwp, int syscall_num, long ret) * PTRACE_SYSCALL. Note that the register state may be modified by * tracer. */ - lx_ptrace_stop(LX_PR_SYSEXIT); + (void) lx_ptrace_stop(LX_PR_SYSEXIT); /* * Fire the DTrace "lx-syscall:::return" probe: @@ -265,8 +265,6 @@ lx_syscall_return(klwp_t *lwp, int syscall_num, long ret) lwp->lwp_eosys = JUSTRETURN; curthread->t_post_sys = 1; aston(curthread); - - return (0); } static void @@ -346,7 +344,7 @@ lx_syscall_enter(void) * PTRACE_SYSCALL. The system call number and arguments may be * modified by the tracer. */ - lx_ptrace_stop(LX_PR_SYSENTRY); + (void) lx_ptrace_stop(LX_PR_SYSENTRY); /* * Check that the system call number is within the bounds we expect. @@ -355,7 +353,7 @@ lx_syscall_enter(void) if (syscall_num < 0 || syscall_num > LX_MAX_SYSCALL(lwp)) { lx_syscall_unsup_msg(NULL, syscall_num, 0); - set_errno(ENOTSUP); + (void) set_errno(ENOTSUP); lx_syscall_return(lwp, syscall_num, -1); return (0); } @@ -380,7 +378,7 @@ lx_syscall_enter(void) * Could not read and process the arguments. Return the error * to the process. */ - set_errno(error); + (void) set_errno(error); lx_syscall_return(lwp, syscall_num, -1); return (0); } @@ -422,7 +420,7 @@ lx_syscall_enter(void) */ lx_syscall_unsup_msg(s, syscall_num, unsup_reason); - set_errno(ENOTSUP); + (void) set_errno(ENOTSUP); lx_syscall_return(lwp, syscall_num, -1); return (0); } @@ -479,7 +477,7 @@ lx_vsyscall_enter(proc_t *p, klwp_t *lwp, int scnum) rp->r_rip = raddr; rp->r_rsp += sizeof (uintptr_t); - lx_syscall_enter(); + (void) lx_syscall_enter(); } boolean_t diff --git a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c index 262339c31c..24d0fc03c2 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c +++ b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c @@ -282,7 +282,7 @@ extern rctl_hndl_t rc_zone_semmni; extern rctl_hndl_t rc_zone_msgmni; extern rctl_hndl_t rc_zone_shmmax; extern rctl_hndl_t rc_zone_shmmni; -#define FOURGB 4294967295 +#define FOURGB 4294967295ULL /* * The maximum length of the concatenation of argument vector strings we @@ -695,6 +695,7 @@ static int lxpr_close(vnode_t *vp, int flag, int count, offset_t offset, cred_t *cr, caller_context_t *ct) { +#ifdef DEBUG lxpr_node_t *lxpr = VTOLXP(vp); lxpr_nodetype_t type = lxpr->lxpr_type; @@ -706,6 +707,7 @@ lxpr_close(vnode_t *vp, int flag, int count, offset_t offset, cred_t *cr, type != LXPR_PID_CURDIR && type != LXPR_PID_ROOTDIR && type != LXPR_PID_EXE); +#endif /* DEBUG */ return (0); } @@ -1433,7 +1435,7 @@ lxpr_read_pid_comm(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_seterr(uiobuf, EINVAL); return; } - strlcpy(buf, p->p_user.u_comm, sizeof (buf)); + (void) strlcpy(buf, p->p_user.u_comm, sizeof (buf)); lxpr_unlock(p); lxpr_uiobuf_printf(uiobuf, "%s\n", buf); } @@ -2224,7 +2226,7 @@ lxpr_read_status_common(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf, crhold(cr = p->p_cred); mutex_exit(&p->p_crlock); - strlcpy(buf_comm, up->u_comm, sizeof (buf_comm)); + (void) strlcpy(buf_comm, up->u_comm, sizeof (buf_comm)); fdlim = p->p_fno_ctl; lwpcnt = p->p_lwpcnt; @@ -2533,12 +2535,13 @@ lxpr_read_stat_common(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf, stime = p->p_stime; } else { /* tid: utime & stime for the thread set in block above */ + /* EMPTY */ } cutime = p->p_cutime; cstime = p->p_cstime; lwpcnt = p->p_lwpcnt; vmem_ctl = p->p_vmem_ctl; - strlcpy(buf_comm, p->p_user.u_comm, sizeof (buf_comm)); + (void) strlcpy(buf_comm, p->p_user.u_comm, sizeof (buf_comm)); ticks = p->p_user.u_ticks; /* lbolt at process start */ /* adjust ticks to account for zone boot time */ boottime = LXPTOZ(lxpnp)->zone_zsched->p_user.u_ticks; @@ -3050,21 +3053,19 @@ lxpr_read_net_sockstat(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) typedef struct lxpr_snmp_table { const char *lst_proto; - const char *lst_fields[]; + const char **lst_fields; } lxpr_snmp_table_t; -static lxpr_snmp_table_t lxpr_snmp_ip = { "ip", - { +static const char *lxpr_snmp_ip_fields[] = { "forwarding", "defaultTTL", "inReceives", "inHdrErrors", "inAddrErrors", "forwDatagrams", "inUnknownProtos", "inDiscards", "inDelivers", "outRequests", "outDiscards", "outNoRoutes", "reasmTimeout", "reasmReqds", "reasmOKs", "reasmFails", "fragOKs", "fragFails", "fragCreates", NULL - } }; -static lxpr_snmp_table_t lxpr_snmp_icmp = { "icmp", - { + +static const char *lxpr_snmp_icmp_fields[] = { "inMsgs", "inErrors", "inCsumErrors", "inDestUnreachs", "inTimeExcds", "inParmProbs", "inSrcQuenchs", "inRedirects", "inEchos", "inEchoReps", "inTimestamps", "inTimestampReps", "inAddrMasks", "inAddrMaskReps", @@ -3073,24 +3074,26 @@ static lxpr_snmp_table_t lxpr_snmp_icmp = { "icmp", "outEchoReps", "outTimestamps", "outTimestampReps", "outAddrMasks", "outAddrMaskReps", NULL - } }; -static lxpr_snmp_table_t lxpr_snmp_tcp = { "tcp", - { + +static const char *lxpr_snmp_tcp_fields[] = { "rtoAlgorithm", "rtoMin", "rtoMax", "maxConn", "activeOpens", "passiveOpens", "attemptFails", "estabResets", "currEstab", "inSegs", "outSegs", "retransSegs", "inErrs", "outRsts", "inCsumErrors", NULL - } }; -static lxpr_snmp_table_t lxpr_snmp_udp = { "udp", - { + +static const char *lxpr_snmp_udp_fields[] = { "inDatagrams", "noPorts", "inErrors", "outDatagrams", "rcvbufErrors", "sndbufErrors", "inCsumErrors", NULL - } }; +static lxpr_snmp_table_t lxpr_snmp_ip = { "ip", lxpr_snmp_ip_fields }; +static lxpr_snmp_table_t lxpr_snmp_icmp = { "icmp", lxpr_snmp_icmp_fields }; +static lxpr_snmp_table_t lxpr_snmp_tcp = { "tcp", lxpr_snmp_tcp_fields }; +static lxpr_snmp_table_t lxpr_snmp_udp = { "udp", lxpr_snmp_udp_fields }; + static lxpr_snmp_table_t *lxpr_net_snmptab[] = { &lxpr_snmp_ip, &lxpr_snmp_icmp, @@ -3587,6 +3590,7 @@ lxpr_read_net_unix(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) #define LX_KMSG_PRI "<0>" +/* ARGSUSED */ static void lxpr_read_kmsg(lxpr_node_t *lxpnp, struct lxpr_uiobuf *uiobuf, ldi_handle_t lh) { @@ -3918,8 +3922,8 @@ lxpr_read_diskstats(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * Use the zone_vfs kstat, which is a superset of a kstat_io_t, since * it tracks IO at the zone level. */ - strlcpy(kn.ks_module, "zone_vfs", sizeof (kn.ks_module)); - strlcpy(kn.ks_name, zone->zone_name, sizeof (kn.ks_name)); + (void) strlcpy(kn.ks_module, "zone_vfs", sizeof (kn.ks_module)); + (void) strlcpy(kn.ks_name, zone->zone_name, sizeof (kn.ks_name)); kn.ks_instance = getzoneid(); kip = (zone_vfs_kstat_t *)lxpr_kstat_read(&kn, B_TRUE, &size, &num); @@ -4327,6 +4331,7 @@ extern int inotify_maxevents; extern int inotify_maxinstances; extern int inotify_maxwatches; +/* ARGSUSED */ static void lxpr_read_sys_fs_inotify_max_queued_events(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) @@ -4335,6 +4340,7 @@ lxpr_read_sys_fs_inotify_max_queued_events(lxpr_node_t *lxpnp, lxpr_uiobuf_printf(uiobuf, "%d\n", inotify_maxevents); } +/* ARGSUSED */ static void lxpr_read_sys_fs_inotify_max_user_instances(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) @@ -4343,6 +4349,7 @@ lxpr_read_sys_fs_inotify_max_user_instances(lxpr_node_t *lxpnp, lxpr_uiobuf_printf(uiobuf, "%d\n", inotify_maxinstances); } +/* ARGSUSED */ static void lxpr_read_sys_fs_inotify_max_user_watches(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) @@ -4351,6 +4358,7 @@ lxpr_read_sys_fs_inotify_max_user_watches(lxpr_node_t *lxpnp, lxpr_uiobuf_printf(uiobuf, "%d\n", inotify_maxwatches); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_caplcap(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4358,6 +4366,7 @@ lxpr_read_sys_kernel_caplcap(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", LX_CAP_MAX_VALID); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_corepatt(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4400,6 +4409,7 @@ lxpr_read_sys_kernel_corepatt(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%s\n", tr); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_hostname(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4407,6 +4417,7 @@ lxpr_read_sys_kernel_hostname(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%s\n", uts_nodename()); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_msgmni(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4422,6 +4433,7 @@ lxpr_read_sys_kernel_msgmni(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%u\n", (uint_t)val); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_ngroups_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4429,6 +4441,7 @@ lxpr_read_sys_kernel_ngroups_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", ngroups_max); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_osrel(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4449,6 +4462,7 @@ lxpr_read_sys_kernel_osrel(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) } } +/* ARGSUSED */ static void lxpr_read_sys_kernel_pid_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4456,6 +4470,7 @@ lxpr_read_sys_kernel_pid_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", maxpid); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_rand_bootid(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4486,7 +4501,6 @@ lxpr_read_sys_kernel_rand_bootid(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) br_data = ztolxzd(curproc->p_zone); mutex_enter(&br_data->lxzd_lock); if (br_data->lxzd_bootid[0] == '\0') { - extern int getrandom(void *, size_t, int); int i; for (i = 0; i < 5; i++) { @@ -4506,9 +4520,9 @@ lxpr_read_sys_kernel_rand_bootid(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) break; } if (i > 0) - strlcat(br_data->lxzd_bootid, "-", + (void) strlcat(br_data->lxzd_bootid, "-", sizeof (br_data->lxzd_bootid)); - strlcat(br_data->lxzd_bootid, s, + (void) strlcat(br_data->lxzd_bootid, s, sizeof (br_data->lxzd_bootid)); } } @@ -4519,6 +4533,7 @@ lxpr_read_sys_kernel_rand_bootid(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) } +/* ARGSUSED */ static void lxpr_read_sys_kernel_sem(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4547,6 +4562,7 @@ lxpr_read_sys_kernel_sem(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) vmsl, vmns, vopm, vmni); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_shmall(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4563,6 +4579,7 @@ lxpr_read_sys_kernel_shmall(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%u\n", (uint_t)btop(val)); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_shmmax(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4581,6 +4598,7 @@ lxpr_read_sys_kernel_shmmax(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%u\n", (uint_t)val); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_shmmni(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4599,6 +4617,7 @@ lxpr_read_sys_kernel_shmmni(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%u\n", (uint_t)val); } +/* ARGSUSED */ static void lxpr_read_sys_kernel_threads_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4606,6 +4625,7 @@ lxpr_read_sys_kernel_threads_max(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", curproc->p_zone->zone_nlwps_ctl); } +/* ARGSUSED */ static void lxpr_read_sys_net_core_somaxc(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4634,6 +4654,7 @@ lxpr_read_sys_net_core_somaxc(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * illumos: tcp_smallest_anon_port & tcp_largest_anon_port * Not in tcp(7p) man page. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_ip_lport_range(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4667,6 +4688,7 @@ lxpr_read_sys_net_ipv4_ip_lport_range(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * in the tcp_input_data() function on the use of tcp_fin_wait_2_flush_interval. * The value is in milliseconds. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_tcp_fin_to(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4700,6 +4722,7 @@ lxpr_read_sys_net_ipv4_tcp_fin_to(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * 9 times (giving a total of 11.25 minutes) so we emulate this by dividing out * tcps_keepalive_abort_interval by 9. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_tcp_ka_int(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4730,6 +4753,7 @@ lxpr_read_sys_net_ipv4_tcp_ka_int(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * The interval for sending out the first probe in milliseconds. The default is * two hours. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_tcp_ka_tim(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4759,6 +4783,7 @@ lxpr_read_sys_net_ipv4_tcp_ka_tim(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * tcp_sack_permitted 0 == disabled, 1 == no initiate but accept, * 2 == initiate and accept. default is 2. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_tcp_sack(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4791,6 +4816,7 @@ lxpr_read_sys_net_ipv4_tcp_sack(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * window scale option will be set only if the user has requested a send or * receive window larger than 64K. The default value of is 1. */ +/* ARGSUSED */ static void lxpr_read_sys_net_ipv4_tcp_winscale(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4810,6 +4836,7 @@ lxpr_read_sys_net_ipv4_tcp_winscale(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) netstack_rele(ns); } +/* ARGSUSED */ static void lxpr_read_sys_vm_max_map_cnt(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4818,6 +4845,7 @@ lxpr_read_sys_vm_max_map_cnt(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", 16777215); } +/* ARGSUSED */ static void lxpr_read_sys_vm_minfr_kb(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4825,6 +4853,7 @@ lxpr_read_sys_vm_minfr_kb(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", 0); } +/* ARGSUSED */ static void lxpr_read_sys_vm_nhpages(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4832,6 +4861,7 @@ lxpr_read_sys_vm_nhpages(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", 0); } +/* ARGSUSED */ static void lxpr_read_sys_vm_overcommit_mem(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4839,6 +4869,7 @@ lxpr_read_sys_vm_overcommit_mem(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) lxpr_uiobuf_printf(uiobuf, "%d\n", 0); } +/* ARGSUSED */ static void lxpr_read_sys_vm_swappiness(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4972,6 +5003,7 @@ static const char *intc_ecx[] = { * cgroup subsystems as being installed. The commented example below shows * how to print a subsystem entry. */ +/* ARGSUSED */ static void lxpr_read_cgroups(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -4984,6 +5016,7 @@ lxpr_read_cgroups(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) */ } +/* ARGSUSED */ static void lxpr_read_cpuinfo(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -5157,6 +5190,7 @@ lxpr_read_fd(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) * which we support and which may be checked by various components to see if * they are loaded. */ +/* ARGSUSED */ static void lxpr_read_filesystems(lxpr_node_t *lxpnp, lxpr_uiobuf_t *uiobuf) { @@ -5576,10 +5610,8 @@ lxpr_lookup_task_tid_dir(vnode_t *dp, char *comp) static vnode_t * lxpr_lookup_fddir(vnode_t *dp, char *comp) { - lxpr_node_t *dlxpnp = VTOLXP(dp); - - ASSERT(dlxpnp->lxpr_type == LXPR_PID_FDDIR || - dlxpnp->lxpr_type == LXPR_PID_TID_FDDIR); + ASSERT(VTOLXP(dp)->lxpr_type == LXPR_PID_FDDIR || + VTOLXP(dp)->lxpr_type == LXPR_PID_TID_FDDIR); return (lxpr_lookup_fdnode(dp, comp)); } @@ -5759,7 +5791,7 @@ lxpr_readdir(vnode_t *dp, uio_t *uiop, cred_t *cr, int *eofp, if (uoffset % LXPR_SDSIZE) return (ENOENT); - return (lxpr_readdir_function[lxpnp->lxpr_type](lxpnp, uiop, eofp)); + return (lxpr_readdir_function[type](lxpnp, uiop, eofp)); } /* ARGSUSED */ @@ -6580,6 +6612,7 @@ lxpr_xlate_sack(char *val, int size) * set two properties on the netstack_tcp, so we can't reuse * lxpr_write_tcp_property. */ +/* ARGSUSED */ static int lxpr_write_sys_net_ipv4_ip_lport_range(lxpr_node_t *lxpnp, struct uio *uio, struct cred *cr, caller_context_t *ct) @@ -6962,6 +6995,7 @@ lxpr_realvp(vnode_t *vp, vnode_t **vpp, caller_context_t *ct) return (0); } +/* ARGSUSED */ static int lxpr_write(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr, caller_context_t *ct) @@ -6986,6 +7020,7 @@ lxpr_write(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr, } /* Needed for writable files which are first "truncated" */ +/* ARGSUSED */ static int lxpr_space(vnode_t *vp, int cmd, flock64_t *bfp, int flag, offset_t offset, cred_t *cred, caller_context_t *ct) @@ -7004,6 +7039,7 @@ lxpr_space(vnode_t *vp, int cmd, flock64_t *bfp, int flag, offset_t offset, * Needed for writable files which are first "truncated". We only support * truncation. */ +/* ARGSUSED */ static int lxpr_setattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, caller_context_t *ct) @@ -7021,7 +7057,7 @@ lxpr_setattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, /* * We need to allow open with O_CREAT for the writable files. */ -/*ARGSUSED7*/ +/* ARGSUSED */ static int lxpr_create(vnode_t *dvp, char *nm, vattr_t *vap, enum vcexcl exclusive, int mode, vnode_t **vpp, cred_t *cr, int flag, caller_context_t *ct, diff --git a/usr/src/uts/common/brand/lx/sys/lx_brand.h b/usr/src/uts/common/brand/lx/sys/lx_brand.h index 4906e444f1..88546dbe80 100644 --- a/usr/src/uts/common/brand/lx/sys/lx_brand.h +++ b/usr/src/uts/common/brand/lx/sys/lx_brand.h @@ -100,7 +100,7 @@ extern "C" { #define B_JUMP_TO_LINUX 139 #define B_SET_THUNK_PID 140 #define B_EXIT_AS_SIG 141 -#define B_HELPER_WAITID 142 +/* formerly B_HELPER_WAITID 142 */ #define B_HELPER_CLONE 143 #define B_HELPER_SETGROUPS 144 #define B_HELPER_SIGQUEUE 145 @@ -630,7 +630,7 @@ extern int lx_runexe(klwp_t *, void *); extern void lx_switch_to_native(klwp_t *); extern int lx_syscall_enter(void); -extern int lx_syscall_return(klwp_t *, int, long); +extern void lx_syscall_return(klwp_t *, int, long); extern int lx_syscall_fast_enter(void); diff --git a/usr/src/uts/common/brand/lx/syscall/lx_cpu.c b/usr/src/uts/common/brand/lx/syscall/lx_cpu.c index ec8b7576d8..b0a92394dc 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_cpu.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_cpu.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/systm.h> @@ -23,6 +23,7 @@ * We support neither the second argument (NUMA node), nor the third (obsolete * pre-2.6.24 caching functionality which was ultimately broken). */ +/* ARGSUSED1 */ long lx_getcpu(unsigned int *cpu, uintptr_t p2, uintptr_t p3) { diff --git a/usr/src/uts/common/brand/lx/syscall/lx_getdents.c b/usr/src/uts/common/brand/lx/syscall/lx_getdents.c index 102d521e02..101d8b2911 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_getdents.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_getdents.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/systm.h> @@ -92,7 +92,7 @@ lx_getdents_common(int fd, caddr_t uptr, size_t count, file_t *fp; struct uio auio; struct iovec aiov; - int error; + int error, at_eof; int sbufsz, lbufsz, bufsz; void *lbuf, *sbuf; size_t outb = 0; @@ -158,8 +158,9 @@ lx_getdents_common(int fd, caddr_t uptr, size_t count, * When this happens, we can simply repeat the READDIR operation until * the available records are exhausted or we've filled the user buffer. */ - while (1) { - int at_eof, res; + do { + int res; + (void) VOP_RWLOCK(vp, V_WRITELOCK_FALSE, NULL); error = VOP_READDIR(vp, &auio, fp->f_cred, &at_eof, NULL, 0); VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL); @@ -187,15 +188,6 @@ lx_getdents_common(int fd, caddr_t uptr, size_t count, } outb += res; - if (at_eof != 0 || (count - outb) < (lx_size + MAXPATHLEN)) { - /* - * If there are no records left or the remaining buffer - * space is not large enough to hold a max-length - * filename, do not continue iteration. - */ - break; - } - /* * We undershot the request buffer. * Reset for another READDIR, taking care not to overshoot. @@ -204,7 +196,13 @@ lx_getdents_common(int fd, caddr_t uptr, size_t count, auio.uio_resid = bufsz; aiov.iov_len = bufsz; aiov.iov_base = sbuf; - } + + /* + * Continued progress is allowed only if EOF has not been + * reached and there is enough remaining buffer space to hold + * an entry with a max-length filename. + */ + } while (at_eof == 0 && (count - outb) >= (lx_size + MAXPATHLEN)); kmem_free(lbuf, lbufsz); kmem_free(sbuf, sbufsz); @@ -229,7 +227,9 @@ lx_getdents_format32(caddr_t sbuf, caddr_t lbuf, int len) int size = 0; while (len > 0) { + /* LINTED: alignment */ sd = (struct dirent *)sbuf; + /* LINTED: alignment */ ld = (struct lx_dirent_32 *)lbuf; namelen = MIN(strlen(sd->d_name), LX_NAMEMAX - 1); @@ -260,7 +260,9 @@ lx_getdents_format64(caddr_t sbuf, caddr_t lbuf, int len) int size = 0; while (len > 0) { + /* LINTED: alignment */ sd = (struct dirent *)sbuf; + /* LINTED: alignment */ ld = (struct lx_dirent_64 *)lbuf; namelen = MIN(strlen(sd->d_name), LX_NAMEMAX - 1); @@ -320,7 +322,9 @@ lx_getdents64_format(caddr_t sbuf, caddr_t lbuf, int len) int size = 0; while (len > 0) { + /* LINTED: alignment */ sd = (struct dirent *)sbuf; + /* LINTED: alignment */ ld = (struct lx_dirent64 *)lbuf; namelen = MIN(strlen(sd->d_name), LX_NAMEMAX - 1); diff --git a/usr/src/uts/common/brand/lx/syscall/lx_id.c b/usr/src/uts/common/brand/lx/syscall/lx_id.c index baa41f52fa..f940b9763a 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_id.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_id.c @@ -23,7 +23,7 @@ * Use is subject to license terms. */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/types.h> @@ -284,7 +284,7 @@ lx_setresgid16(l_gid16_t rgid16, l_gid16_t egid16, l_gid16_t sgid16) * Linux defines NGROUPS_MAX to be 32, but on illumos it is only 16. We employ * the terrible hack below so that tests may proceed, if only on DEBUG kernels. */ -long +int lx_helper_setgroups(int ngroups, gid_t *grouplist) { #ifdef DEBUG diff --git a/usr/src/uts/common/brand/lx/syscall/lx_ioctl.c b/usr/src/uts/common/brand/lx/syscall/lx_ioctl.c index 2bd5da9961..c1966731ff 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_ioctl.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_ioctl.c @@ -466,7 +466,7 @@ typedef struct lx_ifreq32 { char ifr_name[IFNAMSIZ]; union { struct sockaddr ifru_addr; - }; + } ifr_ifrn; } lx_ifreq32_t; typedef struct lx_ifreq64 { @@ -475,7 +475,7 @@ typedef struct lx_ifreq64 { struct sockaddr ifru_addr; /* pad this out to the Linux size */ uint64_t ifmap[3]; - }; + } ifr_ifrn; } lx_ifreq64_t; typedef struct lx_ifconf32 { @@ -491,6 +491,7 @@ typedef struct lx_ifconf64 { /* Generic translators */ +/* ARGSUSED */ static int ict_pass(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -502,6 +503,7 @@ ict_pass(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_fionbio(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -527,6 +529,7 @@ ict_fionbio(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_fionread(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -596,6 +599,7 @@ lx_lookup_zvol(lx_zone_data_t *lxzd, dev_t dev) * See zvol_ioctl() which always fails for DKIOCGGEOM. The geometry for a * zvol (or really any modern disk) is made up, so we do that here as well. */ +/* ARGSUSED */ static int ict_hdgetgeo(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -655,6 +659,7 @@ ict_hdgetgeo(file_t *fp, int cmd, intptr_t arg, int lxcmd) * Per the Linux sd(4) man page, get the number of sectors. The linux/fs.h * header says its 512 byte blocks. */ +/* ARGSUSED */ static int ict_blkgetsize(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -703,6 +708,7 @@ ict_blkgetsize(file_t *fp, int cmd, intptr_t arg, int lxcmd) /* * Get the sector size (i.e. the logical block size). */ +/* ARGSUSED */ static int ict_blkgetssize(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -746,6 +752,7 @@ ict_blkgetssize(file_t *fp, int cmd, intptr_t arg, int lxcmd) /* * Get the size. The linux/fs.h header says its in bytes. */ +/* ARGSUSED */ static int ict_blkgetsize64(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -786,8 +793,10 @@ ict_blkgetsize64(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ /* Terminal-related translators */ +/* ARGSUSED */ static int ict_tcsets(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -813,6 +822,7 @@ ict_tcsets(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tcseta(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -838,6 +848,7 @@ ict_tcseta(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tcgets_ptm(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -862,6 +873,7 @@ ict_tcgets_ptm(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tcgets_native(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -892,6 +904,7 @@ ict_tcgets_native(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tcgets(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -901,6 +914,7 @@ ict_tcgets(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (ict_tcgets_native(fp, cmd, arg, lxcmd)); } +/* ARGSUSED */ static int ict_tcgeta(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -928,6 +942,7 @@ ict_tcgeta(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tiocspgrp(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -945,6 +960,7 @@ ict_tiocspgrp(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_tcsbrkp(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -956,6 +972,7 @@ ict_tcsbrkp(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_tiocgpgrp(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -975,6 +992,7 @@ ict_tiocgpgrp(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_sptlock(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -995,6 +1013,7 @@ ict_sptlock(file_t *fp, int cmd, intptr_t arg, int lxcmd) return ((error != 0) ? set_errno(error) : 0); } +/* ARGSUSED */ static int ict_gptn(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1029,6 +1048,7 @@ ict_gptn(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tiocgwinsz(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1069,6 +1089,7 @@ ict_tiocgwinsz(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_tiocsctty(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1109,6 +1130,7 @@ ict_tiocsctty(file_t *fp, int cmd, intptr_t arg, int lxcmd) /* Socket-related translators */ +/* ARGSUSED */ static int ict_siocatmark(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1200,6 +1222,7 @@ ict_sioghwaddr(file_t *fp, struct lifreq *lreq) return (error); } +/* ARGSUSED */ static int ict_siocgifname(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1233,7 +1256,7 @@ ict_siocgifname(file_t *fp, int cmd, intptr_t arg, int lxcmd) phyi = avl_find(&ipst->ips_phyint_g_list->phyint_list_avl_by_index, (void *) &req.ifr_index, NULL); if (phyi != NULL) { - strncpy(name, phyi->phyint_name, LIFNAMSIZ); + (void) strncpy(name, phyi->phyint_name, LIFNAMSIZ); lx_ifname_convert(name, LX_IF_FROMNATIVE); } else { name[0] = '\0'; @@ -1244,7 +1267,7 @@ ict_siocgifname(file_t *fp, int cmd, intptr_t arg, int lxcmd) if (strlen(name) != 0) { /* Truncate for ifreq and copyout */ - strncpy(req.ifr_name, name, IFNAMSIZ); + (void) strncpy(req.ifr_name, name, IFNAMSIZ); if (copyout(&req, (struct ifreq *)arg, len) != 0) { return (set_errno(EFAULT)); } @@ -1254,6 +1277,7 @@ ict_siocgifname(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (set_errno(EINVAL)); } +/* ARGSUSED */ static int ict_siolifreq(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1269,7 +1293,7 @@ ict_siolifreq(file_t *fp, int cmd, intptr_t arg, int lxcmd) if (copyin((struct ifreq *)arg, &req, len) != 0) return (set_errno(EFAULT)); bzero(&lreq, sizeof (lreq)); - strncpy(lreq.lifr_name, req.ifr_name, IFNAMSIZ); + (void) strncpy(lreq.lifr_name, req.ifr_name, IFNAMSIZ); bcopy(&req.ifr_ifru, &lreq.lifr_lifru, len - IFNAMSIZ); lx_ifname_convert(lreq.lifr_name, LX_IF_TONATIVE); @@ -1352,7 +1376,7 @@ ict_siolifreq(file_t *fp, int cmd, intptr_t arg, int lxcmd) /* Convert back to a Linux ifreq */ lx_ifname_convert(lreq.lifr_name, LX_IF_FROMNATIVE); bzero(&req, sizeof (req)); - strncpy(req.ifr_name, lreq.lifr_name, IFNAMSIZ); + (void) strncpy(req.ifr_name, lreq.lifr_name, IFNAMSIZ); bcopy(&lreq.lifr_lifru, &req.ifr_ifru, len - IFNAMSIZ); if (copyout(&req, (struct lifreq *)arg, len) != 0) @@ -1361,6 +1385,7 @@ ict_siolifreq(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (0); } +/* ARGSUSED */ static int ict_siocgifconf32(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1418,6 +1443,7 @@ ict_siocgifconf32(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (error); } +/* ARGSUSED */ static int ict_siocgifconf64(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1475,6 +1501,7 @@ ict_siocgifconf64(file_t *fp, int cmd, intptr_t arg, int lxcmd) return (error); } +/* ARGSUSED */ static int ict_siocgifconf(file_t *fp, int cmd, intptr_t arg, int lxcmd) { @@ -1490,6 +1517,7 @@ ict_siocgifconf(file_t *fp, int cmd, intptr_t arg, int lxcmd) * rest of the code, we'll treat a positive return as an errno and a negative * return as the non-error return (which we then negate). */ +/* ARGSUSED */ static int ict_autofs(file_t *fp, int cmd, intptr_t arg, int lxcmd) { diff --git a/usr/src/uts/common/brand/lx/syscall/lx_open.c b/usr/src/uts/common/brand/lx/syscall/lx_open.c index 431c2ed1ba..a6d6877326 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_open.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_open.c @@ -22,7 +22,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright 2015 Joyent, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ #include <sys/systm.h> @@ -242,7 +242,7 @@ lx_openat(int atfd, char *path, int fmode, int cmode) if (error != 0) return (set_errno(ENOTDIR)); - set_errno(oerror); + (void) set_errno(oerror); } return (ttolwp(curthread)->lwp_errno); } diff --git a/usr/src/uts/common/brand/lx/syscall/lx_prctl.c b/usr/src/uts/common/brand/lx/syscall/lx_prctl.c index 091a6f547b..ac125b9b2d 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_prctl.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_prctl.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/systm.h> @@ -146,7 +146,7 @@ lx_prctl(int opt, uintptr_t data) lx_proc_data_t *lxpd; mutex_enter(&curproc->p_lock); - VERIFY(lxpd = ptolxproc(curproc)); + VERIFY((lxpd = ptolxproc(curproc)) != NULL); sig = lxpd->l_parent_deathsig; mutex_exit(&curproc->p_lock); @@ -165,7 +165,7 @@ lx_prctl(int opt, uintptr_t data) mutex_enter(&pidlock); /* Set signal on our self */ mutex_enter(&curproc->p_lock); - VERIFY(lxpd = ptolxproc(curproc)); + VERIFY((lxpd = ptolxproc(curproc)) != NULL); lxpd->l_parent_deathsig = sig; pp = curproc->p_parent; mutex_exit(&curproc->p_lock); @@ -173,7 +173,7 @@ lx_prctl(int opt, uintptr_t data) /* Configure parent to potentially signal children on death */ mutex_enter(&pp->p_lock); if (PROC_IS_BRANDED(pp)) { - VERIFY(lxpd = ptolxproc(pp)); + VERIFY((lxpd = ptolxproc(pp)) != NULL); /* * Mark the parent as having children which wish to be * signaled on death of parent. @@ -185,6 +185,7 @@ lx_prctl(int opt, uintptr_t data) * hooks to facilitate this mechanism will not fire * when it dies. We lie about success in this case. */ + /* EMPTY */ } mutex_exit(&pp->p_lock); mutex_exit(&pidlock); @@ -204,7 +205,7 @@ lx_prctl(int opt, uintptr_t data) break; } - snprintf(ebuf, 64, "prctl option %d", opt); + (void) snprintf(ebuf, 64, "prctl option %d", opt); lx_unsupported(ebuf); return (set_errno(EINVAL)); } diff --git a/usr/src/uts/common/brand/lx/syscall/lx_socket.c b/usr/src/uts/common/brand/lx/syscall/lx_socket.c index e8e9714143..2a049adb46 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_socket.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_socket.c @@ -129,8 +129,8 @@ static const int ltos_family[LX_AF_MAX + 1] = { AF_NOTSUPPORTED, /* LX_AF_PPOX */ AF_NOTSUPPORTED, /* LX_AF_WANPIPE */ AF_NOTSUPPORTED, /* LX_AF_LLC */ - AF_NOTSUPPORTED, /* EMPTY */ - AF_NOTSUPPORTED, /* EMPTY */ + AF_NOTSUPPORTED, /* NONE */ + AF_NOTSUPPORTED, /* NONE */ AF_NOTSUPPORTED, /* LX_AF_CAN */ AF_NOTSUPPORTED, /* LX_AF_TIPC */ AF_NOTSUPPORTED, /* LX_AF_BLUETOOTH */ @@ -200,7 +200,7 @@ static const int stol_socktype[SOCK_SEQPACKET + 1] = { #define LTOS_SOCKTYPE(t) \ ((t) <= LX_SOCK_PACKET ? ltos_socktype[(t)] : SOCK_INVAL) #define STOL_SOCKTYPE(t) \ - ((t) <= SOCK_SEQPACKET ? ltos_socktype[(t)] : SOCK_INVAL) + ((t) <= SOCK_SEQPACKET ? stol_socktype[(t)] : SOCK_INVAL) /* @@ -316,15 +316,15 @@ lx_xlate_sock_flags(int inflags, lx_xlate_dir_t dir) break; case LXFM_UNSUP: if (match != 0) { - snprintf(buf, LX_UNSUP_BUFSZ, + (void) snprintf(buf, LX_UNSUP_BUFSZ, "unsupported sock flag %s", map->lxfm_name); lx_unsupported(buf); } } } if (inflags != 0) { - snprintf(buf, LX_UNSUP_BUFSZ, "unsupported sock flags 0x%08x", - inflags); + (void) snprintf(buf, LX_UNSUP_BUFSZ, + "unsupported sock flags 0x%08x", inflags); lx_unsupported(buf); } @@ -472,6 +472,7 @@ ltos_sockaddr_copyin(const struct sockaddr *inaddr, const socklen_t inlen, *outlen = sizeof (struct sockaddr_ll); /* sll_protocol must be translated */ + /* LINTED: alignment */ sal = (struct sockaddr_ll *)laddr; proto = ltos_pkt_proto(sal->sll_protocol); if (proto < 0) { @@ -726,11 +727,13 @@ stol_conv_ucred(struct cmsghdr *inmsg, struct cmsghdr *omsg) * Format the data correctly in the omsg buffer. */ if (omsg != NULL) { - struct ucred_s *scred = (struct ucred_s *)CMSG_CONTENT(inmsg); + struct ucred_s *scred; prcred_t *cr; lx_ucred_t lcred; + scred = (struct ucred_s *)CMSG_CONTENT(inmsg); lcred.lxu_pid = scred->uc_pid; + /* LINTED: alignment */ cr = UCCRED(scred); if (cr != NULL) { lcred.lxu_uid = cr->pr_euid; @@ -754,6 +757,7 @@ ltos_conv_ucred(struct cmsghdr *inmsg, struct cmsghdr *omsg) lx_ucred_t *lcred; uc = (struct ucred_s *)CMSG_CONTENT(omsg); + /* LINTED: alignment */ pc = (prcred_t *)((char *)uc + sizeof (struct ucred_s)); uc->uc_credoff = sizeof (struct ucred_s); @@ -2860,6 +2864,7 @@ lx_setsockopt_socket(sonode_t *so, int optname, void *optval, socklen_t optlen) } lbp = (struct lx_bpf_program *)optval; bp.bf_len = lbp->bf_len; + /* LINTED: alignment */ bp.bf_insns = (struct bpf_insn *)lbp->bf_insns; optval = &bp; break; @@ -3091,7 +3096,7 @@ lx_getsockopt_tcp(sonode_t *so, int optname, void *optval, socklen_t *optlen) socklen_t len = sizeof (fi); if ((error = socket_getsockopt(so, SOL_FILTER, - FIL_LIST, fi, &len, 0, CRED()) != 0)) { + FIL_LIST, fi, &len, 0, CRED())) != 0) { *optlen = sizeof (int); return (error); } @@ -3340,8 +3345,8 @@ lx_setsockopt(int sock, int level, int optname, void *optval, socklen_t optlen) if (error == ENOPROTOOPT) { char buf[LX_UNSUP_BUFSZ]; - snprintf(buf, LX_UNSUP_BUFSZ, "setsockopt(%d, %d)", level, - optname); + (void) snprintf(buf, LX_UNSUP_BUFSZ, "setsockopt(%d, %d)", + level, optname); lx_unsupported(buf); } if (buflen != 0) { @@ -3431,8 +3436,8 @@ lx_getsockopt(int sock, int level, int optname, void *optval, if (error == ENOPROTOOPT) { char buf[LX_UNSUP_BUFSZ]; - snprintf(buf, LX_UNSUP_BUFSZ, "getsockopt(%d, %d)", level, - optname); + (void) snprintf(buf, LX_UNSUP_BUFSZ, "getsockopt(%d, %d)", + level, optname); lx_unsupported(buf); } if (copyout(&optlen, optlenp, sizeof (optlen)) != 0) { diff --git a/usr/src/uts/common/brand/lx/syscall/lx_thread_area.c b/usr/src/uts/common/brand/lx/syscall/lx_thread_area.c index 48d91b09cc..50607fac9b 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_thread_area.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_thread_area.c @@ -21,7 +21,7 @@ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ #include <sys/types.h> @@ -38,6 +38,7 @@ #include <sys/controlregs.h> #include <lx_syscall.h> +/* ARGSUSED */ long lx_arch_prctl(int code, ulong_t addr) { diff --git a/usr/src/uts/common/brand/lx/syscall/lx_timer.c b/usr/src/uts/common/brand/lx/syscall/lx_timer.c index c2fb4a4c7d..c102334156 100644 --- a/usr/src/uts/common/brand/lx/syscall/lx_timer.c +++ b/usr/src/uts/common/brand/lx/syscall/lx_timer.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ /* @@ -93,6 +93,7 @@ static lx_clock_backend_t lx_clock_backends[] = { #define LX_CLOCK_BACKEND(clk) \ ((clk) < LX_CLOCK_MAX && (clk) >= 0 ? &lx_clock_backends[(clk)] : NULL) +/* ARGSUSED */ static int lx_emul_clock_settime(clockid_t clock, timespec_t *tp) { @@ -369,7 +370,8 @@ lx_time(time_t *tp) return (tv32.tv_sec); } -#endif +#endif /* _SYSCALL32_IMPL */ + /* NOTREACHED */ } long diff --git a/usr/src/uts/common/brand/lx/sysfs/lx_syssubr.c b/usr/src/uts/common/brand/lx/sysfs/lx_syssubr.c index 3184b34d08..e80acbcfe5 100644 --- a/usr/src/uts/common/brand/lx/sysfs/lx_syssubr.c +++ b/usr/src/uts/common/brand/lx/sysfs/lx_syssubr.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ /* @@ -171,11 +171,10 @@ lxsys_node_t * lxsys_getnode_static(vnode_t *dp, unsigned int instance) { lxsys_mnt_t *lxsm = VTOLXSM(dp); - lxsys_node_t *lnp; + lxsys_node_t *lnp, *tail = NULL; mutex_enter(&lxsm->lxsysm_lock); - lnp = lxsm->lxsysm_node; - while (1) { + for (lnp = lxsm->lxsysm_node; lnp != NULL; lnp = lnp->lxsys_next) { if (lnp->lxsys_instance == instance) { VERIFY(lnp->lxsys_parentvp == dp); @@ -183,20 +182,16 @@ lxsys_getnode_static(vnode_t *dp, unsigned int instance) mutex_exit(&lxsm->lxsysm_lock); return (lnp); } else if (lnp->lxsys_next == NULL) { + /* Found no match by the end of the list */ + tail = lnp; break; } - lnp = lnp->lxsys_next; } - /* - * No persistent node found. - * Create one and add it to the end of the list. - */ - lnp->lxsys_next = lxsys_getnode(dp, LXSYS_STATIC, instance, 0); - lnp = lnp->lxsys_next; + tail->lxsys_next = lxsys_getnode(dp, LXSYS_STATIC, instance, 0); + lnp = tail->lxsys_next; /* Allow mounts on static entries */ LXSTOV(lnp)->v_flag &= (~VNOMOUNT); - mutex_exit(&lxsm->lxsysm_lock); return (lnp); } diff --git a/usr/src/uts/common/brand/lx/sysfs/lx_sysvnops.c b/usr/src/uts/common/brand/lx/sysfs/lx_sysvnops.c index f3df77428c..3fe074540b 100644 --- a/usr/src/uts/common/brand/lx/sysfs/lx_sysvnops.c +++ b/usr/src/uts/common/brand/lx/sysfs/lx_sysvnops.c @@ -193,7 +193,6 @@ static lxsys_dirent_t dirlist_root[] = { { LXSYS_INST_DEVICESDIR, "devices" }, { LXSYS_INST_FSDIR, "fs" } }; -static lxsys_dirent_t dirlist_empty[] = {}; static lxsys_dirent_t dirlist_class[] = { { LXSYS_INST_CLASS_NETDIR, "net" } }; @@ -258,7 +257,7 @@ static lxsys_dirlookup_t lxsys_dirlookup[] = { SYSDLENT(LXSYS_INST_ROOT, dirlist_root), SYSDLENT(LXSYS_INST_CLASSDIR, dirlist_class), SYSDLENT(LXSYS_INST_FSDIR, dirlist_fs), - SYSDLENT(LXSYS_INST_FS_CGROUPDIR, dirlist_empty), + { LXSYS_INST_FS_CGROUPDIR, NULL, 0 }, SYSDLENT(LXSYS_INST_DEVICESDIR, dirlist_devices), SYSDLENT(LXSYS_INST_DEVICES_SYSTEMDIR, dirlist_devices_system), SYSDLENT(LXSYS_INST_DEVICES_VIRTUALDIR, dirlist_devices_virtual), @@ -334,6 +333,7 @@ typedef struct lxsys_cpu_info { /* * lxsys_open(): Vnode operation for VOP_OPEN() */ +/* ARGSUSED */ static int lxsys_open(vnode_t **vpp, int flag, cred_t *cr, caller_context_t *ct) { @@ -397,6 +397,7 @@ lxsys_read(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr, /* * lxsys_getattr(): Vnode operation for VOP_GETATTR() */ +/* ARGSUSED */ static int lxsys_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, caller_context_t *ct) @@ -422,6 +423,7 @@ lxsys_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr, /* * lxsys_access(): Vnode operation for VOP_ACCESS() */ +/* ARGSUSED */ static int lxsys_access(vnode_t *vp, int mode, int flags, cred_t *cr, caller_context_t *ct) { @@ -793,11 +795,13 @@ lxsys_lookup_devices_syscpu(lxsys_node_t *ldp, char *comp) } } else if (ldp->lxsys_endpoint == 0) { /* cpu-level sub-item listing, currently empty */ + /* EMPTY */ } return (NULL); } +/* ARGSUSED */ static vnode_t * lxsys_lookup_devices_syscpuinfo(lxsys_node_t *ldp, char *comp) { @@ -916,6 +920,7 @@ lxsys_read_devices_virtual_net(lxsys_node_t *lnp, lxsys_uiobuf_t *luio) return (error); } +/* ARGSUSED1 */ static int lxsys_read_devices_zfs_block(lxsys_node_t *lnp, lxsys_uiobuf_t *luio) { @@ -1129,6 +1134,8 @@ lxsys_readdir_subdir(lxsys_node_t *lxsnp, uio_t *uiop, int *eofp, ssize_t oresid; /* save a copy for testing later */ ssize_t uresid; + VERIFY(dirtab != NULL || dirtablen == 0); + oresid = uiop->uio_resid; /* clear out the dirent buffer */ @@ -1559,8 +1566,7 @@ lxsys_readdir_devices_syscpu(lxsys_node_t *lnp, uio_t *uiop, int *eofp) error = lxsys_readdir_cpu(lnp, uiop, eofp); } else if (lnp->lxsys_endpoint == 0) { /* cpu-level sub-item listing */ - error = lxsys_readdir_subdir(lnp, uiop, eofp, - dirlist_empty, SYSDIRLISTSZ(dirlist_empty)); + error = lxsys_readdir_subdir(lnp, uiop, eofp, NULL, 0); } else { /* * Currently there shouldn't be subdirs below this but diff --git a/usr/src/uts/common/brand/sn1/sn1_brand.c b/usr/src/uts/common/brand/sn1/sn1_brand.c index 32fb7d9127..3d3acd6036 100644 --- a/usr/src/uts/common/brand/sn1/sn1_brand.c +++ b/usr/src/uts/common/brand/sn1/sn1_brand.c @@ -49,7 +49,7 @@ void sn1_setbrand(proc_t *); int sn1_getattr(zone_t *, int, void *, size_t *); int sn1_setattr(zone_t *, int, void *, size_t); int sn1_brandsys(int, int64_t *, uintptr_t, uintptr_t, uintptr_t, - uintptr_t, uintptr_t); + uintptr_t); void sn1_copy_procdata(proc_t *, proc_t *); void sn1_proc_exit(struct proc *); void sn1_exec(); @@ -179,10 +179,10 @@ sn1_setattr(zone_t *zone, int attr, void *buf, size_t bufsize) return (EINVAL); } -/*ARGSUSED*/ +/* ARGSUSED5 */ int sn1_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, uintptr_t arg5) + uintptr_t arg3, uintptr_t arg4) { int res; @@ -251,8 +251,8 @@ sn1_init_brand_data(zone_t *zone, kmutex_t *zsl) int sn1_elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, - int level, long *execsz, int setid, caddr_t exec_file, cred_t *cred, - int *brand_action) + int level, long *execsz, int setid, caddr_t exec_file, cred_t *cred, + int *brand_action) { return (brand_solaris_elfexec(vp, uap, args, idatap, level, execsz, setid, exec_file, cred, brand_action, &sn1_brand, SN1_BRANDNAME, diff --git a/usr/src/uts/common/brand/solaris10/s10_brand.c b/usr/src/uts/common/brand/solaris10/s10_brand.c index a02ee7de3d..50997fba02 100644 --- a/usr/src/uts/common/brand/solaris10/s10_brand.c +++ b/usr/src/uts/common/brand/solaris10/s10_brand.c @@ -52,7 +52,7 @@ void s10_setbrand(proc_t *); int s10_getattr(zone_t *, int, void *, size_t *); int s10_setattr(zone_t *, int, void *, size_t); int s10_brandsys(int, int64_t *, uintptr_t, uintptr_t, uintptr_t, - uintptr_t, uintptr_t); + uintptr_t); void s10_copy_procdata(proc_t *, proc_t *); void s10_proc_exit(struct proc *); void s10_exec(); @@ -280,10 +280,10 @@ s10_native(void *cmd, void *args) return (0); } -/*ARGSUSED*/ +/* ARGSUSED5 */ int s10_brandsys(int cmd, int64_t *rval, uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, uintptr_t arg5) + uintptr_t arg3, uintptr_t arg4) { proc_t *p = curproc; int res; @@ -420,8 +420,8 @@ s10_init_brand_data(zone_t *zone, kmutex_t *zsl) int s10_elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, - int level, long *execsz, int setid, caddr_t exec_file, cred_t *cred, - int *brand_action) + int level, long *execsz, int setid, caddr_t exec_file, cred_t *cred, + int *brand_action) { return (brand_solaris_elfexec(vp, uap, args, idatap, level, execsz, setid, exec_file, cred, brand_action, &s10_brand, S10_BRANDNAME, diff --git a/usr/src/uts/common/os/sysent.c b/usr/src/uts/common/os/sysent.c index aa44ccf788..1e61f3d24c 100644 --- a/usr/src/uts/common/os/sysent.c +++ b/usr/src/uts/common/os/sysent.c @@ -23,7 +23,7 @@ * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Milan Jurik. All rights reserved. * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. - * Copyright (c) 2015, Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ @@ -61,8 +61,7 @@ struct mmaplf32a; int access(char *, int); int alarm(int); int auditsys(struct auditcalls *, rval_t *); -int64_t brandsys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, - uintptr_t); +int64_t brandsys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); int brk(caddr_t); int chdir(char *); int chmod(char *, int); @@ -646,7 +645,7 @@ struct sysent sysent[NSYSCALL] = SYSENT_NOSYS(), SYSENT_C("llseek", llseek32, 4)), /* 176 */ SYSENT_LOADABLE(), /* inst_sync */ - /* 177 */ SYSENT_CI("brandsys", brandsys, 6), + /* 177 */ SYSENT_CI("brandsys", brandsys, 5), /* 178 */ SYSENT_LOADABLE(), /* kaio */ /* 179 */ SYSENT_LOADABLE(), /* cpc */ /* 180 */ SYSENT_CI("lgrpsys", lgrpsys, 3), @@ -1001,7 +1000,7 @@ struct sysent sysent32[NSYSCALL] = /* 174 */ SYSENT_CI("pwrite", pwrite32, 4), /* 175 */ SYSENT_C("llseek", llseek32, 4), /* 176 */ SYSENT_LOADABLE32(), /* inst_sync */ - /* 177 */ SYSENT_CI("brandsys", brandsys, 6), + /* 177 */ SYSENT_CI("brandsys", brandsys, 5), /* 178 */ SYSENT_LOADABLE32(), /* kaio */ /* 179 */ SYSENT_LOADABLE32(), /* cpc */ /* 180 */ SYSENT_CI("lgrpsys", lgrpsys, 3), diff --git a/usr/src/uts/common/sys/brand.h b/usr/src/uts/common/sys/brand.h index d88d5683a7..231daa5e9d 100644 --- a/usr/src/uts/common/sys/brand.h +++ b/usr/src/uts/common/sys/brand.h @@ -154,7 +154,7 @@ struct brand_ops { void (*b_init_brand_data)(zone_t *, kmutex_t *); void (*b_free_brand_data)(zone_t *); int (*b_brandsys)(int, int64_t *, uintptr_t, uintptr_t, uintptr_t, - uintptr_t, uintptr_t); + uintptr_t); void (*b_setbrand)(struct proc *); int (*b_getattr)(zone_t *, int, void *, size_t *); int (*b_setattr)(zone_t *, int, void *, size_t); diff --git a/usr/src/uts/common/syscall/brandsys.c b/usr/src/uts/common/syscall/brandsys.c index 8ee5511fd0..245ef9f14f 100644 --- a/usr/src/uts/common/syscall/brandsys.c +++ b/usr/src/uts/common/syscall/brandsys.c @@ -24,7 +24,7 @@ */ /* - * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ #include <sys/brand.h> @@ -37,7 +37,7 @@ */ int64_t brandsys(int cmd, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, - uintptr_t arg4, uintptr_t arg5) + uintptr_t arg4) { struct proc *p = curthread->t_procp; int64_t rval = 0; @@ -51,7 +51,7 @@ brandsys(int cmd, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, return (set_errno(ENOSYS)); if ((err = ZBROP(p->p_zone)->b_brandsys(cmd, &rval, arg1, arg2, arg3, - arg4, arg5)) != 0) + arg4)) != 0) return (set_errno(err)); return (rval); diff --git a/usr/src/uts/intel/brand/lx/lx_archdep.c b/usr/src/uts/intel/brand/lx/lx_archdep.c index 0117ece67f..b65bea42ea 100644 --- a/usr/src/uts/intel/brand/lx/lx_archdep.c +++ b/usr/src/uts/intel/brand/lx/lx_archdep.c @@ -10,7 +10,7 @@ */ /* - * Copyright 2015 Joyent, Inc. + * Copyright 2016 Joyent, Inc. */ /* @@ -235,9 +235,9 @@ lx_rw_uc(proc_t *p, void *ucp, void *kucp, size_t ucsz, boolean_t writing) size_t len = MIN(rem, PAGESIZE - (addr & PAGEOFFSET)); if (writing) { - error = uwrite(p, kucp + pos, len, addr); + error = uwrite(p, (caddr_t)kucp + pos, len, addr); } else { - error = uread(p, kucp + pos, len, addr); + error = uread(p, (caddr_t)kucp + pos, len, addr); } if (error != 0) { @@ -990,6 +990,7 @@ lx_user_regs_copyin(lx_lwp_data_t *lwpd, void *uregsp) } return (0); } + break; #ifdef __amd64 case DATAMODEL_LP64: @@ -1032,6 +1033,7 @@ lx_user_regs_copyout(lx_lwp_data_t *lwpd, void *uregsp) } return (0); } + break; #ifdef __amd64 case DATAMODEL_LP64: @@ -1072,6 +1074,7 @@ lx_user_fpregs_copyin(lx_lwp_data_t *lwpd, void *uregsp) lx_setfpregs32(lwpd, ®s); return (0); } + break; #ifdef __amd64 case DATAMODEL_LP64: @@ -1110,6 +1113,7 @@ lx_user_fpregs_copyout(lx_lwp_data_t *lwpd, void *uregsp) } return (0); } + break; #ifdef __amd64 case DATAMODEL_LP64: @@ -1132,6 +1136,7 @@ lx_user_fpregs_copyout(lx_lwp_data_t *lwpd, void *uregsp) return (EIO); } +/* ARGSUSED */ int lx_user_fpxregs_copyin(lx_lwp_data_t *lwpd, void *uregsp) { @@ -1139,6 +1144,7 @@ lx_user_fpxregs_copyin(lx_lwp_data_t *lwpd, void *uregsp) return (EIO); } +/* ARGSUSED */ int lx_user_fpxregs_copyout(lx_lwp_data_t *lwpd, void *uregsp) { @@ -1168,6 +1174,7 @@ lx_ptrace_peekuser(lx_lwp_data_t *lwpd, uintptr_t offset, void *uptr) } return (0); } + break; #ifdef __amd64 case DATAMODEL_LP64: @@ -1196,6 +1203,7 @@ lx_ptrace_peekuser(lx_lwp_data_t *lwpd, uintptr_t offset, void *uptr) return (EIO); } +/* ARGSUSED */ int lx_ptrace_pokeuser(lx_lwp_data_t *lwpd, uintptr_t offset, void *uptr) { @@ -1704,6 +1712,7 @@ badstack: #else /* !__amd64 (__i386) */ +/* ARGSUSED */ void lx_emulate_user(klwp_t *lwp, int syscall_num, uintptr_t *args) { diff --git a/usr/src/uts/intel/lx_brand/Makefile.rules b/usr/src/uts/intel/lx_brand/Makefile.rules index 0a83e15493..1f641cea05 100644 --- a/usr/src/uts/intel/lx_brand/Makefile.rules +++ b/usr/src/uts/intel/lx_brand/Makefile.rules @@ -21,7 +21,7 @@ # # Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. -# Copyright 2015 Joyent, Inc. +# Copyright 2016 Joyent, Inc. # # @@ -95,3 +95,6 @@ $(LINTS_DIR)/%.ln: $(LX_CMN)/%.c $(LINTS_DIR)/%.ln: $(UTSBASE)/intel/brand/lx/%.s @($(LHEAD) $(LINT.s) $< $(LTAIL)) + +$(LINTS_DIR)/%.ln: $(UTSBASE)/intel/brand/lx/%.c + @($(LHEAD) $(LINT.c) $< $(LTAIL)) diff --git a/usr/src/uts/intel/sys/machbrand.h b/usr/src/uts/intel/sys/machbrand.h index 2e77eb845b..ad7f631649 100644 --- a/usr/src/uts/intel/sys/machbrand.h +++ b/usr/src/uts/intel/sys/machbrand.h @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2015, Joyent, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ #ifndef _SYS_MACHBRAND_H @@ -33,6 +33,7 @@ extern "C" { #ifndef _ASM #include <sys/model.h> +#include <sys/thread.h> struct brand_mach_ops { void (*b_sysenter)(void); |