[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] xsm/dummy: harden against speculative abuse
commit 994f6478a48a60e3b407c7defc2d36a80f880b04 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Jan 7 15:11:25 2021 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Jan 7 15:11:25 2021 +0100 xsm/dummy: harden against speculative abuse First of all don't open-code is_control_domain(), which is already suitably using evaluate_nospec(). Then also apply this construct to the other paths of xsm_default_action(). Also guard two paths not using this function. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Wei Liu <wl@xxxxxxx> --- xen/include/xsm/dummy.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index 7ae3c40eb5..fa40e880ba 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -76,20 +76,20 @@ static always_inline int xsm_default_action( case XSM_HOOK: return 0; case XSM_TARGET: - if ( src == target ) + if ( evaluate_nospec(src == target) ) { return 0; case XSM_XS_PRIV: - if ( is_xenstore_domain(src) ) + if ( evaluate_nospec(is_xenstore_domain(src)) ) return 0; } /* fall through */ case XSM_DM_PRIV: - if ( target && src->target == target ) + if ( target && evaluate_nospec(src->target == target) ) return 0; /* fall through */ case XSM_PRIV: - if ( src->is_privileged ) + if ( is_control_domain(src) ) return 0; return -EPERM; default: @@ -656,7 +656,7 @@ static XSM_INLINE int xsm_mmu_update(XSM_DEFAULT_ARG struct domain *d, struct do XSM_ASSERT_ACTION(XSM_TARGET); if ( f != dom_io ) rc = xsm_default_action(action, d, f); - if ( t && !rc ) + if ( evaluate_nospec(t) && !rc ) rc = xsm_default_action(action, d, t); return rc; } @@ -750,6 +750,7 @@ static XSM_INLINE int xsm_xen_version (XSM_DEFAULT_ARG uint32_t op) case XENVER_platform_parameters: case XENVER_get_features: /* These sub-ops ignore the permission checks and return data. */ + block_speculation(); return 0; case XENVER_extraversion: case XENVER_compile_info: -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |