Linux Kernel Selftest development
 help / color / mirror / Atom feed
From: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
To: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
	"aleksey.oladko@virtuozzo.com" <aleksey.oladko@virtuozzo.com>
Cc: "x86@kernel.org" <x86@kernel.org>, "bp@alien8.de" <bp@alien8.de>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-kselftest@vger.kernel.org"
	<linux-kselftest@vger.kernel.org>,
	"tglx@kernel.org" <tglx@kernel.org>,
	"shuah@kernel.org" <shuah@kernel.org>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>
Subject: Re: [PATCH] selftests: x86: test_shadow_stack: return KSFT_SKIP when test is skipped
Date: Fri, 20 Mar 2026 10:52:19 +0100	[thread overview]
Message-ID: <3205f6e7-bf02-4fb4-ab03-278447c17f70@virtuozzo.com> (raw)
In-Reply-To: <5a977040caae42e41e3fab53efdfdb9201b67e3f.camel@intel.com>

On 3/19/26 18:42, Edgecombe, Rick P wrote:
> On Thu, 2026-03-19 at 17:38 +0100, Pavel Tikhomirov wrote:
>> Adding original author to CC: Rick Edgecombe <rick.p.edgecombe@intel.com>.
>>
>> Maybe he has some insight on why we have this SKIP / return 1 inconsistency.
>>
>> On 3/1/26 02:47, Aleksei Oladko wrote:
>>> test_shadow_stack prints a message indicating that the test is
>>> skipped in some cases, but still returns 1. This causes the test
>>> to be reported as failed instead of skipped.
>>>
>>> Return KSFT_SKIP in the skip path so the result is reported
>>> correctly.
>>
>> Should we also return KSFT_SKIP in other 3 SKIP paths, which currently return 0?
>> I guess that means that those skips are currently reported as success, right?
> 
> Oh, yea I think the first skip, "Could not enable Shadow stack", should return
> 0, but the rest of them should succeed if shadow stack gets enabled, so they are
> more indicative of kernel issues. The "[SKIP]" message is wrong for those. If
> you want to leave the error code as 1 for them, I can send a patch to correct
> the message. But please feel welcome to fix the message part up too.
> 
> Also, "Could not re-enable Shadow stack" is a prelude to a crash. The test can't
> return from main if shadow stack is enabled because the shadow stack won't
> match. Functionally it makes no difference because it will crash, but it is a
> sign that there is something wrong with the kernel. So having 1 there will have
> the code make more sense.
> 

I think it should be something like below then. Aleksey - feel free to incorporate the below change in your patch if that is OK.

Note: I also added earlier exits after failures in ARCH_SHSTK_DISABLE and test_ptrace. Plus made test_uretprobe only skip when we print SKIP message, else fail.

diff --git a/tools/testing/selftests/x86/test_shadow_stack.c b/tools/testing/selftests/x86/test_shadow_stack.c
index 21af54d5f4ea..3a0019bf65df 100644
--- a/tools/testing/selftests/x86/test_shadow_stack.c
+++ b/tools/testing/selftests/x86/test_shadow_stack.c
@@ -36,6 +36,8 @@
 #include <linux/elf.h>
 #include <linux/perf_event.h>
 
+#include "kselftest.h"
+
 /*
  * Define the ABI defines if needed, so people can run the tests
  * without building the headers.
@@ -64,7 +66,7 @@
 int main(int argc, char *argv[])
 {
        printf("[SKIP]\tCompiler does not support CET.\n");
-       return 0;
+       return KSFT_SKIP;
 }
 #else
 void write_shstk(unsigned long *addr, unsigned long val)
@@ -820,9 +822,11 @@ static int test_uretprobe(void)
 
        type = determine_uprobe_perf_type();
        if (type < 0) {
-               if (type == -ENOENT)
+               if (type == -ENOENT) {
                        printf("[SKIP]\tUretprobe test, uprobes are not available\n");
-               return 0;
+                       return 0;
+               }
+               return 1;
        }
 
        offset = get_uprobe_offset(uretprobe_trigger);
@@ -981,21 +985,21 @@ int main(int argc, char *argv[])
 
        if (ARCH_PRCTL(ARCH_SHSTK_ENABLE, ARCH_SHSTK_SHSTK)) {
                printf("[SKIP]\tCould not enable Shadow stack\n");
-               return 1;
+               return KSFT_SKIP;
        }
 
        if (ARCH_PRCTL(ARCH_SHSTK_DISABLE, ARCH_SHSTK_SHSTK)) {
-               ret = 1;
                printf("[FAIL]\tDisabling shadow stack failed\n");
+               return 1;
        }
 
        if (ARCH_PRCTL(ARCH_SHSTK_ENABLE, ARCH_SHSTK_SHSTK)) {
-               printf("[SKIP]\tCould not re-enable Shadow stack\n");
+               printf("[FAIL]\tCould not re-enable Shadow stack\n");
                return 1;
        }
 
        if (ARCH_PRCTL(ARCH_SHSTK_ENABLE, ARCH_SHSTK_WRSS)) {
-               printf("[SKIP]\tCould not enable WRSS\n");
+               printf("[FAIL]\tCould not enable WRSS\n");
                ret = 1;
                goto out;
        }
@@ -1057,6 +1061,7 @@ int main(int argc, char *argv[])
        if (test_ptrace()) {
                ret = 1;
                printf("[FAIL]\tptrace test\n");
+               goto out;
        }
 
        if (test_32bit()) {


  reply	other threads:[~2026-03-20  9:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-01  1:47 [PATCH] selftests: x86: test_shadow_stack: return KSFT_SKIP when test is skipped Aleksei Oladko
2026-03-15 19:08 ` Aleksei Oladko
2026-03-19 16:38 ` Pavel Tikhomirov
2026-03-19 17:42   ` Edgecombe, Rick P
2026-03-20  9:52     ` Pavel Tikhomirov [this message]
2026-03-20 17:23       ` Edgecombe, Rick P

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3205f6e7-bf02-4fb4-ab03-278447c17f70@virtuozzo.com \
    --to=ptikhomirov@virtuozzo.com \
    --cc=aleksey.oladko@virtuozzo.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=rick.p.edgecombe@intel.com \
    --cc=shuah@kernel.org \
    --cc=tglx@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox