Re: Several tst-robust* tests time out with recent Linux kernel

From: Peter Zijlstra
Date: Tue Nov 14 2023 - 10:31:15 EST


On Tue, Nov 14, 2023 at 05:46:43PM +0800, Xi Ruoyao wrote:
> On Tue, 2023-11-14 at 02:33 +0800, Xi Ruoyao wrote:
> > Hi,
> >
> > With Linux 6.7.0-rc1, several tst-robust* tests time out on x86_64:
> >
> > FAIL: nptl/tst-robust1
> > FAIL: nptl/tst-robust3
> > FAIL: nptl/tst-robust4
> > FAIL: nptl/tst-robust6
> > FAIL: nptl/tst-robust7
> > FAIL: nptl/tst-robust9
> >
> > This does not happen with Linux 6.6.0.  Do you have some clue about
> > it?
>
> Bisected to the kernel commit:
>
> commit 5694289ce183bc3336407a78c8c722a0b9208f9b (HEAD)
> Author: peterz@xxxxxxxxxxxxx <peterz@xxxxxxxxxxxxx>
> Date: Thu Sep 21 12:45:08 2023 +0200
>
> futex: Flag conversion
>
> Futex has 3 sets of flags:
>
> - legacy futex op bits
> - futex2 flags
> - internal flags
>
> Add a few helpers to convert from the API flags into the internal
> flags.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> Reviewed-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Reviewed-by: Andr<C3><A9> Almeida <andrealmeid@xxxxxxxxxx>
> Link: https://lore.kernel.org/r/20230921105247.722140574@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

I can confirm. I'm also going crazy trying to figure out how this
happens.

The below is sufficient to make it unhappy...

/me most puzzled

---
diff --git a/kernel/futex/futex.h b/kernel/futex/futex.h
index b5379c0e6d6d..1a1f9301251f 100644
--- a/kernel/futex/futex.h
+++ b/kernel/futex/futex.h
@@ -17,7 +17,7 @@
* restarts.
*/
#ifdef CONFIG_MMU
-# define FLAGS_SHARED 0x01
+# define FLAGS_SHARED 0x10
#else
/*
* NOMMU does not have per process address space. Let the compiler optimize
@@ -25,8 +25,8 @@
*/
# define FLAGS_SHARED 0x00
#endif
-#define FLAGS_CLOCKRT 0x02
-#define FLAGS_HAS_TIMEOUT 0x04
+#define FLAGS_CLOCKRT 0x20
+#define FLAGS_HAS_TIMEOUT 0x40

#ifdef CONFIG_FAIL_FUTEX
extern bool should_fail_futex(bool fshared);