[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 21/28] xen/domctl: wrap xsm_set_target() with CONFIG_MGMT_HYPERCALLS
Function xsm_set_target() is only invoked under XEN_DOMCTL_set_target domctl-op, and shall be wrapped with CONFIG_MGMT_HYPERCALLS. Otherwise it will become unreachable codes when MGMT_HYPERCALLS=n, and hence violating Misra 2.1. Signed-off-by: Penny Zheng <Penny.Zheng@xxxxxxx> --- v1 -> v2: - adapt to changes of "unify DOMCTL to MGMT_HYPERCALLS" --- v2 -> v3 - wrap the whole inline function xsm_set_target() - add missing wrapping in xsm/dummy.h - address "violating Misra rule 2.1" in commit message --- xen/include/xsm/dummy.h | 2 ++ xen/include/xsm/xsm.h | 4 +++- xen/xsm/dummy.c | 2 +- xen/xsm/flask/hooks.c | 4 ++-- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index a5deb8a975..a598d74f1f 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -158,12 +158,14 @@ static XSM_INLINE int cf_check xsm_sysctl_scheduler_op(XSM_DEFAULT_ARG int cmd) } #endif /* CONFIG_MGMT_HYPERCALLS */ +#ifdef CONFIG_MGMT_HYPERCALLS static XSM_INLINE int cf_check xsm_set_target( XSM_DEFAULT_ARG struct domain *d, struct domain *e) { XSM_ASSERT_ACTION(XSM_HOOK); return xsm_default_action(action, current->domain, NULL); } +#endif /* CONFIG_MGMT_HYPERCALLS */ static XSM_INLINE int cf_check xsm_domctl( XSM_DEFAULT_ARG struct domain *d, unsigned int cmd, uint32_t ssidref) diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index ee43002fdb..154a4b8a92 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -59,8 +59,8 @@ struct xsm_ops { #ifdef CONFIG_MGMT_HYPERCALLS int (*domctl_scheduler_op)(struct domain *d, int op); int (*sysctl_scheduler_op)(int op); -#endif int (*set_target)(struct domain *d, struct domain *e); +#endif int (*domctl)(struct domain *d, unsigned int cmd, uint32_t ssidref); #ifdef CONFIG_MGMT_HYPERCALLS int (*sysctl)(int cmd); @@ -255,11 +255,13 @@ static inline int xsm_sysctl_scheduler_op(xsm_default_t def, int cmd) } #endif +#ifdef CONFIG_MGMT_HYPERCALLS static inline int xsm_set_target( xsm_default_t def, struct domain *d, struct domain *e) { return alternative_call(xsm_ops.set_target, d, e); } +#endif /* CONFIG_MGMT_HYPERCALLS */ static inline int xsm_domctl(xsm_default_t def, struct domain *d, unsigned int cmd, uint32_t ssidref) diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c index 7cf00ce37e..9774bb3bdb 100644 --- a/xen/xsm/dummy.c +++ b/xen/xsm/dummy.c @@ -21,8 +21,8 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops = { #ifdef CONFIG_MGMT_HYPERCALLS .domctl_scheduler_op = xsm_domctl_scheduler_op, .sysctl_scheduler_op = xsm_sysctl_scheduler_op, -#endif .set_target = xsm_set_target, +#endif .domctl = xsm_domctl, #ifdef CONFIG_MGMT_HYPERCALLS .sysctl = xsm_sysctl, diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c index ca07585450..9b63c516e6 100644 --- a/xen/xsm/flask/hooks.c +++ b/xen/xsm/flask/hooks.c @@ -641,7 +641,6 @@ static int cf_check flask_sysctl_scheduler_op(int op) return avc_unknown_permission("sysctl_scheduler_op", op); } } -#endif /* CONFIG_MGMT_HYPERCALLS */ static int cf_check flask_set_target(struct domain *d, struct domain *t) { @@ -666,6 +665,7 @@ static int cf_check flask_set_target(struct domain *d, struct domain *t) &dsec->target_sid); return rc; } +#endif /* CONFIG_MGMT_HYPERCALLS */ static int cf_check flask_domctl(struct domain *d, unsigned int cmd, uint32_t ssidref) @@ -1888,8 +1888,8 @@ static const struct xsm_ops __initconst_cf_clobber flask_ops = { #ifdef CONFIG_MGMT_HYPERCALLS .domctl_scheduler_op = flask_domctl_scheduler_op, .sysctl_scheduler_op = flask_sysctl_scheduler_op, -#endif .set_target = flask_set_target, +#endif .domctl = flask_domctl, #ifdef CONFIG_MGMT_HYPERCALLS .sysctl = flask_sysctl, -- 2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |