Message ID | 20240509120942.14952-1-metan@ucw.cz |
---|---|
State | Accepted |
Headers | show |
Series | syscalls: arch_prctl01.c fix compilation on old distros | expand |
> From: Cyril Hrubis <chrubis@suse.cz> > There are distros that have asm/prctl.h without the ARCH_{GET,SET}_CPUID > definitions, fix the compilation on such distributions by adding > lapi/arch_prctl.h. I would note that this was for Leap 42.2. We can remove the fallback in the future once we remove the support for these oldest distros (it's hard to find the original reason when doing a cleanup few years later). > Signed-off-by: Cyril Hrubis <chrubis@suse.cz> > --- > include/lapi/arch_prctl.h | 22 ++++++++++++++++++++++ > .../kernel/syscalls/arch_prctl/arch_prctl01.c | 7 +------ > 2 files changed, 23 insertions(+), 6 deletions(-) > create mode 100644 include/lapi/arch_prctl.h > diff --git a/include/lapi/arch_prctl.h b/include/lapi/arch_prctl.h > new file mode 100644 > index 000000000..6d0ef51f4 > --- /dev/null > +++ b/include/lapi/arch_prctl.h > @@ -0,0 +1,22 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Copyright (c) 2024 Cyril Hrubis <chrubis@suse.cz> > + */ > +#ifndef LAPI_ARCH_PRCTL_H__ > +#define LAPI_ARCH_PRCTL_H__ > + > +#include "config.h" > + > +#ifdef HAVE_ASM_PRCTL_H > +# include <asm/prctl.h> > +#endif > + > +#ifndef ARCH_GET_CPUID > +# define ARCH_GET_CPUID 1011 This is wrong, in the header is a hex number (missing 0x) # define ARCH_GET_CPUID 0x1011 > +#endif > + > +#ifndef ARCH_SET_CPUID > +# define ARCH_SET_CPUID 1012 And here as well: # define ARCH_SET_CPUID 0x1012 It obviously break the result when fallback is used: arch_prctl01.c:56: TFAIL: arch_prctl_set(ARCH_SET_CPUID, index) failed: EINVAL (22) arch_prctl01.c:68: TFAIL: get wrong cpuid status arch_prctl01.c:56: TFAIL: arch_prctl_set(ARCH_SET_CPUID, index) failed: EINVAL (22) arch_prctl01.c:68: TFAIL: get wrong cpuid status With that fixed: Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr
Hi! > > +#ifndef ARCH_GET_CPUID > > +# define ARCH_GET_CPUID 1011 > This is wrong, in the header is a hex number (missing 0x) Good catch, fixed and pushed, thanks.
diff --git a/include/lapi/arch_prctl.h b/include/lapi/arch_prctl.h new file mode 100644 index 000000000..6d0ef51f4 --- /dev/null +++ b/include/lapi/arch_prctl.h @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2024 Cyril Hrubis <chrubis@suse.cz> + */ +#ifndef LAPI_ARCH_PRCTL_H__ +#define LAPI_ARCH_PRCTL_H__ + +#include "config.h" + +#ifdef HAVE_ASM_PRCTL_H +# include <asm/prctl.h> +#endif + +#ifndef ARCH_GET_CPUID +# define ARCH_GET_CPUID 1011 +#endif + +#ifndef ARCH_SET_CPUID +# define ARCH_SET_CPUID 1012 +#endif + +#endif /* LAPI_ARCH_PRCTL_H__ */ diff --git a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c index e30b5667a..b98ef99d2 100644 --- a/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c +++ b/testcases/kernel/syscalls/arch_prctl/arch_prctl01.c @@ -13,10 +13,9 @@ #include "tst_test.h" #include "tst_safe_stdio.h" #include "lapi/syscalls.h" +#include "lapi/arch_prctl.h" #include <stdlib.h> #include <string.h> -#ifdef HAVE_ASM_PRCTL_H -#include <asm/prctl.h> static int arch_prctl_get(int code) { @@ -76,7 +75,3 @@ static struct tst_test test = { .min_kver = "4.12", .supported_archs = (const char *const []){"x86_64", "x86", NULL} }; - -#else /* HAVE_ASM_PRCTL_H */ -TST_TEST_TCONF("missing <asm/prctl.h>"); -#endif