Message ID | 20220531150857.19727-4-dpsmith@apertussolutions.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xsm: refactor and optimize policy loading | expand |
On 31.05.2022 17:08, Daniel P. Smith wrote: > @@ -1690,7 +1691,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) > > open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period); > > - if ( opt_watchdog ) > + if ( opt_watchdog ) > nmi_watchdog = NMI_LOCAL_APIC; > > find_smp_config(); Please omit formatting changes to entirely unrelated pieces of code. > @@ -1700,7 +1701,11 @@ void __init noreturn __start_xen(unsigned long mbi_p) > mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges", > RANGESETF_prettyprint_hex); > > - xsm_multiboot_init(module_map, mbi); > + if ( xsm_multiboot_init(module_map, mbi) ) > + warning_add("WARNING: XSM failed to initialize.\n" > + "This has implications on the security of the system,\n" > + "as uncontrolled communications between trusted and\n" > + "untrusted domains may occur.\n"); Uncontrolled communication isn't the only thing that could occur, aiui. So at the very least "e.g." or some such would want adding imo. Now that return values are checked, I think that in addition to what you already do the two function declarations may want decorating with __must_check. Jan
On 6/1/22 02:14, Jan Beulich wrote: > On 31.05.2022 17:08, Daniel P. Smith wrote: >> @@ -1690,7 +1691,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) >> >> open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period); >> >> - if ( opt_watchdog ) >> + if ( opt_watchdog ) >> nmi_watchdog = NMI_LOCAL_APIC; >> >> find_smp_config(); > > Please omit formatting changes to entirely unrelated pieces of code. Ack. this was in simliar vein of the other patches where I cleaned nearby trailing space. >> @@ -1700,7 +1701,11 @@ void __init noreturn __start_xen(unsigned long mbi_p) >> mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges", >> RANGESETF_prettyprint_hex); >> >> - xsm_multiboot_init(module_map, mbi); >> + if ( xsm_multiboot_init(module_map, mbi) ) >> + warning_add("WARNING: XSM failed to initialize.\n" >> + "This has implications on the security of the system,\n" >> + "as uncontrolled communications between trusted and\n" >> + "untrusted domains may occur.\n"); > > Uncontrolled communication isn't the only thing that could occur, aiui. > So at the very least "e.g." or some such would want adding imo. Agreed, this was a reuse of the existing message and honestly I would like to believe this was the original author's attempt at brevity versus writing a detailed message of every implication to the security of the system. > Now that return values are checked, I think that in addition to what > you already do the two function declarations may want decorating with > __must_check. Understood but likely not necessary based on Andy's review suggestion to move these functions to void. v/r, dps
On 07.06.2022 14:14, Daniel P. Smith wrote: > On 6/1/22 02:14, Jan Beulich wrote: >> Now that return values are checked, I think that in addition to what >> you already do the two function declarations may want decorating with >> __must_check. > > Understood but likely not necessary based on Andy's review suggestion to > move these functions to void. Of course - once they return void, they cannot be __must_check. Jan
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index ea1f5ee3d3..6bf71e1064 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -967,11 +967,11 @@ void __init start_xen(unsigned long boot_phys_offset, tasklet_subsys_init(); - if ( xsm_dt_init() != 1 ) - warning_add("WARNING: SILO mode is not enabled.\n" - "It has implications on the security of the system,\n" - "unless the communications have been forbidden between\n" - "untrusted domains.\n"); + if ( xsm_dt_init() ) + warning_add("WARNING: XSM failed to initialize.\n" + "This has implications on the security of the system,\n" + "as uncontrolled communications between trusted and\n" + "untrusted domains may occur.\n"); init_maintenance_interrupt(); init_timer_interrupt(); diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 53a73010e0..ed67b50c9d 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -24,6 +24,7 @@ #include <xen/pfn.h> #include <xen/nodemask.h> #include <xen/virtual_region.h> +#include <xen/warning.h> #include <xen/watchdog.h> #include <public/version.h> #ifdef CONFIG_COMPAT @@ -1690,7 +1691,7 @@ void __init noreturn __start_xen(unsigned long mbi_p) open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period); - if ( opt_watchdog ) + if ( opt_watchdog ) nmi_watchdog = NMI_LOCAL_APIC; find_smp_config(); @@ -1700,7 +1701,11 @@ void __init noreturn __start_xen(unsigned long mbi_p) mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges", RANGESETF_prettyprint_hex); - xsm_multiboot_init(module_map, mbi); + if ( xsm_multiboot_init(module_map, mbi) ) + warning_add("WARNING: XSM failed to initialize.\n" + "This has implications on the security of the system,\n" + "as uncontrolled communications between trusted and\n" + "untrusted domains may occur.\n"); /* * IOMMU-related ACPI table parsing may require some of the system domains diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c index 8f6c3de8a6..6377895e1e 100644 --- a/xen/xsm/xsm_core.c +++ b/xen/xsm/xsm_core.c @@ -10,23 +10,17 @@ * as published by the Free Software Foundation. */ -#include <xen/init.h> #include <xen/errno.h> +#include <xen/hypercall.h> +#include <xen/init.h> #include <xen/lib.h> #include <xen/param.h> - -#include <xen/hypercall.h> +#include <xen/warning.h> #include <xsm/xsm.h> -#ifdef CONFIG_XSM - -#ifdef CONFIG_MULTIBOOT #include <asm/setup.h> -#endif -#ifdef CONFIG_HAS_DEVICE_TREE -#include <asm/setup.h> -#endif +#ifdef CONFIG_XSM #define XSM_FRAMEWORK_VERSION "1.0.1" @@ -190,7 +184,13 @@ int __init xsm_dt_init(void) xfree(policy_buffer); - return ret ?: (xsm_bootparam == XSM_BOOTPARAM_SILO); + if ( xsm_bootparam != XSM_BOOTPARAM_SILO ) + warning_add("WARNING: SILO mode is not enabled.\n" + "It has implications on the security of the system,\n" + "unless the communications have been forbidden between\n" + "untrusted domains.\n"); + + return ret; } /**