Lines Matching refs:args

210 	struct uarg args;  in exec_common()  local
356 bzero(&args, sizeof (args)); in exec_common()
357 args.pathname = resolvepn.pn_path; in exec_common()
365 error = pfexec_call(p->p_cred, &resolvepn, &args.pfcred, in exec_common()
366 &args.scrubenv); in exec_common()
378 if (args.pfcred != NULL && in exec_common()
380 crfree(args.pfcred); in exec_common()
381 args.pfcred = NULL; in exec_common()
382 args.scrubenv = B_FALSE; in exec_common()
390 args.stk_prot = PROT_ZFOD; in exec_common()
391 args.dat_prot = PROT_ZFOD; in exec_common()
394 DTRACE_PROC1(exec, char *, args.pathname); in exec_common()
404 if ((error = gexec(&vp, &ua, &args, NULL, 0, &execsz, in exec_common()
525 setregs(&args); in exec_common()
641 struct uarg *args, in gexec() argument
678 if ((error = execpermissions(*vpp, &vattr, args)) != 0) in gexec()
702 args->pfcred == NULL ? cred : args->pfcred, args->pathname)) != 0) { in gexec()
706 if (args->pfcred != NULL) { in gexec()
708 newcred = cred = args->pfcred; in gexec()
757 } else if (level == 0 && args->pfcred != NULL) { in gexec()
758 newcred = cred = args->pfcred; in gexec()
831 args->stk_prot &= ~PROT_EXEC; in gexec()
833 args->execswp = eswp; /* Save execsw pointer in uarg for exec_func */ in gexec()
834 args->ex_vp = vp; in gexec()
864 error = (*eswp->exec_func)(vp, uap, args, idatap, level, execsz, in gexec()
966 args->traceinval = 1; in gexec()
970 if (args->traceinval) in gexec()
1215 execpermissions(struct vnode *vp, struct vattr *vattrp, struct uarg *args) in execpermissions() argument
1248 args->traceinval = 1; in execpermissions()
1523 struct uarg *args, in noexec() argument
1602 #define STK_AVAIL(args) ((char *)(args)->stk_offp - (args)->stk_strp) argument
1608 stk_add(uarg_t *args, const char *sp, enum uio_seg segflg) in stk_add() argument
1613 if (STK_AVAIL(args) < sizeof (int)) in stk_add()
1615 *--args->stk_offp = args->stk_strp - args->stk_base; in stk_add()
1618 error = copyinstr(sp, args->stk_strp, STK_AVAIL(args), &len); in stk_add()
1623 if (len > STK_AVAIL(args)) in stk_add()
1625 bcopy(sp, args->stk_strp, len); in stk_add()
1628 args->stk_strp += len; in stk_add()
1634 stk_getptr(uarg_t *args, char *src, char **dst) in stk_getptr() argument
1638 if (args->from_model == DATAMODEL_NATIVE) { in stk_getptr()
1651 stk_putptr(uarg_t *args, char *addr, char *value) in stk_putptr() argument
1653 if (args->to_model == DATAMODEL_NATIVE) in stk_putptr()
1660 stk_copyin(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp) in stk_copyin() argument
1665 size_t ptrsize = args->from_ptrsize; in stk_copyin()
1681 error = stk_add(args, intp->intp_name[i], UIO_SYSSPACE); in stk_copyin()
1685 error = stk_add(args, intp->intp_arg[i], in stk_copyin()
1692 if (args->fname != NULL) in stk_copyin()
1693 error = stk_add(args, args->fname, UIO_SYSSPACE); in stk_copyin()
1695 error = stk_add(args, uap->fname, UIO_USERSPACE); in stk_copyin()
1702 if (stk_getptr(args, argv, &sp)) in stk_copyin()
1715 if (stk_getptr(args, argv, &sp)) in stk_copyin()
1719 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0) in stk_copyin()
1724 argc = (int *)(args->stk_base + args->stk_size) - args->stk_offp; in stk_copyin()
1725 args->arglen = args->stk_strp - args->stk_base; in stk_copyin()
1732 char *tmp = args->stk_strp; in stk_copyin()
1733 if (stk_getptr(args, envp, &sp)) in stk_copyin()
1737 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0) in stk_copyin()
1739 if (args->scrubenv && strncmp(tmp, "LD_", 3) == 0) { in stk_copyin()
1741 args->stk_strp = tmp; in stk_copyin()
1742 *(args->stk_offp++) = 0; in stk_copyin()
1747 args->na = (int *)(args->stk_base + args->stk_size) - args->stk_offp; in stk_copyin()
1748 args->ne = args->na - argc; in stk_copyin()
1755 if ((error = stk_add(args, platform, UIO_SYSSPACE)) != 0) in stk_copyin()
1757 if ((error = stk_add(args, args->pathname, UIO_SYSSPACE)) != 0) in stk_copyin()
1759 if (args->brandname != NULL && in stk_copyin()
1760 (error = stk_add(args, args->brandname, UIO_SYSSPACE)) != 0) in stk_copyin()
1762 if (args->emulator != NULL && in stk_copyin()
1763 (error = stk_add(args, args->emulator, UIO_SYSSPACE)) != 0) in stk_copyin()
1776 size = (args->na + 4) * args->to_ptrsize + args->auxsize + in stk_copyin()
1777 (args->stk_strp - args->stk_base); in stk_copyin()
1782 pad = P2NPHASE(size, args->stk_align); in stk_copyin()
1784 if (STK_AVAIL(args) < pad) in stk_copyin()
1787 args->usrstack_size = size + pad; in stk_copyin()
1790 *args->stk_strp++ = 0; in stk_copyin()
1792 args->nc = args->stk_strp - args->stk_base; in stk_copyin()
1798 stk_copyout(uarg_t *args, char *usrstack, void **auxvpp, user_t *up) in stk_copyout() argument
1800 size_t ptrsize = args->to_ptrsize; in stk_copyout()
1802 char *kstrp = args->stk_base; in stk_copyout()
1803 char *ustrp = usrstack - args->nc - ptrsize; in stk_copyout()
1804 char *usp = usrstack - args->usrstack_size; in stk_copyout()
1805 int *offp = (int *)(args->stk_base + args->stk_size); in stk_copyout()
1806 int envc = args->ne; in stk_copyout()
1807 int argc = args->na - envc; in stk_copyout()
1819 if (stk_putptr(args, usp, (char *)(uintptr_t)argc)) in stk_copyout()
1831 if (stk_putptr(args, usp, &ustrp[*--offp])) in stk_copyout()
1837 pslen = MIN(args->arglen, PSARGSZ) - 1; in stk_copyout()
1853 if (stk_putptr(args, usp, &ustrp[*--offp])) in stk_copyout()
1860 args->stackend = usp += ptrsize; in stk_copyout()
1865 if (copyout(args->stk_base, ustrp, args->nc)) in stk_copyout()
1874 if (args->to_model == DATAMODEL_NATIVE) { in stk_copyout()
1878 if (args->brandname != NULL) in stk_copyout()
1881 if (args->emulator != NULL) in stk_copyout()
1890 if (args->brandname != NULL) in stk_copyout()
1893 if (args->emulator != NULL) in stk_copyout()
2002 exec_args(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp) in exec_args() argument
2017 args->from_model = p->p_model; in exec_args()
2019 args->from_ptrsize = sizeof (long); in exec_args()
2021 args->from_ptrsize = sizeof (int32_t); in exec_args()
2024 if (args->to_model == DATAMODEL_NATIVE) { in exec_args()
2025 args->to_ptrsize = sizeof (long); in exec_args()
2026 args->ncargs = NCARGS; in exec_args()
2027 args->stk_align = STACK_ALIGN; in exec_args()
2028 if (args->addr32) in exec_args()
2033 args->to_ptrsize = sizeof (int32_t); in exec_args()
2034 args->ncargs = NCARGS32; in exec_args()
2035 args->stk_align = STACK_ALIGN32; in exec_args()
2039 ASSERT(P2PHASE((uintptr_t)usrstack, args->stk_align) == 0); in exec_args()
2050 args->stk_size = size; in exec_args()
2051 args->stk_base = kmem_alloc(size, KM_SLEEP); in exec_args()
2052 args->stk_strp = args->stk_base; in exec_args()
2053 args->stk_offp = (int *)(args->stk_base + size); in exec_args()
2054 error = stk_copyin(uap, args, intp, auxvpp); in exec_args()
2057 kmem_free(args->stk_base, size); in exec_args()
2060 if (size >= args->ncargs) in exec_args()
2064 size = args->usrstack_size; in exec_args()
2067 ASSERT(P2PHASE(size, args->stk_align) == 0); in exec_args()
2068 ASSERT((ssize_t)STK_AVAIL(args) >= 0); in exec_args()
2070 if (size > args->ncargs) { in exec_args()
2071 kmem_free(args->stk_base, args->stk_size); in exec_args()
2080 kmem_free(args->stk_base, args->stk_size); in exec_args()
2134 audit_exec(args->stk_base, args->stk_base + args->arglen, in exec_args()
2135 args->na - args->ne, args->ne, args->pfcred); in exec_args()
2157 up->u_execsw = args->execswp; in exec_args()
2166 p->p_model = args->to_model; in exec_args()
2168 p->p_stkprot = args->stk_prot; in exec_args()
2169 p->p_datprot = args->dat_prot; in exec_args()
2190 ASSERT(P2PHASE(sp_slew, args->stk_align) == 0); in exec_args()
2198 if (p->p_model == DATAMODEL_ILP32 || args->addr32) in exec_args()
2201 hat_join_srd(as->a_hat, args->ex_vp); in exec_args()
2204 error = stk_copyout(args, usrstack - sp_slew, auxvpp, up); in exec_args()
2205 kmem_free(args->stk_base, args->stk_size); in exec_args()