This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 00/12] x86/CET: The last 12 patches to enable Intel CET


These are the last 12 patches to enable Intel CET.  Tested by

1. build-many-glibcs.py.
2. With --enable-cet and without --enable-cet for i686, x86-64 and x32
on non-CET x86-64 processors.
3. With --enable-cet for x86-64 and x32 on CET SDV using the CET kernel
from cet branch at:

https://github.com/yyu168/linux_cet/tree/cet

When the shadow stack (SHSTK) is enabled, makecontext needs to allocate
a new shadow stack to go with the new stack allocated by the caller.
setcontext and swapcontext must properly handle the corresponding shadow
stack when the stack is switched.  Add more tests for user context
functions to provide more coverage for the shadow stack support.

H.J. Lu (12):
  x86: Update vfork to pop shadow stack
  x86-64: Add endbr64 to tst-quadmod[12].S
  Add <bits/indirect-return.h>
  x86/CET: Extend arch_prctl syscall for CET control
  x86: Rename __glibc_reserved2 to ssp_base in tcbhead_t
  x86-64/CET: Extend ucontext_t to save shadow stack
  x86/CET: Add tests with legacy non-CET shared objects
  Add a test for swapcontext with a wrapper
  Add a test for multiple makecontext calls
  Add another test for setcontext
  Add a test for multiple setcontext calls
  Add tests for setcontext on the context from makecontext

 bits/indirect-return.h                        |  25 ++
 misc/sys/cdefs.h                              |   6 +
 stdlib/Makefile                               |   7 +-
 stdlib/tst-setcontext4.c                      | 217 ++++++++++++++++++
 stdlib/tst-setcontext5.c                      |  88 +++++++
 stdlib/tst-setcontext6.c                      |  76 ++++++
 stdlib/tst-setcontext7.c                      |  96 ++++++++
 stdlib/tst-setcontext8.c                      |  81 +++++++
 stdlib/tst-setcontext9.c                      | 100 ++++++++
 stdlib/tst-swapcontext1.c                     |  92 ++++++++
 stdlib/tst-swapcontext2.c                     | 108 +++++++++
 stdlib/ucontext.h                             |   6 +-
 string/tst-xbzero-opt.c                       |  10 +-
 sysdeps/i386/nptl/tcb-offsets.sym             |   1 +
 sysdeps/i386/nptl/tls.h                       |   3 +-
 sysdeps/unix/sysv/linux/Makefile              |   3 +-
 sysdeps/unix/sysv/linux/bits/prctl.h          |  21 ++
 sysdeps/unix/sysv/linux/i386/vfork.S          |  54 +++++
 sysdeps/unix/sysv/linux/sys/prctl.h           |   1 +
 sysdeps/unix/sysv/linux/x86/bits/prctl.h      |  48 ++++
 sysdeps/unix/sysv/linux/x86/cpu-features.c    |   7 +
 sysdeps/unix/sysv/linux/x86/dl-cet.h          |  29 ++-
 sysdeps/unix/sysv/linux/x86/sys/ucontext.h    |   2 +
 .../unix/sysv/linux/x86_64/__start_context.S  |  75 ++++++
 sysdeps/unix/sysv/linux/x86_64/getcontext.S   |  17 ++
 sysdeps/unix/sysv/linux/x86_64/makecontext.c  |  56 ++++-
 sysdeps/unix/sysv/linux/x86_64/setcontext.S   | 139 +++++++++++
 sysdeps/unix/sysv/linux/x86_64/swapcontext.S  | 150 ++++++++++++
 sysdeps/unix/sysv/linux/x86_64/sysdep.h       |   5 +
 sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym |   1 +
 sysdeps/unix/sysv/linux/x86_64/vfork.S        |  35 +++
 sysdeps/x86/Makefile                          |  38 +++
 sysdeps/x86/bits/indirect-return.h            |  35 +++
 sysdeps/x86/libc-start.c                      |   3 +
 sysdeps/x86/tst-cet-legacy-1.c                |  44 ++++
 sysdeps/x86/tst-cet-legacy-2.c                |  64 ++++++
 sysdeps/x86/tst-cet-legacy-2a.c               |   1 +
 sysdeps/x86/tst-cet-legacy-3.c                |  88 +++++++
 sysdeps/x86/tst-cet-legacy-4.c                |  56 +++++
 sysdeps/x86/tst-cet-legacy-4a.c               |   1 +
 sysdeps/x86/tst-cet-legacy-4b.c               |   1 +
 sysdeps/x86/tst-cet-legacy-4c.c               |   1 +
 sysdeps/x86/tst-cet-legacy-mod-1.c            |  24 ++
 sysdeps/x86/tst-cet-legacy-mod-2.c            |  24 ++
 sysdeps/x86/tst-cet-legacy-mod-4.c            |   2 +
 sysdeps/x86_64/nptl/tcb-offsets.sym           |   1 +
 sysdeps/x86_64/nptl/tls.h                     |  10 +-
 sysdeps/x86_64/tst-quadmod1.S                 |   6 +
 sysdeps/x86_64/tst-quadmod2.S                 |   6 +
 49 files changed, 1950 insertions(+), 14 deletions(-)
 create mode 100644 bits/indirect-return.h
 create mode 100644 stdlib/tst-setcontext4.c
 create mode 100644 stdlib/tst-setcontext5.c
 create mode 100644 stdlib/tst-setcontext6.c
 create mode 100644 stdlib/tst-setcontext7.c
 create mode 100644 stdlib/tst-setcontext8.c
 create mode 100644 stdlib/tst-setcontext9.c
 create mode 100644 stdlib/tst-swapcontext1.c
 create mode 100644 stdlib/tst-swapcontext2.c
 create mode 100644 sysdeps/unix/sysv/linux/bits/prctl.h
 create mode 100644 sysdeps/unix/sysv/linux/x86/bits/prctl.h
 create mode 100644 sysdeps/x86/bits/indirect-return.h
 create mode 100644 sysdeps/x86/tst-cet-legacy-1.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-2.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-2a.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-3.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-4.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-4a.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-4b.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-4c.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-mod-1.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-mod-2.c
 create mode 100644 sysdeps/x86/tst-cet-legacy-mod-4.c

-- 
2.17.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]