xen/xsm: remove unnecessary #define
PATCH 1/3 xen/xsm: remove unnecessary #define
From: root <[email protected]>
this #define is unnecessary since XSM_INLINE is redefined in xsm/dummy.h, so remove it.
---
CC: Daniel De Graaf <[email protected]>
CC: George Dunlap <[email protected]>
CC: Jan Beulich <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Stefano Stabellini <[email protected]>
CC: Tim Deegan <[email protected]>
CC: Wei Liu <[email protected]>
CC: Sergey Dyasli <[email protected]>
CC: Andrew Cooper <[email protected]>
CC: Ming Lu <[email protected]>
v5: move the removal of #define to this new patch.
--- xen/xsm/dummy.c | 1 - 1 file changed, 1 deletion(-)
xen/xsm/dummy.c +0 -1
@@ -11,7 +11,6 @@*/ #define XSM_NO_WRAPPERS -#define XSM_INLINE /* */ #include <xsm/dummy.h> struct xsm_operations dummy_xsm_ops;
Signature · 7 lines
2.18.0 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
PATCH 2/3 xen/xsm: Introduce new boot parameter xsm
Introduce new boot parameter xsm to choose which xsm module is enabled, and set default to dummy. And add new option in Kconfig to choose the default XSM implementation.
---
CC: Daniel De Graaf <[email protected]>
CC: George Dunlap <[email protected]>
CC: Jan Beulich <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Stefano Stabellini <[email protected]>
CC: Tim Deegan <[email protected]>
CC: Wei Liu <[email protected]>
CC: Sergey Dyasli <[email protected]>
CC: Andrew Cooper <[email protected]>
CC: Ming Lu <[email protected]>
v5:
1. wording and style refine.
2. use ASSERT_UNREACHABLE() instead of unreachable printk.
--- docs/misc/xen-command-line.markdown | 13 ++++++++ xen/common/Kconfig | 13 +++++++- xen/xsm/xsm_core.c | 47 ++++++++++++++++++++++++++++- 3 files changed, 71 insertions(+), 2 deletions(-)
docs/misc/xen-command-line.markdown +13 -0
@@ -899,6 +899,19 @@ hardware domain is architecture dependent. Note that specifying zero as domU value means zero, while for dom0 it means to use the default. +### xsm +> `= dummy | flask` + +> Default: `dummy` + +Specify which XSM module should be enabled. This option is only available if +the hypervisor was compiled with XSM support. + +* `dummy`: this is the default choice. Basic restriction for common deployment + (the dummy module) will be applied. It's also used when XSM is compiled out. +* `flask`: this is the policy based access control. To choose this, the + separated option in kconfig must also be enabled. + ### flask > `= permissive | enforcing | late | disabled`
xen/common/Kconfig +12 -1
@@ -116,7 +116,7 @@ config XSM config XSM_FLASK def_bool y - prompt "FLux Advanced Security Kernel support" if EXPERT = "y" + prompt "FLux Advanced Security Kernel support" depends on XSM ---help--- Enables FLASK (FLux Advanced Security Kernel) as the access control
@@ -154,6 +154,17 @@ config XSM_FLASK_POLICY If unsure, say Y. +choice + prompt "Default XSM implementation" + depends on XSM + default XSM_FLASK_DEFAULT if XSM_FLASK + default XSM_DUMMY_DEFAULT + config XSM_DUMMY_DEFAULT + bool "Match non-XSM behavior" + config XSM_FLASK_DEFAULT + bool "FLux Advanced Security Kernel" if XSM_FLASK +endchoice + config LATE_HWDOM bool "Dedicated hardware domain" default n
xen/xsm/xsm_core.c +46 -1
59 lines not on this page · raw message
Signature · 7 lines
2.18.0 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
PATCH 3/3 xen/xsm: Add new SILO mode for XSM
In reply to Xin LiWhen SILO is enabled, there would be no page-sharing or event notifications between unprivileged VMs (no grant tables or event channels).
---
CC: Daniel De Graaf <[email protected]>
CC: George Dunlap <[email protected]>
CC: Jan Beulich <[email protected]>
CC: Konrad Rzeszutek Wilk <[email protected]>
CC: Stefano Stabellini <[email protected]>
CC: Tim Deegan <[email protected]>
CC: Wei Liu <[email protected]>
CC: Sergey Dyasli <[email protected]>
CC: Andrew Cooper <[email protected]>
CC: Ming Lu <[email protected]>
v5:
1. use __maybe_unused instead of __attribute__ ((unused)), and remove unnecessary #ifdef CONFIG_XSM_SILO.
2. rename cur_dom to currd.
3. move the removal of #define in dummy.c to a seperate patch.
4. remove a blank line in silo.c.
--- docs/misc/xen-command-line.markdown | 5 +- xen/common/Kconfig | 15 ++++ xen/include/xsm/dummy.h | 3 +- xen/include/xsm/xsm.h | 6 ++ xen/xsm/Makefile | 1 + xen/xsm/silo.c | 108 ++++++++++++++++++++++++++++ xen/xsm/xsm_core.c | 11 +++ 7 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 xen/xsm/silo.c
docs/misc/xen-command-line.markdown +4 -1
@@ -900,7 +900,7 @@ Note that specifying zero as domU value means zero, while for dom0 it means to use the default. ### xsm -> `= dummy | flask` +> `= dummy | flask | silo` > Default: `dummy`
@@ -911,6 +911,9 @@ the hypervisor was compiled with XSM support. (the dummy module) will be applied. It's also used when XSM is compiled out. * `flask`: this is the policy based access control. To choose this, the separated option in kconfig must also be enabled. +* `silo`: this will deny any unmediated communication channels between + unprivileged VMs. To choose this, the separated option in kconfig must also + be enabled. ### flask > `= permissive | enforcing | late | disabled`
xen/common/Kconfig +15 -0
@@ -154,15 +154,30 @@ config XSM_FLASK_POLICY If unsure, say Y. +config XSM_SILO + def_bool y + prompt "SILO support" + depends on XSM + ---help--- + Enables SILO as the access control mechanism used by the XSM framework. + This is not the default module, add boot parameter xsm=silo to choose + it. This will deny any unmediated communication channels (grant tables + and event channels) between unprivileged VMs. + + If unsure, say Y. + choice prompt "Default XSM implementation" depends on XSM default XSM_FLASK_DEFAULT if XSM_FLASK + default XSM_SILO_DEFAULT if XSM_SILO default XSM_DUMMY_DEFAULT config XSM_DUMMY_DEFAULT bool "Match non-XSM behavior" config XSM_FLASK_DEFAULT bool "FLux Advanced Security Kernel" if XSM_FLASK + config XSM_SILO_DEFAULT + bool "SILO" if XSM_SILO endchoice config LATE_HWDOM
xen/include/xsm/dummy.h +2 -1
@@ -48,7 +48,8 @@ void __xsm_action_mismatch_detected(void);* There is no xsm_default_t argument available, so the value from the assertion * is used to initialize the variable. */ -#define XSM_INLINE /* */ +#define XSM_INLINE __maybe_unused +#define XSM_DEFAULT_ARG /* */ #define XSM_DEFAULT_VOID void#define XSM_ASSERT_ACTION (def) xsm_default_t action = def; (void)action
xen/include/xsm/xsm.h +6 -0
@@ -733,6 +733,12 @@ extern const unsigned char xsm_flask_init_policy[];extern const unsigned int xsm_flask_init_policy_size;#endif +#ifdef CONFIG_XSM_SILO +extern void silo_init (void ); +#else +static inline void silo_init (void ) {} +#endif +#else /* CONFIG_XSM */ #include <xsm/dummy.h>
xen/xsm/Makefile +1 -0
@@ -1,5 +1,6 @@ obj-y += xsm_core.o obj-$(CONFIG_XSM) += xsm_policy.o obj-$(CONFIG_XSM) += dummy.o +obj-$(CONFIG_XSM_SILO) += silo.o subdir-$(CONFIG_XSM_FLASK) += flask
xen/xsm/silo.c new file +108 -0
108 lines not on this page · raw message
xen/xsm/xsm_core.c +11 -0
@@ -34,11 +34,14 @@ struct xsm_operations *xsm_ops;enum xsm_bootparam {XSM_BOOTPARAM_DUMMY ,XSM_BOOTPARAM_FLASK , +XSM_BOOTPARAM_SILO , }; static enum xsm_bootparam __initdata xsm_bootparam =#ifdef CONFIG_XSM_FLASK_DEFAULT XSM_BOOTPARAM_FLASK ; +#elif CONFIG_XSM_SILO_DEFAULT +XSM_BOOTPARAM_SILO ;#else XSM_BOOTPARAM_DUMMY ;#endif
@@ -52,6 +55,10 @@ static int __init parse_xsm_param(const char *s)#ifdef CONFIG_XSM_FLASK else if ( !strcmp(s, "flask") ) xsm_bootparam =XSM_BOOTPARAM_FLASK ; +#endif +#ifdef CONFIG_XSM_SILO + else if ( !strcmp(s, "silo") ) + xsm_bootparam =XSM_BOOTPARAM_SILO ;#endif else {
@@ -99,6 +106,10 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)flask_init (policy_buffer, policy_size);break ; +case XSM_BOOTPARAM_SILO : +silo_init (); +break ; +default :ASSERT_UNREACHABLE ();break ;
Signature · 7 lines
2.18.0 _______________________________________________ Xen-devel mailing list [email protected] https://lists.xenproject.org/mailman/listinfo/xen-devel
Quoted 5 lines
Quoted 1 line
Quoted 1 line · On 08.10.18 at 12:59, <[email protected]> wrote:
From: root <[email protected]>
this #define is unnecessary since
XSM_INLINEis redefined inxsm/dummy.h, so remove it.
And it is actually a latent risk of build breakage, if the other one got updated without this one following suit.
Quoted 1 line
Signed-off-by Xin Li <[email protected]>
Jan
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Quoted 1 line · Xin Li
From: root <[email protected]>
This needs to be deleted while committing.
Wei.
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel