Lines Matching refs:args

127 	struct uarg args;
256 bzero(&args, sizeof (args));
257 args.pathname = resolvepn.pn_path;
258 /* don't free resolvepn until we are done with args */
265 error = pfexec_call(p->p_cred, &resolvepn, &args.pfcred,
266 &args.scrubenv);
278 if (args.pfcred != NULL &&
280 crfree(args.pfcred);
281 args.pfcred = NULL;
282 args.scrubenv = B_FALSE;
290 args.stk_prot = PROT_ZFOD;
291 args.dat_prot = PROT_ZFOD;
294 DTRACE_PROC1(exec, char *, args.pathname);
304 if ((error = gexec(&vp, &ua, &args, NULL, 0, &execsz,
425 setregs(&args);
541 struct uarg *args,
575 if ((error = execpermissions(*vpp, &vattr, args)) != 0)
599 args->pfcred == NULL ? cred : args->pfcred, args->pathname)) != 0) {
603 if (args->pfcred != NULL) {
605 newcred = cred = args->pfcred;
654 } else if (level == 0 && args->pfcred != NULL) {
655 newcred = cred = args->pfcred;
724 args->stk_prot &= ~PROT_EXEC;
726 args->execswp = eswp; /* Save execsw pointer in uarg for exec_func */
727 args->ex_vp = vp;
757 error = (*eswp->exec_func)(vp, uap, args, idatap, level, execsz,
859 args->traceinval = 1;
863 if (args->traceinval)
1102 execpermissions(struct vnode *vp, struct vattr *vattrp, struct uarg *args)
1135 args->traceinval = 1;
1410 struct uarg *args,
1489 #define STK_AVAIL(args) ((char *)(args)->stk_offp - (args)->stk_strp)
1495 stk_add(uarg_t *args, const char *sp, enum uio_seg segflg)
1500 if (STK_AVAIL(args) < sizeof (int))
1502 *--args->stk_offp = args->stk_strp - args->stk_base;
1505 error = copyinstr(sp, args->stk_strp, STK_AVAIL(args), &len);
1510 if (len > STK_AVAIL(args))
1512 bcopy(sp, args->stk_strp, len);
1515 args->stk_strp += len;
1521 stk_getptr(uarg_t *args, char *src, char **dst)
1525 if (args->from_model == DATAMODEL_NATIVE) {
1538 stk_putptr(uarg_t *args, char *addr, char *value)
1540 if (args->to_model == DATAMODEL_NATIVE)
1547 stk_copyin(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp)
1552 size_t ptrsize = args->from_ptrsize;
1561 if ((error = stk_add(args, intp->intp_name, UIO_SYSSPACE)) != 0)
1564 (error = stk_add(args, intp->intp_arg, UIO_SYSSPACE)) != 0)
1566 if (args->fname != NULL)
1567 error = stk_add(args, args->fname, UIO_SYSSPACE);
1569 error = stk_add(args, uap->fname, UIO_USERSPACE);
1576 if (stk_getptr(args, argv, &sp))
1589 if (stk_getptr(args, argv, &sp))
1593 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0)
1598 argc = (int *)(args->stk_base + args->stk_size) - args->stk_offp;
1599 args->arglen = args->stk_strp - args->stk_base;
1606 char *tmp = args->stk_strp;
1607 if (stk_getptr(args, envp, &sp))
1611 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0)
1613 if (args->scrubenv && strncmp(tmp, "LD_", 3) == 0) {
1615 args->stk_strp = tmp;
1616 *(args->stk_offp++) = NULL;
1621 args->na = (int *)(args->stk_base + args->stk_size) - args->stk_offp;
1622 args->ne = args->na - argc;
1629 if ((error = stk_add(args, platform, UIO_SYSSPACE)) != 0)
1631 if ((error = stk_add(args, args->pathname, UIO_SYSSPACE)) != 0)
1633 if (args->brandname != NULL &&
1634 (error = stk_add(args, args->brandname, UIO_SYSSPACE)) != 0)
1636 if (args->emulator != NULL &&
1637 (error = stk_add(args, args->emulator, UIO_SYSSPACE)) != 0)
1644 * The total number of pointers is args->na (which is argc + envc)
1650 size = (args->na + 4) * args->to_ptrsize + args->auxsize +
1651 (args->stk_strp - args->stk_base);
1656 pad = P2NPHASE(size, args->stk_align);
1658 if (STK_AVAIL(args) < pad)
1661 args->usrstack_size = size + pad;
1664 *args->stk_strp++ = 0;
1666 args->nc = args->stk_strp - args->stk_base;
1672 stk_copyout(uarg_t *args, char *usrstack, void **auxvpp, user_t *up)
1674 size_t ptrsize = args->to_ptrsize;
1676 char *kstrp = args->stk_base;
1677 char *ustrp = usrstack - args->nc - ptrsize;
1678 char *usp = usrstack - args->usrstack_size;
1679 int *offp = (int *)(args->stk_base + args->stk_size);
1680 int envc = args->ne;
1681 int argc = args->na - envc;
1693 if (stk_putptr(args, usp, (char *)(uintptr_t)argc))
1705 if (stk_putptr(args, usp, &ustrp[*--offp]))
1711 pslen = MIN(args->arglen, PSARGSZ) - 1;
1727 if (stk_putptr(args, usp, &ustrp[*--offp]))
1734 args->stackend = usp += ptrsize;
1739 if (copyout(args->stk_base, ustrp, args->nc))
1748 if (args->to_model == DATAMODEL_NATIVE) {
1752 if (args->brandname != NULL)
1755 if (args->emulator != NULL)
1764 if (args->brandname != NULL)
1767 if (args->emulator != NULL)
1824 exec_args(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp)
1836 args->from_model = p->p_model;
1838 args->from_ptrsize = sizeof (long);
1840 args->from_ptrsize = sizeof (int32_t);
1843 if (args->to_model == DATAMODEL_NATIVE) {
1844 args->to_ptrsize = sizeof (long);
1845 args->ncargs = NCARGS;
1846 args->stk_align = STACK_ALIGN;
1847 if (args->addr32)
1852 args->to_ptrsize = sizeof (int32_t);
1853 args->ncargs = NCARGS32;
1854 args->stk_align = STACK_ALIGN32;
1858 ASSERT(P2PHASE((uintptr_t)usrstack, args->stk_align) == 0);
1869 args->stk_size = size;
1870 args->stk_base = kmem_alloc(size, KM_SLEEP);
1871 args->stk_strp = args->stk_base;
1872 args->stk_offp = (int *)(args->stk_base + size);
1873 error = stk_copyin(uap, args, intp, auxvpp);
1876 kmem_free(args->stk_base, size);
1879 if (size >= args->ncargs)
1883 size = args->usrstack_size;
1886 ASSERT(P2PHASE(size, args->stk_align) == 0);
1887 ASSERT((ssize_t)STK_AVAIL(args) >= 0);
1889 if (size > args->ncargs) {
1890 kmem_free(args->stk_base, args->stk_size);
1899 kmem_free(args->stk_base, args->stk_size);
1953 audit_exec(args->stk_base, args->stk_base + args->arglen,
1954 args->na - args->ne, args->ne, args->pfcred);
1976 up->u_execsw = args->execswp;
1983 p->p_model = args->to_model;
1985 p->p_stkprot = args->stk_prot;
1986 p->p_datprot = args->dat_prot;
2016 ASSERT(P2PHASE(sp_slew, args->stk_align) == 0);
2022 if (p->p_model == DATAMODEL_ILP32 || args->addr32)
2025 hat_join_srd(as->a_hat, args->ex_vp);
2030 error = stk_copyout(args, usrstack - sp_slew, auxvpp, up);
2031 kmem_free(args->stk_base, args->stk_size);