From: Dmitry V. Levin Date: Wed, 5 Feb 2014 16:17:02 +0000 (+0000) Subject: Implement finit_module decoding X-Git-Tag: v4.9~127 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f67502e4045393fb46d73e876128dfd539a63b04;p=strace Implement finit_module decoding * bjm.c (module_init_flags): New xlat structure. (sys_finit_module): New function. * linux/dummy.h (sys_finit_module): Remove. * linux/syscall.h (sys_finit_module): New prototype. --- diff --git a/bjm.c b/bjm.c index 6f1ee57a..d7acff0d 100644 --- a/bjm.c +++ b/bjm.c @@ -200,3 +200,30 @@ sys_init_module(struct tcb *tcp) } return 0; } + +#define MODULE_INIT_IGNORE_MODVERSIONS 1 +#define MODULE_INIT_IGNORE_VERMAGIC 2 + +static const struct xlat module_init_flags[] = { + XLAT(MODULE_INIT_IGNORE_MODVERSIONS), + XLAT(MODULE_INIT_IGNORE_VERMAGIC), + XLAT_END +}; + +int +sys_finit_module(struct tcb *tcp) +{ + if (exiting(tcp)) + return 0; + + /* file descriptor */ + printfd(tcp, tcp->u_arg[0]); + tprints(", "); + /* param_values */ + printstr(tcp, tcp->u_arg[1], -1); + tprints(", "); + /* flags */ + printflags(module_init_flags, tcp->u_arg[2], "MODULE_INIT_???"); + + return 0; +} diff --git a/linux/dummy.h b/linux/dummy.h index 78d264f6..b9cd91b3 100644 --- a/linux/dummy.h +++ b/linux/dummy.h @@ -33,7 +33,6 @@ /* still unfinished */ #define sys_add_key printargs -#define sys_finit_module printargs #define sys_ioperm printargs #define sys_iopl printargs #define sys_ioprio_get printargs diff --git a/linux/syscall.h b/linux/syscall.h index d8ce91fe..17b9431d 100644 --- a/linux/syscall.h +++ b/linux/syscall.h @@ -74,6 +74,7 @@ int sys_fchown(); int sys_fchownat(); int sys_fcntl(); int sys_fgetxattr(); +int sys_finit_module(); int sys_flistxattr(); int sys_flock(); int sys_fork();