Re: Reg: rseq selftests failed on 5.4.199

From: Mathieu Desnoyers
Date: Mon Jun 27 2022 - 11:21:56 EST


On 27-Jun-2022 09:23:58 AM, Greg KH wrote:
> On Sun, Jun 26, 2022 at 10:01:20PM +0300, RAJESH DASARI wrote:
> > Hi ,
> >
> > We are running rseq selftests on 5.4.199 kernel with glibc 2.34
> > version and we see that tests are failing to compile with invalid
> > argument errors. When we took all the commits from
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/tools/testing/selftests/rseq
> > related to rseq locally , test cases have passed. I see that there are
> > some adaptations to the latest glibc version done in those commits, is
> > there any plan to backport them to 5.4.x versions. Could you please
> > provide your inputs.
>
> What commits specifically are you referring to please? A list of them
> would be great, and if you have tested them and verified that they can
> be backported cleanly would also be very helpful.

Hi Greg,

Specifically related to rseq selftests, the following string of commits
would be relevant on top of v5.4.199. Those are not all strictly only
bugfixes, but they help applying the following commits without
conflicts. I have validated that this string of commits cherry-picks on
top of v5.4.199, and that the resulting selftests build fine.

ea366dd79c ("seq/selftests,x86_64: Add rseq_offset_deref_addv()")
07ad4f7629 ("selftests/rseq: remove ARRAY_SIZE define from individual tests")
5c105d55a9 ("selftests/rseq: introduce own copy of rseq uapi header")
930378d056 ("selftests/rseq: Remove useless assignment to cpu variable")
94b80a19eb ("selftests/rseq: Remove volatile from __rseq_abi")
e546cd48cc ("selftests/rseq: Introduce rseq_get_abi() helper")
886ddfba93 ("selftests/rseq: Introduce thread pointer getters")
233e667e1a ("selftests/rseq: Uplift rseq selftests for compatibility with glibc-2.35")
24d1136a29 ("selftests/rseq: Fix ppc32: wrong rseq_cs 32-bit field pointer on big endian")
de6b52a214 ("selftests/rseq: Fix ppc32 missing instruction selection "u" and "x" for load/store")
26dc8a6d8e ("selftests/rseq: Fix ppc32 offsets by using long rather than off_t")
d7ed99ade3 ("selftests/rseq: Fix warnings about #if checks of undefined tokens")
94c5cf2a0e ("selftests/rseq: Remove arm/mips asm goto compiler work-around")
b53823fb2e ("selftests/rseq: Fix: work-around asm goto compiler bugs")
4e15bb766b ("selftests/rseq: x86-64: use %fs segment selector for accessing rseq thread area")
127b6429d2 ("selftests/rseq: x86-32: use %gs segment selector for accessing rseq thread area")
889c5d60fb ("selftests/rseq: Change type of rseq_offset to ptrdiff_t")

There is also this patch (currently in -tip, not in the master branch
yet) which is relevant for the case where a glibc-2.35 (or a glibc-2.34
with backported rseq support) ends up being built against kernel headers
that do not have rseq support:

https://lore.kernel.org/lkml/20220614154830.1367382-4-mjeanson@xxxxxxxxxxxx/

Thanks,

Mathieu


--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com