proc: fixup uptime selftest
authorAlexey Dobriyan <adobriyan@gmail.com>
Mon, 24 Oct 2022 18:08:09 +0000 (21:08 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:14:02 +0000 (13:14 +0100)
[ Upstream commit 5cc81d5c81af0dee54da9a67a3ebe4be076a13db ]

syscall(3) returns -1 and sets errno on error, unlike "syscall"
instruction.

Systems which have <= 32/64 CPUs are unaffected. Test won't bounce
to all CPUs before completing if there are more of them.

Link: https://lkml.kernel.org/r/Y1bUiT7VRXlXPQa1@p183
Fixes: 1f5bd0547654 ("proc: selftests: test /proc/uptime")
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/testing/selftests/proc/proc-uptime-002.c

index e7ceabe..7d0aa22 100644 (file)
@@ -17,6 +17,7 @@
 // while shifting across CPUs.
 #undef NDEBUG
 #include <assert.h>
+#include <errno.h>
 #include <unistd.h>
 #include <sys/syscall.h>
 #include <stdlib.h>
@@ -54,7 +55,7 @@ int main(void)
                len += sizeof(unsigned long);
                free(m);
                m = malloc(len);
-       } while (sys_sched_getaffinity(0, len, m) == -EINVAL);
+       } while (sys_sched_getaffinity(0, len, m) == -1 && errno == EINVAL);
 
        fd = open("/proc/uptime", O_RDONLY);
        assert(fd >= 0);