Skip to content

x86: sigcontext fixes, again

Andy Lutomirski lkml 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest4 patches 3 repliesIn review
  2. v44 patches 3 repliesSuperseded
  3. v34 patches 9 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v24 patches17 repliesSuperseded
v1 RFC4 patches21 repliesSuperseded

Changes in v5 from the cover letter

- More comment fixes from Borislav and Ingo.

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4x86/signal/64: Add a comment about sigcontext->fs and gsarch/x86/include/uapi/asm/sigcontext.h+25 -03 replies
2/4x86/signal/64: Fix SS if needed when delivering a 64-bit signalarch/x86/include/asm/desc_defs.h arch/x86/kernel/signal.c+72 -20 replies
3/4x86/signal/64: Re-add support for SS in the 64-bit signal contextarch/x86/include/asm/sighandling.h arch/x86/include/uapi/asm/sigcontext.h arch/x86/include/uapi/asm/ucontext.h +2 more+101 -300 replies
4/4selftests/x86: Add tests for UC_SIGCONTEXT_SS and UC_STRICT_RESTORE_SStools/testing/selftests/x86/sigreturn.c+202 -280 replies

Reviews trailers per patch

None of the 4 patches has a Reviewed-by or Acked-by.

PatchStas Sergeev
1/4
2/4
3/4T-b
4/4

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v5 thread

Cover letter [PATCH v5 0/4] x86: sigcontext fixes, again

This is take 2 at fixing x86 64-bit signals wrt SS. After a lot of thought, this is not controlled by any flags -- I would much prefer to avoid opt-in behavior. Instead, it just tries hard to avoid triggering the cases that break DOSEMU.

Stas, this now seems to pass the test you sent me. It works with stock dosemu2 (I haven't tested classic dosemu because I can't get it to work regardless). It also works with a patched dosemu2 that bypasses the userspace trampoline:

https://github.com/amluto/dosemu2/commit/571b4d08dc885b7a133e444a2ad23e0d21366206

With this applied, all of the x86 selftests pass on x86_64. That wasn't the case before -- ldt_gdt_64 was broken.

This is a bit risky, and another option would be to do nothing at all. Then we'd disable the problematic self-tests (sigh), and DOSEMU and similar tools will be stuck using gross hacks even on new kernels.

Changes from v4:
- More comment fixes from Borislav and Ingo.

Changes from v3:
- Comment fixes from Borislav.
- Improve AR_xyz comments to better match SDM. (Borislav, is this good?)
- Get rid of duplicate AR_xyz defines in the selftest.
- (no non-comment code changes)

Changes from v2:
- Rebased (which wasn't quite trivial since the headers were rearranged)
- Slightly improved a comment in patch 1.
- Tidy up changelogs a bit.

Changes from v1:
- Comment fixes
- Fix screwed up uaccess that broke things

Andy Lutomirski (4):
x86/signal/64: Add a comment about sigcontext->fs and gs x86/signal/64: Fix SS if needed when delivering a 64-bit signal x86/signal/64: Re-add support for SS in the 64-bit signal context selftests/x86: Add tests for UC_SIGCONTEXT_SS and UC_STRICT_RESTORE_SS

 arch/x86/include/asm/desc_defs.h        |  23 ++++
 arch/x86/include/asm/sighandling.h      |   1 -
 arch/x86/include/uapi/asm/sigcontext.h  |  32 ++++-
 arch/x86/include/uapi/asm/ucontext.h    |  53 +++++++-
 arch/x86/kernel/signal.c                | 114 +++++++++++++---
 tools/testing/selftests/x86/Makefile    |   7 +-
 tools/testing/selftests/x86/sigreturn.c | 230 ++++++++++++++++++++++++++++----
 7 files changed, 400 insertions(+), 60 deletions(-)
Signature · 1 line
2.5.0