[BUG 4.4.178] x86_64 compat mode futexes broken

From: Joe Korty
Date: Thu Jun 06 2019 - 17:15:58 EST


Starting with 4.4.178, the LTP test

pthread_cond_wait/2-3

when compiled on x86_64 with 'gcc -m32', started failing. It generates this log output:

[16:18:38]Implementation supports the MONOTONIC CLOCK but option is disabled in test.
[16:18:38]Test starting
[16:18:38] Process-shared primitive will be tested
[16:18:38] Alternative clock for cond will be tested
[16:18:38]Test 2-3.c FAILED: The child did not own the mutex inside the cleanup handler

A git bisection between 4.4.177..178 shows that this commit is the culprit:

Git-Commit: 79739ad2d0ac5787a15a1acf7caaf34cd95bbf3c
Author: Alistair Strachan <astrachan@xxxxxxxxxx>
Subject: [PATCH] x86: vdso: Use $LD instead of $CC to link

And, indeed, when I back this patch out of 4.4.178 proper, the above test
passes again.

Please consider backing this patch out of linux-4.4.y, and from master, and from
any other linux branch it has been backported to.

PS: In backing it out of 4.4.178, I first backed out

7c45b45fd6e928c9ce275c32f6fa98d317e6f5ee

This is a follow-on vdso patch which collides with the
patch we are interested in removing. As it claims to be
only removing redundant code, it probably should never
have been backported in the first place.

Signed-off-by: Joe Korty <joe.korty@xxxxxxxxxxxxxxxxx>