diff options
author | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2013-01-11 10:10:21 +0000 |
---|---|---|
committer | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2013-01-11 10:10:21 +0000 |
commit | 7a1db44b1246bcd320f932e65ae916158a04027a (patch) | |
tree | 083855c22964f68592b3e6d37d6d49c3ce2ab314 /xen/include/xsm | |
parent | 996cf47b8081fc6b2efd4fa9a69f6b77028719e6 (diff) | |
download | xen-7a1db44b1246bcd320f932e65ae916158a04027a.tar.gz xen-7a1db44b1246bcd320f932e65ae916158a04027a.tar.bz2 xen-7a1db44b1246bcd320f932e65ae916158a04027a.zip |
xen: convert do_sysctl to use XSM
The xsm_sysctl hook now covers every sysctl, in addition to the more
fine-grained XSM hooks in most sub-functions.
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/include/xsm')
-rw-r--r-- | xen/include/xsm/dummy.h | 7 | ||||
-rw-r--r-- | xen/include/xsm/xsm.h | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h index 93b1148bfd..b335bd9565 100644 --- a/xen/include/xsm/dummy.h +++ b/xen/include/xsm/dummy.h @@ -106,6 +106,13 @@ static XSM_INLINE int xsm_domctl(struct domain *d, int cmd) return 0; } +static XSM_INLINE int xsm_sysctl(int cmd) +{ + if ( !IS_PRIV(current->domain) ) + return -EPERM; + return 0; +} + static XSM_INLINE int xsm_set_virq_handler(struct domain *d, uint32_t virq) { return 0; diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h index 662f233b1f..75c27bbcb4 100644 --- a/xen/include/xsm/xsm.h +++ b/xen/include/xsm/xsm.h @@ -58,6 +58,7 @@ struct xsm_operations { int (*domain_settime) (struct domain *d); int (*set_target) (struct domain *d, struct domain *e); int (*domctl) (struct domain *d, int cmd); + int (*sysctl) (int cmd); int (*set_virq_handler) (struct domain *d, uint32_t virq); int (*tbufcontrol) (void); int (*readconsole) (uint32_t clear); @@ -266,6 +267,11 @@ static inline int xsm_domctl (struct domain *d, int cmd) return xsm_ops->domctl(d, cmd); } +static inline int xsm_sysctl (int cmd) +{ + return xsm_ops->sysctl(cmd); +} + static inline int xsm_set_virq_handler (struct domain *d, uint32_t virq) { return xsm_ops->set_virq_handler(d, virq); |