From cd073d3e885c7826257ff69633aad84e064562ad Mon Sep 17 00:00:00 2001 From: Andrew Vagin Date: Thu, 7 Jul 2016 08:59:00 +0300 Subject: [PATCH] parasite: pass parameter regs as pointer CID 163751 (#1 of 1): Big parameter passed by value (PASS_BY_VALUE) pass_by_value: Passing parameter regs of type user_regs_struct_t (size 224 bytes) by value. Signed-off-by: Andrew Vagin Reviewed-by: Dmitry Safonov Signed-off-by: Pavel Emelyanov --- criu/parasite-syscall.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/criu/parasite-syscall.c b/criu/parasite-syscall.c index 1e64a08b2..64f8ed84d 100644 --- a/criu/parasite-syscall.c +++ b/criu/parasite-syscall.c @@ -1025,17 +1025,17 @@ static bool task_is_trapped(int status, pid_t pid) return false; } -static inline int is_required_syscall(user_regs_struct_t regs, pid_t pid, +static inline int is_required_syscall(user_regs_struct_t *regs, pid_t pid, const int sys_nr, const int sys_nr_compat) { - const char *mode = user_regs_native(®s) ? "native" : "compat"; - int req_sysnr = user_regs_native(®s) ? sys_nr : sys_nr_compat; + const char *mode = user_regs_native(regs) ? "native" : "compat"; + int req_sysnr = user_regs_native(regs) ? sys_nr : sys_nr_compat; pr_debug("%d (%s) is going to execute the syscall %lu, required is %d\n", - pid, mode, REG_SYSCALL_NR(regs), req_sysnr); - if (user_regs_native(®s) && (REG_SYSCALL_NR(regs) == sys_nr)) + pid, mode, REG_SYSCALL_NR(*regs), req_sysnr); + if (user_regs_native(regs) && (REG_SYSCALL_NR(*regs) == sys_nr)) return true; - if (!user_regs_native(®s) && (REG_SYSCALL_NR(regs) == sys_nr_compat)) + if (!user_regs_native(regs) && (REG_SYSCALL_NR(*regs) == sys_nr_compat)) return true; return false; @@ -1085,7 +1085,7 @@ int parasite_stop_on_syscall(int tasks, return -1; } - if (is_required_syscall(regs, pid, sys_nr, sys_nr_compat)) { + if (is_required_syscall(®s, pid, sys_nr, sys_nr_compat)) { /* * The process is going to execute the required syscall, * the next stop will be on the exit from this syscall