Re: [PATCH RFC V3 9/9] x86/pks: Add PKS test code

From: Ira Weiny
Date: Thu Oct 15 2020 - 00:46:36 EST


On Tue, Oct 13, 2020 at 12:02:07PM -0700, Dave Hansen wrote:
> On 10/9/20 12:42 PM, ira.weiny@xxxxxxxxx wrote:
> > #ifdef CONFIG_X86_32
> > /*
> > * We can fault-in kernel-space virtual memory on-demand. The
> > diff --git a/include/linux/pkeys.h b/include/linux/pkeys.h
> > index cc3510cde64e..f9552bd9341f 100644
> > --- a/include/linux/pkeys.h
> > +++ b/include/linux/pkeys.h
> > @@ -47,7 +47,6 @@ static inline bool arch_pkeys_enabled(void)
> > static inline void copy_init_pkru_to_fpregs(void)
> > {
> > }
> > -
> > #endif /* ! CONFIG_ARCH_HAS_PKEYS */
>
> ^ Whitespace damage

Done.

>
> > #ifndef CONFIG_ARCH_HAS_SUPERVISOR_PKEYS
> > diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> > index 0c781f912f9f..f015c09ba5a1 100644
> > --- a/lib/Kconfig.debug
> > +++ b/lib/Kconfig.debug
> > @@ -2400,6 +2400,18 @@ config HYPERV_TESTING
> > help
> > Select this option to enable Hyper-V vmbus testing.
> >
> > +config PKS_TESTING
> > + bool "PKey(S)upervisor testing"
>
> Seems like we need a space in there somewhere.

heheh... yea...

>
> > + pid = fork();
> > + if (pid == 0) {
> > + fd = open("/sys/kernel/debug/x86/run_pks", O_RDWR);
> > + if (fd < 0) {
> > + printf("cannot open file\n");
> > + return -1;
> > + }
> > +
>
> Will this return code make anybody mad? Should we have a nicer return
> code for when this is running on non-PKS hardware?

I'm not sure it will matter much but I think it is better to report the missing
file.[1]

>
> I'm not going to be too picky about this. I'll just ask one question:
> Has this found real bugs for you?

Many, especially regressions as things have changed.

>
> Reviewed-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
>

Thanks,
Ira

[1]

diff --git a/tools/testing/selftests/x86/test_pks.c b/tools/testing/selftests/x86/test_pks.c
index 8037a2a9ff5f..11be4e212d54 100644
--- a/tools/testing/selftests/x86/test_pks.c
+++ b/tools/testing/selftests/x86/test_pks.c
@@ -11,6 +11,8 @@
#include <sys/stat.h>
#include <fcntl.h>

+#define PKS_TEST_FILE "/sys/kernel/debug/x86/run_pks"
+
int main(void)
{
cpu_set_t cpuset;
@@ -25,9 +27,9 @@ int main(void)

pid = fork();
if (pid == 0) {
- fd = open("/sys/kernel/debug/x86/run_pks", O_RDWR);
+ fd = open(PKS_TEST_FILE, O_RDWR);
if (fd < 0) {
- printf("cannot open file\n");
+ printf("cannot open %s\n", PKS_TEST_FILE);
return -1;
}

@@ -45,9 +47,9 @@ int main(void)
} else {
sleep(2);

- fd = open("/sys/kernel/debug/x86/run_pks", O_RDWR);
+ fd = open(PKS_TEST_FILE, O_RDWR);
if (fd < 0) {
- printf("cannot open file\n");
+ printf("cannot open %s\n", PKS_TEST_FILE);
return -1;
}