[PATCH v2 00/10] xsm: refactoring xsm hooks

Daniel P. Smith posted 10 patches 2 years, 9 months ago
Test gitlab-ci failed
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20210712203233.20289-1-dpsmith@apertussolutions.com
There is a newer version of this series
xen/arch/arm/dm.c                     |   2 +-
xen/arch/arm/domctl.c                 |   6 +-
xen/arch/arm/hvm.c                    |   2 +-
xen/arch/arm/mm.c                     |   2 +-
xen/arch/arm/platform_hypercall.c     |   2 +-
xen/arch/x86/Kconfig                  |   1 +
xen/arch/x86/cpu/mcheck/mce.c         |   2 +-
xen/arch/x86/cpu/vpmu.c               |   2 +-
xen/arch/x86/domctl.c                 |   8 +-
xen/arch/x86/hvm/dm.c                 |   2 +-
xen/arch/x86/hvm/hvm.c                |  12 +-
xen/arch/x86/irq.c                    |   5 +-
xen/arch/x86/mm.c                     |  20 +-
xen/arch/x86/mm/mem_paging.c          |   2 +-
xen/arch/x86/mm/mem_sharing.c         |   9 +-
xen/arch/x86/mm/p2m.c                 |   2 +-
xen/arch/x86/mm/paging.c              |   4 +-
xen/arch/x86/mm/shadow/set.c          |   2 +-
xen/arch/x86/msi.c                    |   3 +-
xen/arch/x86/pci.c                    |   2 +-
xen/arch/x86/physdev.c                |  17 +-
xen/arch/x86/platform_hypercall.c     |  10 +-
xen/arch/x86/pv/emul-priv-op.c        |   2 +-
xen/arch/x86/sysctl.c                 |   4 +-
xen/common/Kconfig                    |  48 +-
xen/common/domain.c                   |   4 +-
xen/common/domctl.c                   |  12 +-
xen/common/event_channel.c            |  12 +-
xen/common/grant_table.c              |  16 +-
xen/common/hypfs.c                    |   2 +-
xen/common/kernel.c                   |   2 +-
xen/common/kexec.c                    |   2 +-
xen/common/mem_access.c               |   2 +-
xen/common/memory.c                   |  16 +-
xen/common/monitor.c                  |   2 +-
xen/common/sched/core.c               |   6 +-
xen/common/sysctl.c                   |   8 +-
xen/common/vm_event.c                 |   2 +-
xen/common/xenoprof.c                 |   2 +-
xen/drivers/char/console.c            |   2 +-
xen/drivers/passthrough/device_tree.c |   4 +-
xen/drivers/passthrough/pci.c         |  12 +-
xen/include/xen/alternative-call.h    |  65 +++
xen/include/xen/sched.h               |   9 -
xen/include/xsm/dummy.h               | 774 --------------------------
xen/include/xsm/xsm-core.h            | 237 ++++++++
xen/include/xsm/xsm.h                 | 623 +++++++--------------
xen/xsm/Makefile                      |   4 +-
xen/xsm/dummy.c                       |   7 +-
xen/xsm/dummy.h                       | 696 +++++++++++++++++++++++
xen/xsm/flask/flask_op.c              |  30 -
xen/xsm/flask/hooks.c                 |  11 +-
xen/xsm/silo.c                        |  23 +-
xen/xsm/xsm_core.c                    |  76 +--
54 files changed, 1381 insertions(+), 1451 deletions(-)
create mode 100644 xen/include/xen/alternative-call.h
delete mode 100644 xen/include/xsm/dummy.h
create mode 100644 xen/include/xsm/xsm-core.h
create mode 100644 xen/xsm/dummy.h
[PATCH v2 00/10] xsm: refactoring xsm hooks
Posted by Daniel P. Smith 2 years, 9 months ago
Based on feedback from 2021 Xen Developers Summit the xsm-roles RFC
patch set is being split into two separate patch sets. This is the first
patch set and is focused purely on the clean up and refactoring of the
XSM hooks.

This patch set refactors the xsm_ops wrapper hooks to use the alternative_call
infrastructure. Then proceeds to move and realign the headers to remove the
psuedo is/is not enable implementation. The remainder of the changes are clean up
and removing no longer necessary abstractions.

v2:
 - restructured the patches, breaking them up as needed
 - incorporate Andrew Cooper's alternative call common code
 - change XSM module registration, removing register_xsm
 - incoporate KConfig recommendations
 - reworded commit messages
 - incorporate macro expansion recommendations
 - misc clean-up fallout from recommendations

Andrew Cooper (1):
  xen: Implement xen/alternative-call.h for use in common code

Daniel P. Smith (9):
  xsm: refactor xsm_ops handling
  xsm: remove the ability to disable flask
  xsm: convert xsm_ops hook calls to alternative call
  xsm: decouple xsm header inclusion selection
  xsm: enable xsm to always be included
  xsm: drop generic event channel labeling
  xsm: remove xsm_default_t from hook definitions
  xsm: expand the function related macros in dummy.h
  xsm: removing the XSM_ASSERT_ACTION macro

 xen/arch/arm/dm.c                     |   2 +-
 xen/arch/arm/domctl.c                 |   6 +-
 xen/arch/arm/hvm.c                    |   2 +-
 xen/arch/arm/mm.c                     |   2 +-
 xen/arch/arm/platform_hypercall.c     |   2 +-
 xen/arch/x86/Kconfig                  |   1 +
 xen/arch/x86/cpu/mcheck/mce.c         |   2 +-
 xen/arch/x86/cpu/vpmu.c               |   2 +-
 xen/arch/x86/domctl.c                 |   8 +-
 xen/arch/x86/hvm/dm.c                 |   2 +-
 xen/arch/x86/hvm/hvm.c                |  12 +-
 xen/arch/x86/irq.c                    |   5 +-
 xen/arch/x86/mm.c                     |  20 +-
 xen/arch/x86/mm/mem_paging.c          |   2 +-
 xen/arch/x86/mm/mem_sharing.c         |   9 +-
 xen/arch/x86/mm/p2m.c                 |   2 +-
 xen/arch/x86/mm/paging.c              |   4 +-
 xen/arch/x86/mm/shadow/set.c          |   2 +-
 xen/arch/x86/msi.c                    |   3 +-
 xen/arch/x86/pci.c                    |   2 +-
 xen/arch/x86/physdev.c                |  17 +-
 xen/arch/x86/platform_hypercall.c     |  10 +-
 xen/arch/x86/pv/emul-priv-op.c        |   2 +-
 xen/arch/x86/sysctl.c                 |   4 +-
 xen/common/Kconfig                    |  48 +-
 xen/common/domain.c                   |   4 +-
 xen/common/domctl.c                   |  12 +-
 xen/common/event_channel.c            |  12 +-
 xen/common/grant_table.c              |  16 +-
 xen/common/hypfs.c                    |   2 +-
 xen/common/kernel.c                   |   2 +-
 xen/common/kexec.c                    |   2 +-
 xen/common/mem_access.c               |   2 +-
 xen/common/memory.c                   |  16 +-
 xen/common/monitor.c                  |   2 +-
 xen/common/sched/core.c               |   6 +-
 xen/common/sysctl.c                   |   8 +-
 xen/common/vm_event.c                 |   2 +-
 xen/common/xenoprof.c                 |   2 +-
 xen/drivers/char/console.c            |   2 +-
 xen/drivers/passthrough/device_tree.c |   4 +-
 xen/drivers/passthrough/pci.c         |  12 +-
 xen/include/xen/alternative-call.h    |  65 +++
 xen/include/xen/sched.h               |   9 -
 xen/include/xsm/dummy.h               | 774 --------------------------
 xen/include/xsm/xsm-core.h            | 237 ++++++++
 xen/include/xsm/xsm.h                 | 623 +++++++--------------
 xen/xsm/Makefile                      |   4 +-
 xen/xsm/dummy.c                       |   7 +-
 xen/xsm/dummy.h                       | 696 +++++++++++++++++++++++
 xen/xsm/flask/flask_op.c              |  30 -
 xen/xsm/flask/hooks.c                 |  11 +-
 xen/xsm/silo.c                        |  23 +-
 xen/xsm/xsm_core.c                    |  76 +--
 54 files changed, 1381 insertions(+), 1451 deletions(-)
 create mode 100644 xen/include/xen/alternative-call.h
 delete mode 100644 xen/include/xsm/dummy.h
 create mode 100644 xen/include/xsm/xsm-core.h
 create mode 100644 xen/xsm/dummy.h

-- 
2.20.1


Re: [PATCH v2 00/10] xsm: refactoring xsm hooks
Posted by Andrew Cooper 2 years, 9 months ago
On 12/07/2021 21:32, Daniel P. Smith wrote:
> Based on feedback from 2021 Xen Developers Summit the xsm-roles RFC
> patch set is being split into two separate patch sets. This is the first
> patch set and is focused purely on the clean up and refactoring of the
> XSM hooks.
>
> This patch set refactors the xsm_ops wrapper hooks to use the alternative_call
> infrastructure. Then proceeds to move and realign the headers to remove the
> psuedo is/is not enable implementation. The remainder of the changes are clean up
> and removing no longer necessary abstractions.
>
> v2:
>  - restructured the patches, breaking them up as needed
>  - incorporate Andrew Cooper's alternative call common code
>  - change XSM module registration, removing register_xsm
>  - incoporate KConfig recommendations
>  - reworded commit messages
>  - incorporate macro expansion recommendations
>  - misc clean-up fallout from recommendations

CI is heavily broken atm, but there is one issue I've spotted which is
introduced by this series.

https://gitlab.com/xen-project/patchew/xen/-/jobs/1418359368

In file included from xsm_policy.c:21:
/builds/xen-project/patchew/xen/xen/include/xsm/xsm.h: In function
'xsm_security_domaininfo':
/builds/xen-project/patchew/xen/xen/include/xsm/xsm.h:30:5: error:
implicit declaration of function 'alternative_vcall'
[-Werror=implicit-function-declaration]
   30 |     alternative_vcall(xsm_ops.security_domaininfo, d, info);
      |     ^~~~~~~~~~~~~~~~~


You need to drop the XSM guard around including xen/alternative-call.h
in patch 4, especially seeing as as you don't delete it in patch 6 where
CONFIG_XSM formally disappears.  The x86 build only works by chance,
with asm/alternative.h being included implicitly.

~Andrew