[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v1 00/11] xSplice implementation



This is the initial implementation of xSplice, live patching for Xen.

Patch series overview:

Patch 1: Design document
Patches 2, 5-11: Hypervisor implementation
Patches 3, 4: Toolstack changes

Live patches work at the function level by replacing functions. Any
function may be replaced, but whether it semantically is safe to do so
is up to the patch author. Live patches can contain bug frames,
exception tables and alternative instructions (required when patching
any non-trivial function). Patches are applied with the system in a
quiescent state.

This is the initial implementation and implements a usable subset of the
design document. It is enough to apply interesting patches (for example,
try XSA-148). A follow-up patch series implementing the remainder is
expected in this release cycle.

Although most of the code is architecture independent, there are a few
bits which are arch dependent and these have only been developed for
x86. There are stubs for arm (which have been compile-tested).

There is a separate tool to generate patches. Currently this lives at:
https://github.com/rosslagerwall/xsplice-build

Konrad Rzeszutek Wilk (4):
  xsplice: Design document (v2).
  xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op
  libxc: Implementation of XEN_XSPLICE_op in libxc.
  xen-xsplice: Tool to manipulate xsplice payloads.

Ross Lagerwall (7):
  elf: Add relocation types to elfstructs.h
  xsplice: Add helper elf routines
  xsplice: Implement payload loading
  xsplice: Implement support for applying patches
  xsplice: Add support for bug frames
  xsplice: Add support for exception tables
  xsplice: Add support for alternatives

 .gitignore                                   |    1 +
 docs/misc/xsplice.markdown                   |  999 ++++++++++++++++++++++++
 tools/flask/policy/policy/modules/xen/xen.te |    1 +
 tools/libxc/include/xenctrl.h                |   18 +
 tools/libxc/xc_misc.c                        |  283 +++++++
 tools/misc/Makefile                          |    4 +
 tools/misc/xen-xsplice.c                     |  439 +++++++++++
 xen/arch/arm/Makefile                        |    1 +
 xen/arch/arm/xsplice.c                       |   31 +
 xen/arch/x86/Makefile                        |    3 +-
 xen/arch/x86/alternative.c                   |   12 +-
 xen/arch/x86/domain.c                        |    4 +
 xen/arch/x86/extable.c                       |   36 +-
 xen/arch/x86/hvm/svm/svm.c                   |    2 +
 xen/arch/x86/hvm/vmx/vmcs.c                  |    2 +
 xen/arch/x86/setup.c                         |    7 +
 xen/arch/x86/traps.c                         |   30 +-
 xen/arch/x86/xsplice.c                       |  109 +++
 xen/common/Makefile                          |    2 +
 xen/common/symbols.c                         |    7 +
 xen/common/sysctl.c                          |    6 +
 xen/common/xsplice.c                         | 1059 ++++++++++++++++++++++++++
 xen/common/xsplice_elf.c                     |  122 +++
 xen/include/asm-arm/nmi.h                    |   13 +
 xen/include/asm-x86/alternative.h            |    1 +
 xen/include/asm-x86/uaccess.h                |    5 +
 xen/include/asm-x86/x86_64/page.h            |    2 +
 xen/include/public/sysctl.h                  |  157 ++++
 xen/include/xen/elfstructs.h                 |   21 +
 xen/include/xen/kernel.h                     |    1 +
 xen/include/xen/xsplice.h                    |   42 +
 xen/include/xen/xsplice_elf.h                |   44 ++
 xen/xsm/flask/hooks.c                        |    4 +
 xen/xsm/flask/policy/access_vectors          |    2 +
 34 files changed, 3439 insertions(+), 31 deletions(-)
 create mode 100644 docs/misc/xsplice.markdown
 create mode 100644 tools/misc/xen-xsplice.c
 create mode 100644 xen/arch/arm/xsplice.c
 create mode 100644 xen/arch/x86/xsplice.c
 create mode 100644 xen/common/xsplice.c
 create mode 100644 xen/common/xsplice_elf.c
 create mode 100644 xen/include/xen/xsplice.h
 create mode 100644 xen/include/xen/xsplice_elf.h

-- 
2.4.3


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.