infect-types: fix user_gcs redefine error

In file included from compel/arch/aarch64/src/lib/infect.c:10:
compel/include/uapi/compel/asm/infect-types.h:24:8: error: redefinition of 'user_gcs'
   24 | struct user_gcs {
      |        ^
/usr/include/asm/ptrace.h:329:8: note: previous definition is here
  329 | struct user_gcs {
      |        ^
1 error generated.
make[1]: *** [/criu/scripts/nmk/scripts/build.mk:215: compel/arch/aarch64/src/lib/infect.o] Error 1

Suggested-by: Andrei Vagin <avagin@google.com>
Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
This commit is contained in:
Radostin Stoyanov 2025-12-29 12:12:53 +00:00 committed by Andrei Vagin
parent 2dd66866e3
commit ddf7a170ff
3 changed files with 10 additions and 7 deletions

View file

@ -20,8 +20,11 @@ typedef struct user_pt_regs user_regs_struct_t;
/* /*
* GCS (Guarded Control Stack) * GCS (Guarded Control Stack)
*
* This mirrors the kernel definition but renamed to cr_user_gcs
* to avoid conflict with kernel headers (/usr/include/asm/ptrace.h).
*/ */
struct user_gcs { struct cr_user_gcs {
__u64 features_enabled; __u64 features_enabled;
__u64 features_locked; __u64 features_locked;
__u64 gcspr_el0; __u64 gcspr_el0;
@ -29,7 +32,7 @@ struct user_gcs {
struct user_fpregs_struct { struct user_fpregs_struct {
struct user_fpsimd_state fpstate; struct user_fpsimd_state fpstate;
struct user_gcs gcs; struct cr_user_gcs gcs;
}; };
typedef struct user_fpregs_struct user_fpregs_struct_t; typedef struct user_fpregs_struct user_fpregs_struct_t;

View file

@ -41,7 +41,7 @@ bool __compel_host_supports_gcs(void)
return (hwcap & HWCAP_GCS) != 0; return (hwcap & HWCAP_GCS) != 0;
} }
static bool __compel_gcs_enabled(struct user_gcs *gcs) static bool __compel_gcs_enabled(struct cr_user_gcs *gcs)
{ {
if (!compel_host_supports_gcs()) if (!compel_host_supports_gcs())
return false; return false;
@ -136,7 +136,7 @@ int compel_set_task_ext_regs(pid_t pid, user_fpregs_struct_t *ext_regs)
{ {
struct iovec iov; struct iovec iov;
struct user_gcs gcs; struct cr_user_gcs gcs;
struct iovec gcs_iov = { .iov_base = &gcs, .iov_len = sizeof(gcs) }; struct iovec gcs_iov = { .iov_base = &gcs, .iov_len = sizeof(gcs) };
pr_info("Restoring GP/FPU registers for %d\n", pid); pr_info("Restoring GP/FPU registers for %d\n", pid);
@ -363,7 +363,7 @@ int ptrace_flush_breakpoints(pid_t pid)
return 0; return 0;
} }
int inject_gcs_cap_token(struct parasite_ctl *ctl, pid_t pid, struct user_gcs *gcs) int inject_gcs_cap_token(struct parasite_ctl *ctl, pid_t pid, struct cr_user_gcs *gcs)
{ {
struct iovec gcs_iov = { .iov_base = gcs, .iov_len = sizeof(*gcs) }; struct iovec gcs_iov = { .iov_base = gcs, .iov_len = sizeof(*gcs) };
@ -403,7 +403,7 @@ int inject_gcs_cap_token(struct parasite_ctl *ctl, pid_t pid, struct user_gcs *g
int parasite_setup_shstk(struct parasite_ctl *ctl, user_fpregs_struct_t *ext_regs) int parasite_setup_shstk(struct parasite_ctl *ctl, user_fpregs_struct_t *ext_regs)
{ {
struct user_gcs gcs; struct cr_user_gcs gcs;
struct iovec gcs_iov = { .iov_base = &gcs, .iov_len = sizeof(gcs) }; struct iovec gcs_iov = { .iov_base = &gcs, .iov_len = sizeof(gcs) };
pid_t pid = ctl->rpid; pid_t pid = ctl->rpid;

View file

@ -148,7 +148,7 @@ static int save_pac_keys(int pid, CoreEntry *core)
int save_task_regs(pid_t pid, void *x, user_regs_struct_t *regs, user_fpregs_struct_t *fpsimd) int save_task_regs(pid_t pid, void *x, user_regs_struct_t *regs, user_fpregs_struct_t *fpsimd)
{ {
int i; int i;
struct user_gcs gcs_live; struct cr_user_gcs gcs_live;
struct iovec gcs_iov = { struct iovec gcs_iov = {
.iov_base = &gcs_live, .iov_base = &gcs_live,
.iov_len = sizeof(gcs_live), .iov_len = sizeof(gcs_live),