From: Dmitry V. Levin Date: Mon, 26 Dec 2016 02:28:04 +0000 (+0300) Subject: Remove getarg_klu X-Git-Tag: v4.16~154 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=50b50e78f674068c614e08a1b9e30971503ea61c;p=strace Remove getarg_klu After transition from long to kernel_ulong_t we no longer need tcp->ext_arg, and therefore a function to access it is also no longer needed. * defs.h (getarg_klu): Remove prototype. * util.c (getarg_klu): Remove. (printargs): Access tcp->u_arg directly * bjm.c (SYS_FUNC(init_module)): Likewise. * clone.c (SYS_FUNC(unshare)): Likewise. * fadvise.c (SYS_FUNC(fadvise64)): Likewise. * kcmp.c (SYS_FUNC(kcmp)): Likewise. * kexec.c (SYS_FUNC(kexec_file_load)): Likewise. * keyctl.c (SYS_FUNC(keyctl)): Likewise. * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Likewise. * mem.c (do_mprotect): Likewise. * mq.c (SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive)): Likewise. * pkeys.c (SYS_FUNC(pkey_alloc)): Likewise. * prctl.c (print_prctl_args, SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): Likewise. --- diff --git a/bjm.c b/bjm.c index 5d3b6053..926add3c 100644 --- a/bjm.c +++ b/bjm.c @@ -44,8 +44,8 @@ SYS_FUNC(delete_module) SYS_FUNC(init_module) { - printaddr(getarg_klu(tcp, 0)); - tprintf(", %" PRI_klu ", ", getarg_klu(tcp, 1)); + printaddr(tcp->u_arg[0]); + tprintf(", %" PRI_klu ", ", tcp->u_arg[1]); printstr(tcp, tcp->u_arg[2]); return RVAL_DECODED; diff --git a/clone.c b/clone.c index fdebf594..b5221f9d 100644 --- a/clone.c +++ b/clone.c @@ -154,7 +154,7 @@ SYS_FUNC(setns) SYS_FUNC(unshare) { - printflags64(unshare_flags, getarg_klu(tcp, 0), "CLONE_???"); + printflags64(unshare_flags, tcp->u_arg[0], "CLONE_???"); return RVAL_DECODED; } diff --git a/defs.h b/defs.h index c161de9b..71c1d7a1 100644 --- a/defs.h +++ b/defs.h @@ -587,7 +587,6 @@ extern int printxval_searchn(const struct xlat *xlat, size_t xlat_size, uint64_t val, const char *dflt); #define printxval_search(xlat__, val__, dflt__) \ printxval_searchn(xlat__, ARRAY_SIZE(xlat__), val__, dflt__) -extern kernel_ulong_t getarg_klu(struct tcb *tcp, int argn); extern int printargs(struct tcb *); extern int printargs_u(struct tcb *); extern int printargs_d(struct tcb *); diff --git a/fadvise.c b/fadvise.c index 909da5de..f0d057b7 100644 --- a/fadvise.c +++ b/fadvise.c @@ -42,7 +42,7 @@ SYS_FUNC(fadvise64) printfd(tcp, tcp->u_arg[0]); argn = printllval(tcp, ", %lld", 1); - tprintf(", %" PRI_klu ", ", getarg_klu(tcp, argn++)); + tprintf(", %" PRI_klu ", ", tcp->u_arg[argn++]); printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???"); return RVAL_DECODED; diff --git a/kcmp.c b/kcmp.c index 8b5bd708..97795e63 100644 --- a/kcmp.c +++ b/kcmp.c @@ -33,8 +33,8 @@ SYS_FUNC(kcmp) pid_t pid1 = tcp->u_arg[0]; pid_t pid2 = tcp->u_arg[1]; int type = tcp->u_arg[2]; - kernel_ulong_t idx1 = getarg_klu(tcp, 3); - kernel_ulong_t idx2 = getarg_klu(tcp, 4); + kernel_ulong_t idx1 = tcp->u_arg[3]; + kernel_ulong_t idx2 = tcp->u_arg[4]; tprintf("%d, %d, ", pid1, pid2); printxval(kcmp_types, type, "KCMP_???"); diff --git a/kexec.c b/kexec.c index 0917e24f..44d5bd18 100644 --- a/kexec.c +++ b/kexec.c @@ -111,12 +111,12 @@ SYS_FUNC(kexec_file_load) printfd(tcp, tcp->u_arg[1]); tprints(", "); /* cmdline_len */ - tprintf("%" PRI_klu ", ", getarg_klu(tcp, 2)); + tprintf("%" PRI_klu ", ", tcp->u_arg[2]); /* cmdline */ printstrn(tcp, tcp->u_arg[3], tcp->u_arg[2]); tprints(", "); /* flags */ - printflags64(kexec_file_load_flags, getarg_klu(tcp, 4), "KEXEC_FILE_???"); + printflags64(kexec_file_load_flags, tcp->u_arg[4], "KEXEC_FILE_???"); return RVAL_DECODED; } diff --git a/keyctl.c b/keyctl.c index f959ac52..c270221f 100644 --- a/keyctl.c +++ b/keyctl.c @@ -268,10 +268,10 @@ keyctl_dh_compute(struct tcb *tcp, kernel_ulong_t params, kernel_ulong_t buf, SYS_FUNC(keyctl) { int cmd = tcp->u_arg[0]; - kernel_ulong_t arg2 = getarg_klu(tcp, 1); - kernel_ulong_t arg3 = getarg_klu(tcp, 2); - kernel_ulong_t arg4 = getarg_klu(tcp, 3); - kernel_ulong_t arg5 = getarg_klu(tcp, 4); + kernel_ulong_t arg2 = tcp->u_arg[1]; + kernel_ulong_t arg3 = tcp->u_arg[2]; + kernel_ulong_t arg4 = tcp->u_arg[3]; + kernel_ulong_t arg5 = tcp->u_arg[4]; if (entering(tcp)) { printxval(keyctl_commands, cmd, "KEYCTL_???"); diff --git a/lookup_dcookie.c b/lookup_dcookie.c index 079a0581..279694f1 100644 --- a/lookup_dcookie.c +++ b/lookup_dcookie.c @@ -43,7 +43,7 @@ SYS_FUNC(lookup_dcookie) printstrn(tcp, tcp->u_arg[argn], tcp->u_rval); /* len */ - tprintf(", %" PRI_klu, getarg_klu(tcp, argn + 1)); + tprintf(", %" PRI_klu, tcp->u_arg[argn + 1]); return 0; } diff --git a/mem.c b/mem.c index 0a4d3b94..350475da 100644 --- a/mem.c +++ b/mem.c @@ -185,9 +185,9 @@ SYS_FUNC(munmap) static int do_mprotect(struct tcb *tcp, bool has_pkey) { - printaddr(getarg_klu(tcp, 0)); - tprintf(", %" PRI_klu ", ", getarg_klu(tcp, 1)); - printflags64(mmap_prot, getarg_klu(tcp, 2), "PROT_???"); + printaddr(tcp->u_arg[0]); + tprintf(", %" PRI_klu ", ", tcp->u_arg[1]); + printflags64(mmap_prot, tcp->u_arg[2], "PROT_???"); if (has_pkey) tprintf(", %d", (int) tcp->u_arg[3]); diff --git a/mq.c b/mq.c index 26bf6296..5b46d478 100644 --- a/mq.c +++ b/mq.c @@ -49,7 +49,7 @@ SYS_FUNC(mq_timedsend) { tprintf("%d, ", (int) tcp->u_arg[0]); printstrn(tcp, tcp->u_arg[1], tcp->u_arg[2]); - tprintf(", %" PRI_klu ", %u, ", getarg_klu(tcp, 2), + tprintf(", %" PRI_klu ", %u, ", tcp->u_arg[2], (unsigned int) tcp->u_arg[3]); print_timespec(tcp, tcp->u_arg[4]); return RVAL_DECODED; @@ -64,7 +64,7 @@ SYS_FUNC(mq_timedreceive) printaddr(tcp->u_arg[1]); else printstrn(tcp, tcp->u_arg[1], tcp->u_rval); - tprintf(", %" PRI_klu ", ", getarg_klu(tcp, 2)); + tprintf(", %" PRI_klu ", ", tcp->u_arg[2]); printnum_int(tcp, tcp->u_arg[3], "%u"); tprintf(", "); /* diff --git a/pkeys.c b/pkeys.c index 91be9158..f5338ab8 100644 --- a/pkeys.c +++ b/pkeys.c @@ -4,8 +4,8 @@ SYS_FUNC(pkey_alloc) { - tprintf("%#" PRI_klx ", ", getarg_klu(tcp, 0)); - printflags64(pkey_access, getarg_klu(tcp, 1), "PKEY_???"); + tprintf("%#" PRI_klx ", ", tcp->u_arg[0]); + printflags64(pkey_access, tcp->u_arg[1], "PKEY_???"); return RVAL_DECODED; } diff --git a/prctl.c b/prctl.c index 79c99165..dede4c9d 100644 --- a/prctl.c +++ b/prctl.c @@ -70,21 +70,21 @@ print_prctl_args(struct tcb *tcp, const unsigned int first) unsigned int i; for (i = first; i < tcp->s_ent->nargs; ++i) - tprintf(", %#" PRI_klx, getarg_klu(tcp, i)); + tprintf(", %#" PRI_klx, tcp->u_arg[i]); } SYS_FUNC(prctl) { const unsigned int option = tcp->u_arg[0]; - const kernel_ulong_t arg2 = getarg_klu(tcp, 1); - const kernel_ulong_t arg3 = getarg_klu(tcp, 2); + const kernel_ulong_t arg2 = tcp->u_arg[1]; + const kernel_ulong_t arg3 = tcp->u_arg[2]; /* * PR_SET_VMA is the only command which actually uses these arguments * currently, and it is available only on Android for now. */ #ifdef __ANDROID__ - const kernel_ulong_t arg4 = getarg_klu(tcp, 3); - const kernel_ulong_t arg5 = getarg_klu(tcp, 4); + const kernel_ulong_t arg4 = tcp->u_arg[3]; + const kernel_ulong_t arg5 = tcp->u_arg[4]; #endif unsigned int i; @@ -356,7 +356,7 @@ SYS_FUNC(prctl) SYS_FUNC(arch_prctl) { const unsigned int option = tcp->u_arg[0]; - const kernel_ulong_t addr = getarg_klu(tcp, 1); + const kernel_ulong_t addr = tcp->u_arg[1]; if (entering(tcp)) printxval(archvals, option, "ARCH_???"); diff --git a/util.c b/util.c index 099bd388..49a5c4b7 100644 --- a/util.c +++ b/util.c @@ -1493,30 +1493,13 @@ print_array(struct tcb *const tcp, return cur >= end_addr; } -kernel_ulong_t -getarg_klu(struct tcb *tcp, int argn) -{ -#if HAVE_STRUCT_TCB_EXT_ARG -# ifndef current_klongsize - if (current_klongsize < sizeof(*tcp->ext_arg)) { - return tcp->u_arg[argn]; - } else -# endif /* !current_klongsize */ - { - return tcp->ext_arg[argn]; - } -#else - return tcp->u_arg[argn]; -#endif -} - int printargs(struct tcb *tcp) { const int n = tcp->s_ent->nargs; int i; for (i = 0; i < n; ++i) - tprintf("%s%#" PRI_klx, i ? ", " : "", getarg_klu(tcp, i)); + tprintf("%s%#" PRI_klx, i ? ", " : "", tcp->u_arg[i]); return RVAL_DECODED; }