Skip to contentSkip to conversation

syscalls/rt_sigsuspend01: ignore reserved signals

PATCH New Steve Muckle 2 participants 3 messages Nov 17, 2018 – Nov 19, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 syscalls/rt_sigsuspend01: ignore reserved signals

Some signals may be internally used by the C library. Do not attempt to verify these.

---
 .../kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c +8 -5
index 14b6bb332..f17a9aae6 100644
@@ -26,6 +26,7 @@ static void sig_handler(int sig)
 
 static void verify_rt_sigsuspend(void)
 {
+	int i;
 	sigset_t set, set1, set2;
 	struct sigaction act = {.sa_handler = sig_handler};
 
@@ -51,11 +52,13 @@ static void verify_rt_sigsuspend(void)
 	tst_res(TPASS, "rt_sigsuspend() returned with -1 and EINTR");
 
 	SAFE_RT_SIGPROCMASK(0, NULL, &set2, SIGSETSIZE);
-
-	if (memcmp(&set1, &set2, sizeof(unsigned long)))
-		tst_res(TFAIL, "signal mask not preserved");
-	else
-		tst_res(TPASS, "signal mask preserved");
+	for (i = 1; i < SIGRTMAX; i++) {
+		if (i >= __SIGRTMIN && i < SIGRTMIN)
+			continue;
+		if (sigismember(&set1, i) != sigismember(&set2, i))
+			tst_brk(TFAIL, "signal mask not preserved");
+	}
+	tst_res(TPASS, "signal mask preserved");
 }
 
 static struct tst_test test = {
Signature · 1 line
2.19.1.1215.g8438c0b245-goog
#1 lore raw

PATCH 1/1 syscalls/rt_sigsuspend01: ignore reserved signals

Hi Cyril this applies on top of the recent series you sent:

[LTP] [PATCH 0/3] Add rt signal newlib support + convert rt_sigsuspend01

thanks,
Steve

Quoted 40 lines · Steve Muckle

Some signals may be internally used by the C library. Do not attempt to verify these.

---
  .../kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)
testcases/kernel/syscalls/rt_sigsuspend/rt_sigsuspend01.c +8 -5
index 14b6bb332..f17a9aae6 100644
@@ -26,6 +26,7 @@ static void sig_handler(int sig)
 
  static void verify_rt_sigsuspend(void)
  {
+	int i;
  	sigset_t set, set1, set2;
  	struct sigaction act = {.sa_handler = sig_handler};
 
@@ -51,11 +52,13 @@ static void verify_rt_sigsuspend(void)
  	tst_res(TPASS, "rt_sigsuspend() returned with -1 and EINTR");
 
  	SAFE_RT_SIGPROCMASK(0, NULL, &set2, SIGSETSIZE);
-
-	if (memcmp(&set1, &set2, sizeof(unsigned long)))
-		tst_res(TFAIL, "signal mask not preserved");
-	else
-		tst_res(TPASS, "signal mask preserved");
+	for (i = 1; i < SIGRTMAX; i++) {
+		if (i >= __SIGRTMIN && i < SIGRTMIN)
+			continue;
+		if (sigismember(&set1, i) != sigismember(&set2, i))
+			tst_brk(TFAIL, "signal mask not preserved");
+	}
+	tst_res(TPASS, "signal mask preserved");
  }
 
  static struct tst_test test = {