----- On Jun 30, 2022, at 7:25 AM, Greg Kroah-Hartman gregkh@linuxfoundation.org wrote:
On Mon, Jun 27, 2022 at 11:20:40AM -0400, Mathieu Desnoyers wrote:
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... 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")
As many of these are newer than 5.10, can you provide a series of patches that should be applied to 5.4, 5.10, 5.15 and possibly 5.18 to resolve this issue. We do not want anyone moving from 5.4 to a newer kernel and having regressions.
Hi Greg,
Here are the series of rseq selftests fixes to apply to the 5.4, 5.10, and 5.15 stable kernel series.
v5.4.203
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")
v5.10.128
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")
v5.15.52
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")
Please note that if someone cares about getting rseq selftests to work on 4.9, 4.14 and 4.19 stable kernels with glibc 2.35+, additional commits will be needed prior to the commits identified above. This would include commits that add rseq selftests support for additional architectures, or to manually edit the follow up fix commits when backporting and omit the parts applying to unsupported architectures. This is not straightforward, so I am not listing those stable branches here.
As I identified in my prior email, there is also a patch from Michael Jeanson that would be useful, but AFAIK it's still in -tip (not in master yet), so as per the cherry-picking rules of stable kernels it will have to wait.
Thanks,
Mathieu