Lines Matching refs:args

143 	struct uarg args;
272 bzero(&args, sizeof (args));
273 args.pathname = resolvepn.pn_path;
274 /* don't free resolvepn until we are done with args */
281 error = pfexec_call(p->p_cred, &resolvepn, &args.pfcred,
282 &args.scrubenv);
294 if (args.pfcred != NULL &&
296 crfree(args.pfcred);
297 args.pfcred = NULL;
298 args.scrubenv = B_FALSE;
306 args.stk_prot = PROT_ZFOD;
307 args.dat_prot = PROT_ZFOD;
310 DTRACE_PROC1(exec, char *, args.pathname);
320 if ((error = gexec(&vp, &ua, &args, NULL, 0, &execsz,
441 setregs(&args);
557 struct uarg *args,
594 if ((error = execpermissions(*vpp, &vattr, args)) != 0)
618 args->pfcred == NULL ? cred : args->pfcred, args->pathname)) != 0) {
622 if (args->pfcred != NULL) {
624 newcred = cred = args->pfcred;
673 } else if (level == 0 && args->pfcred != NULL) {
674 newcred = cred = args->pfcred;
747 args->stk_prot &= ~PROT_EXEC;
749 args->execswp = eswp; /* Save execsw pointer in uarg for exec_func */
750 args->ex_vp = vp;
780 error = (*eswp->exec_func)(vp, uap, args, idatap, level, execsz,
882 args->traceinval = 1;
886 if (args->traceinval)
1131 execpermissions(struct vnode *vp, struct vattr *vattrp, struct uarg *args)
1164 args->traceinval = 1;
1439 struct uarg *args,
1518 #define STK_AVAIL(args) ((char *)(args)->stk_offp - (args)->stk_strp)
1524 stk_add(uarg_t *args, const char *sp, enum uio_seg segflg)
1529 if (STK_AVAIL(args) < sizeof (int))
1531 *--args->stk_offp = args->stk_strp - args->stk_base;
1534 error = copyinstr(sp, args->stk_strp, STK_AVAIL(args), &len);
1539 if (len > STK_AVAIL(args))
1541 bcopy(sp, args->stk_strp, len);
1544 args->stk_strp += len;
1550 stk_getptr(uarg_t *args, char *src, char **dst)
1554 if (args->from_model == DATAMODEL_NATIVE) {
1567 stk_putptr(uarg_t *args, char *addr, char *value)
1569 if (args->to_model == DATAMODEL_NATIVE)
1576 stk_copyin(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp)
1581 size_t ptrsize = args->from_ptrsize;
1597 error = stk_add(args, intp->intp_name[i], UIO_SYSSPACE);
1601 error = stk_add(args, intp->intp_arg[i],
1608 if (args->fname != NULL)
1609 error = stk_add(args, args->fname, UIO_SYSSPACE);
1611 error = stk_add(args, uap->fname, UIO_USERSPACE);
1618 if (stk_getptr(args, argv, &sp))
1631 if (stk_getptr(args, argv, &sp))
1635 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0)
1640 argc = (int *)(args->stk_base + args->stk_size) - args->stk_offp;
1641 args->arglen = args->stk_strp - args->stk_base;
1648 char *tmp = args->stk_strp;
1649 if (stk_getptr(args, envp, &sp))
1653 if ((error = stk_add(args, sp, UIO_USERSPACE)) != 0)
1655 if (args->scrubenv && strncmp(tmp, "LD_", 3) == 0) {
1657 args->stk_strp = tmp;
1658 *(args->stk_offp++) = NULL;
1663 args->na = (int *)(args->stk_base + args->stk_size) - args->stk_offp;
1664 args->ne = args->na - argc;
1671 if ((error = stk_add(args, platform, UIO_SYSSPACE)) != 0)
1673 if ((error = stk_add(args, args->pathname, UIO_SYSSPACE)) != 0)
1675 if (args->brandname != NULL &&
1676 (error = stk_add(args, args->brandname, UIO_SYSSPACE)) != 0)
1678 if (args->emulator != NULL &&
1679 (error = stk_add(args, args->emulator, UIO_SYSSPACE)) != 0)
1686 * The total number of pointers is args->na (which is argc + envc)
1692 size = (args->na + 4) * args->to_ptrsize + args->auxsize +
1693 (args->stk_strp - args->stk_base);
1698 pad = P2NPHASE(size, args->stk_align);
1700 if (STK_AVAIL(args) < pad)
1703 args->usrstack_size = size + pad;
1706 *args->stk_strp++ = 0;
1708 args->nc = args->stk_strp - args->stk_base;
1714 stk_copyout(uarg_t *args, char *usrstack, void **auxvpp, user_t *up)
1716 size_t ptrsize = args->to_ptrsize;
1718 char *kstrp = args->stk_base;
1719 char *ustrp = usrstack - args->nc - ptrsize;
1720 char *usp = usrstack - args->usrstack_size;
1721 int *offp = (int *)(args->stk_base + args->stk_size);
1722 int envc = args->ne;
1723 int argc = args->na - envc;
1735 if (stk_putptr(args, usp, (char *)(uintptr_t)argc))
1747 if (stk_putptr(args, usp, &ustrp[*--offp]))
1753 pslen = MIN(args->arglen, PSARGSZ) - 1;
1769 if (stk_putptr(args, usp, &ustrp[*--offp]))
1776 args->stackend = usp += ptrsize;
1781 if (copyout(args->stk_base, ustrp, args->nc))
1790 if (args->to_model == DATAMODEL_NATIVE) {
1794 if (args->brandname != NULL)
1797 if (args->emulator != NULL)
1806 if (args->brandname != NULL)
1809 if (args->emulator != NULL)
1904 exec_args(execa_t *uap, uarg_t *args, intpdata_t *intp, void **auxvpp)
1916 args->from_model = p->p_model;
1918 args->from_ptrsize = sizeof (long);
1920 args->from_ptrsize = sizeof (int32_t);
1923 if (args->to_model == DATAMODEL_NATIVE) {
1924 args->to_ptrsize = sizeof (long);
1925 args->ncargs = NCARGS;
1926 args->stk_align = STACK_ALIGN;
1927 if (args->addr32)
1932 args->to_ptrsize = sizeof (int32_t);
1933 args->ncargs = NCARGS32;
1934 args->stk_align = STACK_ALIGN32;
1938 ASSERT(P2PHASE((uintptr_t)usrstack, args->stk_align) == 0);
1949 args->stk_size = size;
1950 args->stk_base = kmem_alloc(size, KM_SLEEP);
1951 args->stk_strp = args->stk_base;
1952 args->stk_offp = (int *)(args->stk_base + size);
1953 error = stk_copyin(uap, args, intp, auxvpp);
1956 kmem_free(args->stk_base, size);
1959 if (size >= args->ncargs)
1963 size = args->usrstack_size;
1966 ASSERT(P2PHASE(size, args->stk_align) == 0);
1967 ASSERT((ssize_t)STK_AVAIL(args) >= 0);
1969 if (size > args->ncargs) {
1970 kmem_free(args->stk_base, args->stk_size);
1979 kmem_free(args->stk_base, args->stk_size);
2033 audit_exec(args->stk_base, args->stk_base + args->arglen,
2034 args->na - args->ne, args->ne, args->pfcred);
2056 up->u_execsw = args->execswp;
2063 p->p_model = args->to_model;
2065 p->p_stkprot = args->stk_prot;
2066 p->p_datprot = args->dat_prot;
2087 ASSERT(P2PHASE(sp_slew, args->stk_align) == 0);
2095 if (p->p_model == DATAMODEL_ILP32 || args->addr32)
2098 hat_join_srd(as->a_hat, args->ex_vp);
2103 error = stk_copyout(args, usrstack - sp_slew, auxvpp, up);
2104 kmem_free(args->stk_base, args->stk_size);