Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Safonov <dsafonov@virtuozzo.com>2017-03-07 15:55:29 +0300
committerAndrei Vagin <avagin@virtuozzo.com>2017-03-15 09:36:09 +0300
commitb502d7fd6b14ab8c006d650398264c8196d44787 (patch)
tree2e82daafb306659cb7f3a338eed78f50a7e563f0 /compel/arch
parent72557edb1506fcab56a6c1390070c3fbee4cdeb6 (diff)
compel: pass regs by pointer in get_task_regs()
CID 73371 (#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. Suggesting to do this until compel is released and API is cut in stone. Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
Diffstat (limited to 'compel/arch')
-rw-r--r--compel/arch/aarch64/src/lib/infect.c6
-rw-r--r--compel/arch/arm/src/lib/infect.c16
-rw-r--r--compel/arch/ppc64/src/lib/infect.c6
-rw-r--r--compel/arch/x86/src/lib/infect.c16
4 files changed, 22 insertions, 22 deletions
diff --git a/compel/arch/aarch64/src/lib/infect.c b/compel/arch/aarch64/src/lib/infect.c
index 4f5534b75..41600e091 100644
--- a/compel/arch/aarch64/src/lib/infect.c
+++ b/compel/arch/aarch64/src/lib/infect.c
@@ -56,7 +56,7 @@ int sigreturn_prep_fpu_frame_plain(struct rt_sigframe *sigframe,
return 0;
}
-int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *arg)
+int get_task_regs(pid_t pid, user_regs_struct_t *regs, save_regs_t save, void *arg)
{
struct iovec iov;
user_fpregs_struct_t fpsimd;
@@ -64,7 +64,7 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *ar
pr_info("Dumping GP/FPU registers for %d\n", pid);
- iov.iov_base = &regs;
+ iov.iov_base = regs;
iov.iov_len = sizeof(user_regs_struct_t);
if ((ret = ptrace(PTRACE_GETREGSET, pid, NT_PRSTATUS, &iov))) {
pr_perror("Failed to obtain CPU registers for %d", pid);
@@ -78,7 +78,7 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *ar
goto err;
}
- ret = save(arg, &regs, &fpsimd);
+ ret = save(arg, regs, &fpsimd);
err:
return ret;
}
diff --git a/compel/arch/arm/src/lib/infect.c b/compel/arch/arm/src/lib/infect.c
index ad085ff98..a78108dff 100644
--- a/compel/arch/arm/src/lib/infect.c
+++ b/compel/arch/arm/src/lib/infect.c
@@ -65,7 +65,7 @@ int sigreturn_prep_fpu_frame_plain(struct rt_sigframe *sigframe,
}
#define PTRACE_GETVFPREGS 27
-int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *arg)
+int get_task_regs(pid_t pid, user_regs_struct_t *regs, save_regs_t save, void *arg)
{
user_fpregs_struct_t vfp;
int ret = -1;
@@ -78,23 +78,23 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *ar
}
/* Did we come from a system call? */
- if ((int)regs.ARM_ORIG_r0 >= 0) {
+ if ((int)regs->ARM_ORIG_r0 >= 0) {
/* Restart the system call */
- switch ((long)(int)regs.ARM_r0) {
+ switch ((long)(int)regs->ARM_r0) {
case -ERESTARTNOHAND:
case -ERESTARTSYS:
case -ERESTARTNOINTR:
- regs.ARM_r0 = regs.ARM_ORIG_r0;
- regs.ARM_pc -= 4;
+ regs->ARM_r0 = regs->ARM_ORIG_r0;
+ regs->ARM_pc -= 4;
break;
case -ERESTART_RESTARTBLOCK:
- regs.ARM_r0 = __NR_restart_syscall;
- regs.ARM_pc -= 4;
+ regs->ARM_r0 = __NR_restart_syscall;
+ regs->ARM_pc -= 4;
break;
}
}
- ret = save(arg, &regs, &vfp);
+ ret = save(arg, regs, &vfp);
err:
return ret;
}
diff --git a/compel/arch/ppc64/src/lib/infect.c b/compel/arch/ppc64/src/lib/infect.c
index 11154d658..f3f1aacec 100644
--- a/compel/arch/ppc64/src/lib/infect.c
+++ b/compel/arch/ppc64/src/lib/infect.c
@@ -369,16 +369,16 @@ static int __get_task_regs(pid_t pid, user_regs_struct_t *regs,
return 0;
}
-int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *arg)
+int get_task_regs(pid_t pid, user_regs_struct_t *regs, save_regs_t save, void *arg)
{
user_fpregs_struct_t fpregs;
int ret;
- ret = __get_task_regs(pid, &regs, &fpregs);
+ ret = __get_task_regs(pid, regs, &fpregs);
if (ret)
return ret;
- return save(arg, &regs, &fpregs);
+ return save(arg, regs, &fpregs);
}
int compel_syscall(struct parasite_ctl *ctl, int nr, long *ret,
diff --git a/compel/arch/x86/src/lib/infect.c b/compel/arch/x86/src/lib/infect.c
index f1b216650..84ff21b15 100644
--- a/compel/arch/x86/src/lib/infect.c
+++ b/compel/arch/x86/src/lib/infect.c
@@ -225,7 +225,7 @@ int sigreturn_prep_fpu_frame_plain(struct rt_sigframe *sigframe,
((user_regs_native(pregs)) ? (int64_t)((pregs)->native.name) : \
(int32_t)((pregs)->compat.name))
-int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *arg)
+int get_task_regs(pid_t pid, user_regs_struct_t *regs, save_regs_t save, void *arg)
{
user_fpregs_struct_t xsave = { }, *xs = NULL;
@@ -233,21 +233,21 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *ar
int ret = -1;
pr_info("Dumping general registers for %d in %s mode\n", pid,
- user_regs_native(&regs) ? "native" : "compat");
+ user_regs_native(regs) ? "native" : "compat");
/* Did we come from a system call? */
- if (get_signed_user_reg(&regs, orig_ax) >= 0) {
+ if (get_signed_user_reg(regs, orig_ax) >= 0) {
/* Restart the system call */
- switch (get_signed_user_reg(&regs, ax)) {
+ switch (get_signed_user_reg(regs, ax)) {
case -ERESTARTNOHAND:
case -ERESTARTSYS:
case -ERESTARTNOINTR:
- set_user_reg(&regs, ax, get_user_reg(&regs, orig_ax));
- set_user_reg(&regs, ip, get_user_reg(&regs, ip) - 2);
+ set_user_reg(regs, ax, get_user_reg(regs, orig_ax));
+ set_user_reg(regs, ip, get_user_reg(regs, ip) - 2);
break;
case -ERESTART_RESTARTBLOCK:
pr_warn("Will restore %d with interrupted system call\n", pid);
- set_user_reg(&regs, ax, -EINTR);
+ set_user_reg(regs, ax, -EINTR);
break;
}
}
@@ -279,7 +279,7 @@ int get_task_regs(pid_t pid, user_regs_struct_t regs, save_regs_t save, void *ar
xs = &xsave;
out:
- ret = save(arg, &regs, xs);
+ ret = save(arg, regs, xs);
err:
return ret;
}