From nobody Mon Jun 8 04:27:23 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86D492C11E2; Tue, 2 Jun 2026 07:01:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383684; cv=none; b=OE/LmZcz//0af5GJj+hha0QKwdsdZC+kdgYDduwmbjHAT9F2D6U3I5Fi8ZpgA3KnwPrdCdhJoRFWqsO1MPAdwEzV4iQsTa7MnjN79rZxqMZmam4vwDnRMK45TM7Jh7EEF46CgdBVIuKBcSkvvlOvjXH5ON/FGllCOEwM4ykBiA4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383684; c=relaxed/simple; bh=68ELSLPiUyrmTUaH9Gjuo1ot1n1XpfsuDMD2bk4JqNE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kiZ0d0BIgKHioj4NjJHQ8CbrdAdroo6qGgpdXz4BBwIIGTxfKSSRT0+ZTG2XGCYof63c0Jdawh5AUIqNdwoDgJpAyUMKK1k2C2IHoK1UKxilSIpS4aTO35v2QTSXJ5FnwnOavLPVOhp/W8wEryPuClKStuj86JPctbY5dDTvvK8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: da4f904e5e5011f1aa26b74ffac11d73-20260602 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_DIGIT_LEN, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT HR_TO_NO_NAME, IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_TRUSTED SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS, DKIM_NOPASS DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:d5a4c8b9-6a30-4d72-b040-093531834cc6,IP:10, URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:5 X-CID-INFO: VERSION:1.3.12,REQID:d5a4c8b9-6a30-4d72-b040-093531834cc6,IP:10,UR L:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:5 X-CID-META: VersionHash:e7bac3a,CLOUDID:24db0df43dd10e4fb91783abea05d070,BulkI D:260602150118PWS8MVPW,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|865|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:ni l,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0, BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: da4f904e5e5011f1aa26b74ffac11d73-20260602 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(223.70.159.239)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 185888861; Tue, 02 Jun 2026 15:01:17 +0800 From: Hongfu Li To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH v6 1/5] selftests/mm: move pkey selftest helpers to pkey_util.c Date: Tue, 2 Jun 2026 15:01:15 +0800 Message-Id: <20260602070119.1452308-2-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260602070119.1452308-1-lihongfu@kylinos.cn> References: <20260602070119.1452308-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move pkey selftest debugging helpers into shared code so both pkey selftests can use the same tracing and abort-hook logic. Signed-off-by: Hongfu Li --- tools/testing/selftests/mm/pkey-helpers.h | 4 +- tools/testing/selftests/mm/pkey_util.c | 86 ++++++++++++++++++++ tools/testing/selftests/mm/protection_keys.c | 83 ------------------- 3 files changed, 89 insertions(+), 84 deletions(-) diff --git a/tools/testing/selftests/mm/pkey-helpers.h b/tools/testing/self= tests/mm/pkey-helpers.h index 2c377f4e9df1..46a8a1878dc1 100644 --- a/tools/testing/selftests/mm/pkey-helpers.h +++ b/tools/testing/selftests/mm/pkey-helpers.h @@ -68,7 +68,9 @@ static inline void sigsafe_printf(const char *format, ...) #define dprintf3(args...) dprintf_level(3, args) #define dprintf4(args...) dprintf_level(4, args) =20 -extern void abort_hooks(void); +void tracing_on(void); +void tracing_off(void); +void abort_hooks(void); #define pkey_assert(condition) do { \ if (!(condition)) { \ dprintf0("# assert() at %s::%d test_nr: %d iteration: %d\n", \ diff --git a/tools/testing/selftests/mm/pkey_util.c b/tools/testing/selftes= ts/mm/pkey_util.c index 255b332f7a08..abf708d6575e 100644 --- a/tools/testing/selftests/mm/pkey_util.c +++ b/tools/testing/selftests/mm/pkey_util.c @@ -2,9 +2,95 @@ #define __SANE_USERSPACE_TYPES__ #include #include +#include +#include +#include =20 #include "pkey-helpers.h" =20 +#if CONTROL_TRACING > 0 +static void cat_into_file(char *str, char *file) +{ + int fd =3D open(file, O_RDWR); + int ret; + + dprintf2("%s(): writing '%s' to '%s'\n", __func__, str, file); + /* + * these need to be raw because they are called under + * pkey_assert() + */ + if (fd < 0) { + fprintf(stderr, "error opening '%s'\n", str); + perror("error: "); + exit(__LINE__); + } + + ret =3D write(fd, str, strlen(str)); + if (ret !=3D strlen(str)) { + perror("write to file failed"); + fprintf(stderr, "filename: '%s' str: '%s'\n", file, str); + exit(__LINE__); + } + close(fd); +} + +static int warned_tracing; +static int tracing_root_ok(void) +{ + if (geteuid() !=3D 0) { + if (!warned_tracing) + fprintf(stderr, "WARNING: not run as root, " + "can not do tracing control\n"); + warned_tracing =3D 1; + return 0; + } + return 1; +} +#endif + +void tracing_on(void) +{ +#if CONTROL_TRACING > 0 +#define TRACEDIR "/sys/kernel/tracing" + char pidstr[32]; + + if (!tracing_root_ok()) + return; + + sprintf(pidstr, "%d", getpid()); + cat_into_file("0", TRACEDIR "/tracing_on"); + cat_into_file("\n", TRACEDIR "/trace"); + if (1) { + cat_into_file("function_graph", TRACEDIR "/current_tracer"); + cat_into_file("1", TRACEDIR "/options/funcgraph-proc"); + } else { + cat_into_file("nop", TRACEDIR "/current_tracer"); + } + cat_into_file(pidstr, TRACEDIR "/set_ftrace_pid"); + cat_into_file("1", TRACEDIR "/tracing_on"); + dprintf1("enabled tracing\n"); +#endif +} + +void tracing_off(void) +{ +#if CONTROL_TRACING > 0 + if (!tracing_root_ok()) + return; + cat_into_file("0", "/sys/kernel/tracing/tracing_on"); +#endif +} + +void abort_hooks(void) +{ + fflush(stdout); + fprintf(stderr, "running %s()...\n", __func__); + tracing_off(); +#ifdef SLEEP_ON_ABORT + sleep(SLEEP_ON_ABORT); +#endif +} + int sys_pkey_alloc(unsigned long flags, unsigned long init_val) { int ret =3D syscall(SYS_pkey_alloc, flags, init_val); diff --git a/tools/testing/selftests/mm/protection_keys.c b/tools/testing/s= elftests/mm/protection_keys.c index 9a6d954ee371..e504544e2197 100644 --- a/tools/testing/selftests/mm/protection_keys.c +++ b/tools/testing/selftests/mm/protection_keys.c @@ -62,89 +62,6 @@ noinline int read_ptr(int *ptr) return *ptr; } =20 -#if CONTROL_TRACING > 0 -static void cat_into_file(char *str, char *file) -{ - int fd =3D open(file, O_RDWR); - int ret; - - dprintf2("%s(): writing '%s' to '%s'\n", __func__, str, file); - /* - * these need to be raw because they are called under - * pkey_assert() - */ - if (fd < 0) { - fprintf(stderr, "error opening '%s'\n", str); - perror("error: "); - exit(__LINE__); - } - - ret =3D write(fd, str, strlen(str)); - if (ret !=3D strlen(str)) { - perror("write to file failed"); - fprintf(stderr, "filename: '%s' str: '%s'\n", file, str); - exit(__LINE__); - } - close(fd); -} - -static int warned_tracing; -static int tracing_root_ok(void) -{ - if (geteuid() !=3D 0) { - if (!warned_tracing) - fprintf(stderr, "WARNING: not run as root, " - "can not do tracing control\n"); - warned_tracing =3D 1; - return 0; - } - return 1; -} -#endif - -static void tracing_on(void) -{ -#if CONTROL_TRACING > 0 -#define TRACEDIR "/sys/kernel/tracing" - char pidstr[32]; - - if (!tracing_root_ok()) - return; - - sprintf(pidstr, "%d", getpid()); - cat_into_file("0", TRACEDIR "/tracing_on"); - cat_into_file("\n", TRACEDIR "/trace"); - if (1) { - cat_into_file("function_graph", TRACEDIR "/current_tracer"); - cat_into_file("1", TRACEDIR "/options/funcgraph-proc"); - } else { - cat_into_file("nop", TRACEDIR "/current_tracer"); - } - cat_into_file(pidstr, TRACEDIR "/set_ftrace_pid"); - cat_into_file("1", TRACEDIR "/tracing_on"); - dprintf1("enabled tracing\n"); -#endif -} - -static void tracing_off(void) -{ -#if CONTROL_TRACING > 0 - if (!tracing_root_ok()) - return; - cat_into_file("0", "/sys/kernel/tracing/tracing_on"); -#endif -} - -void abort_hooks(void) -{ - fflush(stdout); - fprintf(stderr, "running %s()...\n", __func__); - tracing_off(); -#ifdef SLEEP_ON_ABORT - sleep(SLEEP_ON_ABORT); -#endif -} - /* * This attempts to have roughly a page of instructions followed by a few * instructions that do a write, and another page of instructions. That --=20 2.25.1 From nobody Mon Jun 8 04:27:23 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DB72E376BDE; Tue, 2 Jun 2026 07:01:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383688; cv=none; b=aOh/VfqU5esVXUuPC54X2QfrTtdQdyoBmsumKngRO7BTm9hwdVHe6t4bN1sS4t9i0aPwAhsMcOfy13W/yEBE+tPa8ALl8DC9/d5IzY5BJ9axyK+SZnsCEexKsnVbZYtWT1FkxhNZARIlIBhfJ/ywXIe8INGNq8SwI/eDYvSeWx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383688; c=relaxed/simple; bh=n7SEmrNf7oYBmWM7AqdM+cz0amqbl0zRVVHo50J9kyY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qkD6pjQDYpIzSaq3tbd789ZlV5qKI40oY3X0BAmUKtYO0woKJFvFbcRALvMlSxHVRmu6qfa9VNYxbBKNJIplveAhbaSG0lL3k7pG8ugHCdvPwj9+ZcPBykCA60GKi2vzzkifB+hX8Ap+tivoizte+cNDn5hq9jka+IumHllM+2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: dbadac1e5e5011f1aa26b74ffac11d73-20260602 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_DIGIT_LEN, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT HR_TO_NO_NAME, IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_TRUSTED SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS, DKIM_NOPASS DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:29db0387-8b76-4ec5-b199-cd19f83432fa,IP:10, URL:0,TC:0,Content:-25,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:-15 X-CID-INFO: VERSION:1.3.12,REQID:29db0387-8b76-4ec5-b199-cd19f83432fa,IP:10,UR L:0,TC:0,Content:-25,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:-15 X-CID-META: VersionHash:e7bac3a,CLOUDID:c3dddf1240dad5b35a2cf5d45f6fa65b,BulkI D:260602150121V761FI59,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|865|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:ni l,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0, BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: dbadac1e5e5011f1aa26b74ffac11d73-20260602 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(223.70.159.239)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 1179263228; Tue, 02 Jun 2026 15:01:20 +0800 From: Hongfu Li To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH v6 2/5] selftests/mm: unify pkey sighandler selftest assertions and tracing Date: Tue, 2 Jun 2026 15:01:16 +0800 Message-Id: <20260602070119.1452308-3-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260602070119.1452308-1-lihongfu@kylinos.cn> References: <20260602070119.1452308-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add per-test tracing to the pkey signal-handler selftest and use pkey_assert() for error handling. Each test enables tracing at start and disables it at end; on failure, pkey_assert() calls abort_hooks() to turn tracing off so ftrace is not left enabled. Signed-off-by: Hongfu Li --- .../selftests/mm/pkey_sighandler_tests.c | 69 ++++++++++--------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/tes= ting/selftests/mm/pkey_sighandler_tests.c index 302fef54049c..085e771227fb 100644 --- a/tools/testing/selftests/mm/pkey_sighandler_tests.c +++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -36,6 +35,10 @@ static pthread_mutex_t mutex =3D PTHREAD_MUTEX_INITIALIZ= ER; static pthread_cond_t cond =3D PTHREAD_COND_INITIALIZER; static siginfo_t siginfo =3D {0}; =20 +int iteration_nr =3D 1; +int test_nr; +int dprint_in_signal; + /* * We need to use inline assembly instead of glibc's syscall because glibc= 's * syscall will attempt to access the PLT in order to call a library funct= ion @@ -207,15 +210,14 @@ static void test_sigsegv_handler_with_pkey0_disabled(= void) struct sigaction sa; pthread_attr_t attr; pthread_t thr; + int ret; =20 sa.sa_flags =3D SA_SIGINFO; =20 sa.sa_sigaction =3D sigsegv_handler; sigemptyset(&sa.sa_mask); - if (sigaction(SIGSEGV, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGSEGV, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 memset(&siginfo, 0, sizeof(siginfo)); =20 @@ -247,15 +249,14 @@ static void test_sigsegv_handler_cannot_access_stack(= void) struct sigaction sa; pthread_attr_t attr; pthread_t thr; + int ret; =20 sa.sa_flags =3D SA_SIGINFO; =20 sa.sa_sigaction =3D sigsegv_handler; sigemptyset(&sa.sa_mask); - if (sigaction(SIGSEGV, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGSEGV, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 memset(&siginfo, 0, sizeof(siginfo)); =20 @@ -288,21 +289,20 @@ static void test_sigsegv_handler_with_different_pkey_= for_stack(void) int parent_pid =3D 0; int child_pid =3D 0; u64 pkey_reg; + long ret; =20 sa.sa_flags =3D SA_SIGINFO | SA_ONSTACK; =20 sa.sa_sigaction =3D sigsegv_handler; =20 sigemptyset(&sa.sa_mask); - if (sigaction(SIGSEGV, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGSEGV, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 stack =3D mmap(0, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); =20 - assert(stack !=3D MAP_FAILED); + pkey_assert(stack !=3D MAP_FAILED); =20 /* Allow access to MPK 0 and MPK 1 */ pkey_reg =3D pkey_reg_restrictive_default(); @@ -323,7 +323,7 @@ static void test_sigsegv_handler_with_different_pkey_fo= r_stack(void) memset(&siginfo, 0, sizeof(siginfo)); =20 /* Use clone to avoid newer glibcs using rseq on new threads */ - long ret =3D clone_raw(CLONE_VM | CLONE_FS | CLONE_FILES | + ret =3D clone_raw(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED, @@ -358,6 +358,7 @@ static void test_pkru_preserved_after_sigusr1(void) { struct sigaction sa; u64 pkey_reg; + int ret; =20 /* Allow access to MPK 0 and an arbitrary set of keys */ pkey_reg =3D pkey_reg_restrictive_default(); @@ -369,10 +370,8 @@ static void test_pkru_preserved_after_sigusr1(void) =20 sa.sa_sigaction =3D sigusr1_handler; sigemptyset(&sa.sa_mask); - if (sigaction(SIGUSR1, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGUSR1, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 memset(&siginfo, 0, sizeof(siginfo)); =20 @@ -444,6 +443,13 @@ static void test_pkru_sigreturn(void) int parent_pid =3D 0; int child_pid =3D 0; u64 pkey_reg; + long ret; + + /* + * SIGSEGV handler is reset to SIG_DFL below; turn tracing off first + * so a crash does not leave ftrace enabled. + */ + tracing_off(); =20 sa.sa_handler =3D SIG_DFL; sa.sa_flags =3D 0; @@ -453,24 +459,20 @@ static void test_pkru_sigreturn(void) * For this testcase, we do not want to handle SIGSEGV. Reset handler * to default so that the application can crash if it receives SIGSEGV. */ - if (sigaction(SIGSEGV, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGSEGV, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 sa.sa_flags =3D SA_SIGINFO | SA_ONSTACK; sa.sa_sigaction =3D sigusr2_handler; sigemptyset(&sa.sa_mask); =20 - if (sigaction(SIGUSR2, &sa, NULL) =3D=3D -1) { - perror("sigaction"); - exit(EXIT_FAILURE); - } + ret =3D sigaction(SIGUSR2, &sa, NULL); + pkey_assert(ret =3D=3D 0); =20 stack =3D mmap(0, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); =20 - assert(stack !=3D MAP_FAILED); + pkey_assert(stack !=3D MAP_FAILED); =20 /* * Allow access to MPK 0 and MPK 2. The child thread (to be created @@ -494,7 +496,7 @@ static void test_pkru_sigreturn(void) sigstack.ss_size =3D STACK_SIZE; =20 /* Use clone to avoid newer glibcs using rseq on new threads */ - long ret =3D clone_raw(CLONE_VM | CLONE_FS | CLONE_FILES | + ret =3D clone_raw(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED, @@ -530,16 +532,17 @@ static void (*pkey_tests[])(void) =3D { =20 int main(int argc, char *argv[]) { - int i; - ksft_print_header(); ksft_set_plan(ARRAY_SIZE(pkey_tests)); =20 if (!is_pkeys_supported()) ksft_exit_skip("pkeys not supported\n"); =20 - for (i =3D 0; i < ARRAY_SIZE(pkey_tests); i++) - (*pkey_tests[i])(); + for (test_nr =3D 0; test_nr < ARRAY_SIZE(pkey_tests); test_nr++) { + tracing_on(); + (*pkey_tests[test_nr])(); + tracing_off(); + } =20 ksft_finished(); return 0; --=20 2.25.1 From nobody Mon Jun 8 04:27:23 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E183D37881F; Tue, 2 Jun 2026 07:01:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383692; cv=none; b=t3QlOJpur+YG/rJXwkW733T1o/jn5ozqY2sbMpwqPPFerMLd+s0xLeRVN5ejxh7i8+1jKhuLoQd9mgsVmClh5Qp9mfGyNQrQCYXP7JTeULsvumW72nFrbhu61TEjaVSL/6mWwo2cb2PGr9hpbctTsqynsm/HTiaXicNcF+DzFng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383692; c=relaxed/simple; bh=rYzzgMIenavqv3fLe1ykLvdra6+nW+cwsCVuYgErpsE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hKO/33X7eiskzsE/zORK0/I2Mz8xScqoW+ahrL7YgE7cvjnAfwoc8uO4n2hz+0I8G2Bu6uoFmwwxF+IYb87AV06dxfLHsJW+rvLqrmNCBRXuHrCik/Hhvvbbsdi7cOGLIfmMOLhGNDUR3mBR3V7+Th22vP0V5KYH2nitBz03eps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: dd1643185e5011f1aa26b74ffac11d73-20260602 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_DIGIT_LEN, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT HR_TO_NO_NAME, IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_TRUSTED SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS, DKIM_NOPASS DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:2ecbba3a-7ab7-4152-bc62-d9f6de53d407,IP:10, URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:5 X-CID-INFO: VERSION:1.3.12,REQID:2ecbba3a-7ab7-4152-bc62-d9f6de53d407,IP:10,UR L:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:5 X-CID-META: VersionHash:e7bac3a,CLOUDID:c4300c857a7c370f3b1234fe22f7ea71,BulkI D:260602150124O4N0VTTT,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|136|850|865|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,R T:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DK P:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: dd1643185e5011f1aa26b74ffac11d73-20260602 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(223.70.159.239)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 148449013; Tue, 02 Jun 2026 15:01:22 +0800 From: Hongfu Li To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH v6 3/5] selftests/mm: use pkey_assert on clone_raw failure in pkey test Date: Tue, 2 Jun 2026 15:01:17 +0800 Message-Id: <20260602070119.1452308-4-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260602070119.1452308-1-lihongfu@kylinos.cn> References: <20260602070119.1452308-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use pkey_assert(0) instead of perror("clone") when clone_raw() fails. The old path only printed an error and continued; the test now exits via pkey_assert() on failure so it does not hang or proceed with an invalid child. Signed-off-by: Hongfu Li --- tools/testing/selftests/mm/pkey_sighandler_tests.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/tes= ting/selftests/mm/pkey_sighandler_tests.c index 085e771227fb..882928f2912b 100644 --- a/tools/testing/selftests/mm/pkey_sighandler_tests.c +++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c @@ -333,7 +333,7 @@ static void test_sigsegv_handler_with_different_pkey_fo= r_stack(void) =20 if (ret < 0) { errno =3D -ret; - perror("clone"); + pkey_assert(0); } else if (ret =3D=3D 0) { thread_segv_maperr_ptr(&sigstack); syscall_raw(SYS_exit, 0, 0, 0, 0, 0, 0); @@ -506,7 +506,7 @@ static void test_pkru_sigreturn(void) =20 if (ret < 0) { errno =3D -ret; - perror("clone"); + pkey_assert(0); } else if (ret =3D=3D 0) { thread_sigusr2_self(&sigstack); syscall_raw(SYS_exit, 0, 0, 0, 0, 0, 0); --=20 2.25.1 From nobody Mon Jun 8 04:27:23 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15714392C20; Tue, 2 Jun 2026 07:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383695; cv=none; b=CtP35Nbr44fqU/zaLFWFs5SqwJ9bDaCow8ZUw3C60dK2jb1MWL98TROFRai8V2/8jRoq5IdaKqjtfexW+iuT2FZFOjeQKJS/xuFlxEi695LNQyuw+5ZMXZfWZEVBtUDjs691lfoc/T98PwdyNYtPBOp2ClJAZGFQLpwTdbbC72U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383695; c=relaxed/simple; bh=5IRlofSrVPboQlop4d9YB1jg6RNszFLOzJiRENG35BQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PZpiMBnGgcFSra7idv9VDIhMSkWD4pdm3k926hpzs5gx7ITTmOeKlYhmWEXqBD5trDznBG0eH960wSQpXNs+rb++CDKS8d2gjHxVF8Aesy9mWYbLf45tABgyqWBbXioZV4TqfpmFmaDjW8fR57xidgK4MV9Rwi8AiDIUr0C69DQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: de7a1b765e5011f1aa26b74ffac11d73-20260602 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_DIGIT_LEN, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT HR_TO_NO_NAME, IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_TRUSTED SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS, DKIM_NOPASS DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:9365df35-eb04-47c9-92b9-bc7c395351fe,IP:10, URL:0,TC:0,Content:-25,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:-15 X-CID-INFO: VERSION:1.3.12,REQID:9365df35-eb04-47c9-92b9-bc7c395351fe,IP:10,UR L:0,TC:0,Content:-25,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:-15 X-CID-META: VersionHash:e7bac3a,CLOUDID:8def62c301d44e256f4815b234f29436,BulkI D:2606021501276KQVYNDK,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|865|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:ni l,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0, BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: de7a1b765e5011f1aa26b74ffac11d73-20260602 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(223.70.159.239)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 968047319; Tue, 02 Jun 2026 15:01:24 +0800 From: Hongfu Li To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH v6 4/5] selftests/mm: add missing mmap() return checks in pkey tests Date: Tue, 2 Jun 2026 15:01:18 +0800 Message-Id: <20260602070119.1452308-5-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260602070119.1452308-1-lihongfu@kylinos.cn> References: <20260602070119.1452308-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add missing checks against mmap() return value, replace (void *)-1 with MAP_FAILED for better readability and consistency. Signed-off-by: Hongfu Li --- tools/testing/selftests/mm/pkey-powerpc.h | 2 +- tools/testing/selftests/mm/pkey_sighandler_tests.c | 2 ++ tools/testing/selftests/mm/protection_keys.c | 12 +++++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/mm/pkey-powerpc.h b/tools/testing/self= tests/mm/pkey-powerpc.h index 17bf2d1b0192..2ce85580b404 100644 --- a/tools/testing/selftests/mm/pkey-powerpc.h +++ b/tools/testing/selftests/mm/pkey-powerpc.h @@ -126,7 +126,7 @@ static inline void *malloc_pkey_with_mprotect_subpage(l= ong size, int prot, u16 p size, prot, pkey); pkey_assert(pkey < NR_PKEYS); ptr =3D mmap(NULL, size, prot, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - pkey_assert(ptr !=3D (void *)-1); + pkey_assert(ptr !=3D MAP_FAILED); =20 ret =3D syscall(__NR_subpage_prot, ptr, size, NULL); if (ret) { diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/tes= ting/selftests/mm/pkey_sighandler_tests.c index 882928f2912b..d185d3da26cf 100644 --- a/tools/testing/selftests/mm/pkey_sighandler_tests.c +++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c @@ -317,6 +317,7 @@ static void test_sigsegv_handler_with_different_pkey_fo= r_stack(void) /* Set up alternate signal stack that will use the default MPK */ sigstack.ss_sp =3D mmap(0, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + pkey_assert(sigstack.ss_sp !=3D MAP_FAILED); sigstack.ss_flags =3D 0; sigstack.ss_size =3D STACK_SIZE; =20 @@ -492,6 +493,7 @@ static void test_pkru_sigreturn(void) /* Set up alternate signal stack that will use the default MPK */ sigstack.ss_sp =3D mmap(0, STACK_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + pkey_assert(sigstack.ss_sp !=3D MAP_FAILED); sigstack.ss_flags =3D 0; sigstack.ss_size =3D STACK_SIZE; =20 diff --git a/tools/testing/selftests/mm/protection_keys.c b/tools/testing/s= elftests/mm/protection_keys.c index e504544e2197..96a4eb26f326 100644 --- a/tools/testing/selftests/mm/protection_keys.c +++ b/tools/testing/selftests/mm/protection_keys.c @@ -586,7 +586,7 @@ static void *malloc_pkey_with_mprotect(long size, int p= rot, u16 pkey) size, prot, pkey); pkey_assert(pkey < NR_PKEYS); ptr =3D mmap(NULL, size, prot, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - pkey_assert(ptr !=3D (void *)-1); + pkey_assert(ptr !=3D MAP_FAILED); ret =3D mprotect_pkey((void *)ptr, PAGE_SIZE, prot, pkey); pkey_assert(!ret); record_pkey_malloc(ptr, size, prot); @@ -609,7 +609,7 @@ static void *malloc_pkey_anon_huge(long size, int prot,= u16 pkey) */ size =3D ALIGN_UP(size, HPAGE_SIZE * 2); ptr =3D mmap(NULL, size, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - pkey_assert(ptr !=3D (void *)-1); + pkey_assert(ptr !=3D MAP_FAILED); record_pkey_malloc(ptr, size, prot); mprotect_pkey(ptr, size, prot, pkey); =20 @@ -667,7 +667,7 @@ static void *malloc_pkey_hugetlb(long size, int prot, u= 16 pkey) size =3D ALIGN_UP(size, HPAGE_SIZE * 2); pkey_assert(pkey < NR_PKEYS); ptr =3D mmap(NULL, size, PROT_NONE, flags, -1, 0); - pkey_assert(ptr !=3D (void *)-1); + pkey_assert(ptr !=3D MAP_FAILED); mprotect_pkey(ptr, size, prot, pkey); =20 record_pkey_malloc(ptr, size, prot); @@ -696,7 +696,7 @@ static void *malloc_pkey(long size, int prot, u16 pkey) pkey_assert(malloc_type < nr_malloc_types); =20 ret =3D pkey_malloc[malloc_type](size, prot, pkey); - pkey_assert(ret !=3D (void *)-1); + pkey_assert(ret !=3D MAP_FAILED); =20 malloc_type++; if (malloc_type >=3D nr_malloc_types) @@ -1114,6 +1114,7 @@ static void arch_force_pkey_reg_init(void) * doing the XSAVE size enumeration dance. */ buf =3D mmap(NULL, 1*MB, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE,= -1, 0); + pkey_assert(buf !=3D MAP_FAILED); =20 /* These __builtins require compiling with -mxsave */ =20 @@ -1680,7 +1681,8 @@ int main(void) ksft_print_msg("running PKEY tests for unsupported CPU/OS\n"); =20 ptr =3D mmap(NULL, size, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); - assert(ptr !=3D (void *)-1); + if (ptr =3D=3D MAP_FAILED) + ksft_exit_fail_perror("mmap"); test_mprotect_pkey_on_unsupported_cpu(ptr, 1); ksft_test_result_pass("pkey on unsupported CPU/OS\n"); ksft_finished(); --=20 2.25.1 From nobody Mon Jun 8 04:27:23 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 224E53A9861; Tue, 2 Jun 2026 07:01:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383695; cv=none; b=bWlgb6ECHi+xZtcUOlQ/lEfEvOL/CuGsFbrnUQQrOesTPFyvAe7ZFuy+/1Cu0aTgm/Ke7xGVH0BiO4TUVVhLqgouU5SZoFJm7ioqEjp5BG2QL+zZ3b++iFkuHvhIp9Askj/vBT4qzrkc5vNm55pupEH0retrTtVLaYpN7vKn+g4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780383695; c=relaxed/simple; bh=eWDA4wI3Ydz5Nq3USZjSChsChbkm2cA1GhWU0Z5jHKI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=g9BBVSAK/KQ/2pE0HzDQbyztF2iTmfWBHv7Ns0lKTySm6Z4HTy3GKoln/cJmV88vITit6bh6OmW447612ik/xwW9nXJ0igwkVzra08pTH0jw2kpA/qwWkPB+qP2hXzf3gZAddhhnxdEQGGlMjD9QMDSMFWu+AFLzBq9cb1WpBcw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: e02bbc7c5e5011f1aa26b74ffac11d73-20260602 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NAME, HR_CC_NO_NAME, HR_CTE_8B HR_CTT_MISS, HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME HR_SJ_DIGIT_LEN, HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM HR_SJ_PHRASE, HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT HR_TO_NO_NAME, IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_TRUSTED SA_EXISTED, SN_TRUSTED, SN_EXISTED, SPF_NOPASS, DKIM_NOPASS DMARC_NOPASS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:549077d5-bd28-41a8-9020-6dc2e5d020eb,IP:10, URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:5 X-CID-INFO: VERSION:1.3.12,REQID:549077d5-bd28-41a8-9020-6dc2e5d020eb,IP:10,UR L:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:5 X-CID-META: VersionHash:e7bac3a,CLOUDID:ad801bb9f6dbb48635de2fd65192f5b9,BulkI D:260602150130PCANUYKE,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|865|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:ni l,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0, BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: e02bbc7c5e5011f1aa26b74ffac11d73-20260602 X-User: lihongfu@kylinos.cn Received: from localhost.localdomain [(223.70.159.239)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 776362238; Tue, 02 Jun 2026 15:01:27 +0800 From: Hongfu Li To: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, shuah@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Hongfu Li Subject: [PATCH v6 5/5] selftests/mm: add missing pthread_create() return checks in pkey tests Date: Tue, 2 Jun 2026 15:01:19 +0800 Message-Id: <20260602070119.1452308-6-lihongfu@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260602070119.1452308-1-lihongfu@kylinos.cn> References: <20260602070119.1452308-1-lihongfu@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add missing pthread_create() return checks in pkey sighandler tests to avoid hanging in pthread_cond_wait() when thread creation fails. Signed-off-by: Hongfu Li --- tools/testing/selftests/mm/pkey_sighandler_tests.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/mm/pkey_sighandler_tests.c b/tools/tes= ting/selftests/mm/pkey_sighandler_tests.c index d185d3da26cf..f30c9965a561 100644 --- a/tools/testing/selftests/mm/pkey_sighandler_tests.c +++ b/tools/testing/selftests/mm/pkey_sighandler_tests.c @@ -224,7 +224,8 @@ static void test_sigsegv_handler_with_pkey0_disabled(vo= id) pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); =20 - pthread_create(&thr, &attr, thread_segv_with_pkey0_disabled, NULL); + ret =3D pthread_create(&thr, &attr, thread_segv_with_pkey0_disabled, NULL= ); + pkey_assert(ret =3D=3D 0); =20 pthread_mutex_lock(&mutex); while (siginfo.si_signo =3D=3D 0) @@ -263,7 +264,8 @@ static void test_sigsegv_handler_cannot_access_stack(vo= id) pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); =20 - pthread_create(&thr, &attr, thread_segv_pkuerr_stack, NULL); + ret =3D pthread_create(&thr, &attr, thread_segv_pkuerr_stack, NULL); + pkey_assert(ret =3D=3D 0); =20 pthread_mutex_lock(&mutex); while (siginfo.si_signo =3D=3D 0) --=20 2.25.1