[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 12/17] xen/xsm: remove .xsm_initcall.init section
On 20/06/16 15:04, Daniel De Graaf wrote: > Since FLASK is the only implementation of XSM hooks in Xen, using an > iterated initcall dispatch for setup is overly complex. Change this to > a direct function call to a globally visible function; if additional XSM > hooks are added in the future, a switching mechanism will be needed > regardless, and that can be placed in xsm_core.c. > > Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> (CC'ing ARM maintainers) > --- > xen/arch/arm/xen.lds.S | 5 ----- > xen/arch/x86/xen.lds.S | 5 ----- > xen/include/xsm/xsm.h | 16 ++++++++-------- > xen/xsm/flask/hooks.c | 4 +--- > xen/xsm/xsm_core.c | 13 +------------ > 5 files changed, 10 insertions(+), 33 deletions(-) > > diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S > index 76982b2..8320381 100644 > --- a/xen/arch/arm/xen.lds.S > +++ b/xen/arch/arm/xen.lds.S > @@ -162,11 +162,6 @@ SECTIONS > *(.initcall1.init) > __initcall_end = .; > } :text > - .xsm_initcall.init : { > - __xsm_initcall_start = .; > - *(.xsm_initcall.init) > - __xsm_initcall_end = .; > - } :text > __init_end_efi = .; > . = ALIGN(STACK_SIZE); > __init_end = .; > diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S > index a43b29d..dcbb8fe 100644 > --- a/xen/arch/x86/xen.lds.S > +++ b/xen/arch/x86/xen.lds.S > @@ -190,11 +190,6 @@ SECTIONS > *(.initcall1.init) > __initcall_end = .; > } :text > - .xsm_initcall.init : { > - __xsm_initcall_start = .; > - *(.xsm_initcall.init) > - __xsm_initcall_end = .; > - } :text > . = ALIGN(PAGE_SIZE); > __init_end = .; > > diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h > index 8ed8ee5..0d525ec 100644 > --- a/xen/include/xsm/xsm.h > +++ b/xen/include/xsm/xsm.h > @@ -46,14 +46,6 @@ typedef enum xsm_default xsm_default_t; > extern char *policy_buffer; > extern u32 policy_size; > > -typedef void (*xsm_initcall_t)(void); > - > -extern xsm_initcall_t __xsm_initcall_start[], __xsm_initcall_end[]; > - > -#define xsm_initcall(fn) \ > - static xsm_initcall_t __initcall_##fn \ > - __used_section(".xsm_initcall.init") = fn > - > struct xsm_operations { > void (*security_domaininfo) (struct domain *d, > struct xen_domctl_getdomaininfo > *info); > @@ -763,6 +755,14 @@ extern int unregister_xsm(struct xsm_operations *ops); > extern struct xsm_operations dummy_xsm_ops; > extern void xsm_fixup_ops(struct xsm_operations *ops); > > +#ifdef CONFIG_FLASK > +extern void flask_init(void); > +#else > +static inline void flask_init(void) > +{ > +} > +#endif > + > #else /* CONFIG_XSM */ > > #include <xsm/dummy.h> > diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c > index 543406b..d632b0e 100644 > --- a/xen/xsm/flask/hooks.c > +++ b/xen/xsm/flask/hooks.c > @@ -1817,7 +1817,7 @@ static struct xsm_operations flask_ops = { > .xen_version = flask_xen_version, > }; > > -static __init void flask_init(void) > +__init void flask_init(void) > { > int ret = -ENOENT; > > @@ -1860,8 +1860,6 @@ static __init void flask_init(void) > printk(XENLOG_INFO "Flask: Starting in permissive mode.\n"); > } > > -xsm_initcall(flask_init); > - > /* > * Local variables: > * mode: C > diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c > index 634ec98..3487742 100644 > --- a/xen/xsm/xsm_core.c > +++ b/xen/xsm/xsm_core.c > @@ -36,17 +36,6 @@ static inline int verify(struct xsm_operations *ops) > return 0; > } > > -static void __init do_xsm_initcalls(void) > -{ > - xsm_initcall_t *call; > - call = __xsm_initcall_start; > - while ( call < __xsm_initcall_end ) > - { > - (*call) (); > - call++; > - } > -} > - > static int __init xsm_core_init(void) > { > if ( verify(&dummy_xsm_ops) ) > @@ -57,7 +46,7 @@ static int __init xsm_core_init(void) > } > > xsm_ops = &dummy_xsm_ops; > - do_xsm_initcalls(); > + flask_init(); > > return 0; > } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |