]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
kselftest/arm64: Log fp-stress child startup errors to stdout
authorMark Brown <broonie@kernel.org>
Tue, 22 Oct 2024 23:20:45 +0000 (00:20 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 23 Oct 2024 11:02:39 +0000 (12:02 +0100)
Currently if we encounter an error between fork() and exec() of a child
process we log the error to stderr. This means that the errors don't get
annotated with the child information which makes diagnostics harder and
means that if we miss the exit signal from the child we can deadlock
waiting for output from the child. Improve robustness and output quality
by logging to stdout instead.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20241023-arm64-fp-stress-exec-fail-v1-1-ee3c62932c15@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
tools/testing/selftests/arm64/fp/fp-stress.c

index e62c9dbad5010234d70b477cf8c52ba0b312910e..13958e645afc0202c8c15e5284dac6aa6bc163d9 100644 (file)
@@ -79,7 +79,7 @@ static void child_start(struct child_data *child, const char *program)
                 */
                ret = dup2(pipefd[1], 1);
                if (ret == -1) {
-                       fprintf(stderr, "dup2() %d\n", errno);
+                       printf("dup2() %d\n", errno);
                        exit(EXIT_FAILURE);
                }
 
@@ -89,7 +89,7 @@ static void child_start(struct child_data *child, const char *program)
                 */
                ret = dup2(startup_pipe[0], 3);
                if (ret == -1) {
-                       fprintf(stderr, "dup2() %d\n", errno);
+                       printf("dup2() %d\n", errno);
                        exit(EXIT_FAILURE);
                }
 
@@ -107,16 +107,15 @@ static void child_start(struct child_data *child, const char *program)
                 */
                ret = read(3, &i, sizeof(i));
                if (ret < 0)
-                       fprintf(stderr, "read(startp pipe) failed: %s (%d)\n",
-                               strerror(errno), errno);
+                       printf("read(startp pipe) failed: %s (%d)\n",
+                              strerror(errno), errno);
                if (ret > 0)
-                       fprintf(stderr, "%d bytes of data on startup pipe\n",
-                               ret);
+                       printf("%d bytes of data on startup pipe\n", ret);
                close(3);
 
                ret = execl(program, program, NULL);
-               fprintf(stderr, "execl(%s) failed: %d (%s)\n",
-                       program, errno, strerror(errno));
+               printf("execl(%s) failed: %d (%s)\n",
+                      program, errno, strerror(errno));
 
                exit(EXIT_FAILURE);
        } else {