mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
arm64: C/R PAC keys
PAC stands for Pointer Authentication Code. Each process has 5 PAC keys and a mask of enabled keys. All this properties have to be C/R-ed. As they are per-process protperties, we can save/restore them just for one thread. Signed-off-by: Andrei Vagin <avagin@google.com>
This commit is contained in:
parent
c5d46d86a8
commit
8ae5db37bb
31 changed files with 244 additions and 26 deletions
|
|
@ -81,7 +81,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = save(arg, regs, fpsimd);
|
||||
ret = save(pid, arg, regs, fpsimd);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
}
|
||||
}
|
||||
|
||||
ret = save(arg, regs, vfp);
|
||||
ret = save(pid, arg, regs, vfp);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = save(arg, regs, fpregs);
|
||||
ret = save(pid, arg, regs, fpregs);
|
||||
err:
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
regs->regs[0] = 0;
|
||||
}
|
||||
|
||||
ret = save(arg, regs, xs);
|
||||
ret = save(pid, arg, regs, xs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -400,7 +400,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
return save(arg, regs, fpregs);
|
||||
return save(pid, arg, regs, fpregs);
|
||||
}
|
||||
|
||||
int compel_set_task_ext_regs(pid_t pid, user_fpregs_struct_t *ext_regs)
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
return -1;
|
||||
}
|
||||
|
||||
ret = save(arg, regs, fpsimd);
|
||||
ret = save(pid, arg, regs, fpsimd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
}
|
||||
}
|
||||
/* Call save_task_regs() */
|
||||
return save(arg, regs, fpregs);
|
||||
return save(pid, arg, regs, fpregs);
|
||||
}
|
||||
|
||||
int compel_set_task_ext_regs(pid_t pid, user_fpregs_struct_t *ext_regs)
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ int compel_get_task_regs(pid_t pid, user_regs_struct_t *regs, user_fpregs_struct
|
|||
goto err;
|
||||
|
||||
out:
|
||||
ret = save(arg, regs, xs);
|
||||
ret = save(pid, arg, regs, xs);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ extern k_rtsigset_t *compel_thread_sigmask(struct parasite_thread_ctl *tctl);
|
|||
struct rt_sigframe;
|
||||
|
||||
typedef int (*open_proc_fn)(int pid, int mode, const char *fmt, ...) __attribute__((__format__(__printf__, 3, 4)));
|
||||
typedef int (*save_regs_t)(void *, user_regs_struct_t *, user_fpregs_struct_t *);
|
||||
typedef int (*save_regs_t)(pid_t pid, void *, user_regs_struct_t *, user_fpregs_struct_t *);
|
||||
typedef int (*make_sigframe_t)(void *, struct rt_sigframe *, struct rt_sigframe *, k_rtsigset_t *);
|
||||
|
||||
struct infect_ctx {
|
||||
|
|
|
|||
|
|
@ -1300,7 +1300,7 @@ struct plain_regs_struct {
|
|||
user_fpregs_struct_t fpregs;
|
||||
};
|
||||
|
||||
static int save_regs_plain(void *to, user_regs_struct_t *r, user_fpregs_struct_t *f)
|
||||
static int save_regs_plain(pid_t pid, void *to, user_regs_struct_t *r, user_fpregs_struct_t *f)
|
||||
{
|
||||
struct plain_regs_struct *prs = to;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue