diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-08-31 11:21:35 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-08-31 11:21:35 +0100 |
commit | d046f361dc937d8fc179cc2da168f571726cb5a0 (patch) | |
tree | 578473169c1d081d7e3ed825d926377e4b8b9226 /xen/xsm/dummy.c | |
parent | 3d030c1164e2c7bfc4873368e14bae9cc0e23e16 (diff) | |
download | xen-d046f361dc937d8fc179cc2da168f571726cb5a0.tar.gz xen-d046f361dc937d8fc179cc2da168f571726cb5a0.tar.bz2 xen-d046f361dc937d8fc179cc2da168f571726cb5a0.zip |
Xen Security Modules: XSM
Signed-off-by: George Coker <gscoker@alpha.ncsc.mil>
Diffstat (limited to 'xen/xsm/dummy.c')
-rw-r--r-- | xen/xsm/dummy.c | 488 |
1 files changed, 488 insertions, 0 deletions
diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c new file mode 100644 index 0000000000..c572f67799 --- /dev/null +++ b/xen/xsm/dummy.c @@ -0,0 +1,488 @@ +/* + * This work is based on the LSM implementation in Linux 2.6.13.4. + * + * Author: George Coker, <gscoker@alpha.ncsc.mil> + * + * Contributors: Michael LeMay, <mdlemay@epoch.ncsc.mil> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + */ + +#include <xen/sched.h> +#include <xsm/xsm.h> + +static void dummy_security_domaininfo(struct domain *d, + struct xen_domctl_getdomaininfo *info) +{ + return; +} + +static int dummy_setvcpucontext(struct domain *d) +{ + return 0; +} + +static int dummy_pausedomain (struct domain *d) +{ + return 0; +} + +static int dummy_unpausedomain (struct domain *d) +{ + return 0; +} + +static int dummy_resumedomain (struct domain *d) +{ + return 0; +} + +static int dummy_domain_create(struct domain *d, u32 ssidref) +{ + return 0; +} + +static int dummy_max_vcpus(struct domain *d) +{ + return 0; +} + +static int dummy_destroydomain (struct domain *d) +{ + return 0; +} + +static int dummy_vcpuaffinity (int cmd, struct domain *d) +{ + return 0; +} + +static int dummy_scheduler (struct domain *d) +{ + return 0; +} + +static int dummy_getdomaininfo (struct domain *d) +{ + return 0; +} + +static int dummy_getvcpucontext (struct domain *d) +{ + return 0; +} + +static int dummy_getvcpuinfo (struct domain *d) +{ + return 0; +} + +static int dummy_domain_settime (struct domain *d) +{ + return 0; +} + +static int dummy_tbufcontrol (void) +{ + return 0; +} + +static int dummy_readconsole (uint32_t clear) +{ + return 0; +} + +static int dummy_sched_id (void) +{ + return 0; +} + +static int dummy_setdomainmaxmem (struct domain *d) +{ + return 0; +} + +static int dummy_setdomainhandle (struct domain *d) +{ + return 0; +} + +static int dummy_setdebugging (struct domain *d) +{ + return 0; +} + +static int dummy_irq_permission (struct domain *d, uint8_t pirq, uint8_t access) +{ + return 0; +} + +static int dummy_iomem_permission (struct domain *d, unsigned long mfn, + uint8_t access) +{ + return 0; +} + +static int dummy_perfcontrol (void) +{ + return 0; +} + +static int dummy_alloc_security_domain (struct domain *d) +{ + return 0; +} + +static void dummy_free_security_domain (struct domain *d) +{ + return; +} + +static int dummy_grant_mapref (struct domain *d1, struct domain *d2, + uint32_t flags) +{ + return 0; +} + +static int dummy_grant_unmapref (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_grant_setup (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_grant_transfer (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_grant_copy (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_grant_query_size (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_translate_gpfn_list (struct domain *d, unsigned long mfn) +{ + return 0; +} + +static int dummy_memory_adjust_reservation (struct domain *d1, + struct domain *d2) +{ + return 0; +} + +static int dummy_memory_stat_reservation (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_update_va_mapping (struct domain *d, l1_pgentry_t pte) +{ + return 0; +} + +static int dummy_console_io (struct domain *d, int cmd) +{ + return 0; +} + +static int dummy_profile (struct domain *d, int op) +{ + return 0; +} + +static int dummy_kexec (void) +{ + return 0; +} + +static int dummy_schedop_shutdown (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_memory_pin_page(struct domain *d, struct page_info *page) +{ + return 0; +} + +static int dummy_evtchn_unbound (struct domain *d, struct evtchn *chn, + domid_t id2) +{ + return 0; +} + +static int dummy_evtchn_interdomain (struct domain *d1, struct evtchn + *chan1, struct domain *d2, struct evtchn *chan2) +{ + return 0; +} + +static void dummy_evtchn_close_post (struct evtchn *chn) +{ + return; +} + +static int dummy_evtchn_send (struct domain *d, struct evtchn *chn) +{ + return 0; +} + +static int dummy_evtchn_status (struct domain *d, struct evtchn *chn) +{ + return 0; +} + +static int dummy_evtchn_reset (struct domain *d1, struct domain *d2) +{ + return 0; +} + +static int dummy_alloc_security_evtchn (struct evtchn *chn) +{ + return 0; +} + +static void dummy_free_security_evtchn (struct evtchn *chn) +{ + return; +} + +static void dummy_complete_init (struct domain *d) +{ + return; +} + +static long dummy___do_xsm_op(XEN_GUEST_HANDLE(xsm_op_t) op) +{ + return -ENOSYS; +} + +#ifdef CONFIG_X86 +static int dummy_shadow_control (struct domain *d, uint32_t op) +{ + return 0; +} + +static int dummy_ioport_permission (struct domain *d, uint32_t ioport, + uint8_t access) +{ + return 0; +} + +static int dummy_getpageframeinfo (struct page_info *page) +{ + return 0; +} + +static int dummy_getmemlist (struct domain *d) +{ + return 0; +} + +static int dummy_hypercall_init (struct domain *d) +{ + return 0; +} + +static int dummy_hvmcontext (struct domain *d, uint32_t cmd) +{ + return 0; +} + +static int dummy_address_size (struct domain *d, uint32_t cmd) +{ + return 0; +} + +static int dummy_hvm_param (struct domain *d, unsigned long op) +{ + return 0; +} + +static int dummy_hvm_set_pci_intx_level (struct domain *d) +{ + return 0; +} + +static int dummy_hvm_set_isa_irq_level (struct domain *d) +{ + return 0; +} + +static int dummy_hvm_set_pci_link_route (struct domain *d) +{ + return 0; +} + +static int dummy_apic (struct domain *d, int cmd) +{ + return 0; +} + +static int dummy_assign_vector (struct domain *d, uint32_t pirq) +{ + return 0; +} + +static int dummy_xen_settime (void) +{ + return 0; +} + +static int dummy_memtype (uint32_t access) +{ + return 0; +} + +static int dummy_microcode (void) +{ + return 0; +} + +static int dummy_physinfo (void) +{ + return 0; +} + +static int dummy_platform_quirk (uint32_t quirk) +{ + return 0; +} + +static int dummy_machine_memory_map (void) +{ + return 0; +} + +static int dummy_domain_memory_map (struct domain *d) +{ + return 0; +} + +static int dummy_mmu_normal_update (struct domain *d, intpte_t fpte) +{ + return 0; +} + +static int dummy_mmu_machphys_update (struct domain *d, unsigned long mfn) +{ + return 0; +} + +static int dummy_add_to_physmap (struct domain *d1, struct domain *d2) +{ + return 0; +} +#endif + +struct xsm_operations dummy_xsm_ops; + +#define set_to_dummy_if_null(ops, function) \ + do { \ + if ( !ops->function ) \ + { \ + ops->function = dummy_##function; \ + dprintk(XENLOG_DEBUG, "Had to override the " #function \ + " security operation with the dummy one.\n"); \ + } \ + } while (0) + +void xsm_fixup_ops (struct xsm_operations *ops) +{ + set_to_dummy_if_null(ops, security_domaininfo); + set_to_dummy_if_null(ops, setvcpucontext); + set_to_dummy_if_null(ops, pausedomain); + set_to_dummy_if_null(ops, unpausedomain); + set_to_dummy_if_null(ops, resumedomain); + set_to_dummy_if_null(ops, domain_create); + set_to_dummy_if_null(ops, max_vcpus); + set_to_dummy_if_null(ops, destroydomain); + set_to_dummy_if_null(ops, vcpuaffinity); + set_to_dummy_if_null(ops, scheduler); + set_to_dummy_if_null(ops, getdomaininfo); + set_to_dummy_if_null(ops, getvcpucontext); + set_to_dummy_if_null(ops, getvcpuinfo); + set_to_dummy_if_null(ops, domain_settime); + set_to_dummy_if_null(ops, tbufcontrol); + set_to_dummy_if_null(ops, readconsole); + set_to_dummy_if_null(ops, sched_id); + set_to_dummy_if_null(ops, setdomainmaxmem); + set_to_dummy_if_null(ops, setdomainhandle); + set_to_dummy_if_null(ops, setdebugging); + set_to_dummy_if_null(ops, irq_permission); + set_to_dummy_if_null(ops, iomem_permission); + set_to_dummy_if_null(ops, perfcontrol); + + set_to_dummy_if_null(ops, evtchn_unbound); + set_to_dummy_if_null(ops, evtchn_interdomain); + set_to_dummy_if_null(ops, evtchn_close_post); + set_to_dummy_if_null(ops, evtchn_send); + set_to_dummy_if_null(ops, evtchn_status); + set_to_dummy_if_null(ops, evtchn_reset); + + set_to_dummy_if_null(ops, grant_mapref); + set_to_dummy_if_null(ops, grant_unmapref); + set_to_dummy_if_null(ops, grant_setup); + set_to_dummy_if_null(ops, grant_transfer); + set_to_dummy_if_null(ops, grant_copy); + set_to_dummy_if_null(ops, grant_query_size); + + set_to_dummy_if_null(ops, alloc_security_domain); + set_to_dummy_if_null(ops, free_security_domain); + set_to_dummy_if_null(ops, alloc_security_evtchn); + set_to_dummy_if_null(ops, free_security_evtchn); + + set_to_dummy_if_null(ops, translate_gpfn_list); + set_to_dummy_if_null(ops, memory_adjust_reservation); + set_to_dummy_if_null(ops, memory_stat_reservation); + set_to_dummy_if_null(ops, memory_pin_page); + set_to_dummy_if_null(ops, update_va_mapping); + + set_to_dummy_if_null(ops, console_io); + + set_to_dummy_if_null(ops, profile); + + set_to_dummy_if_null(ops, kexec); + set_to_dummy_if_null(ops, schedop_shutdown); + + set_to_dummy_if_null(ops, __do_xsm_op); + set_to_dummy_if_null(ops, complete_init); + +#ifdef CONFIG_X86 + set_to_dummy_if_null(ops, shadow_control); + set_to_dummy_if_null(ops, ioport_permission); + set_to_dummy_if_null(ops, getpageframeinfo); + set_to_dummy_if_null(ops, getmemlist); + set_to_dummy_if_null(ops, hypercall_init); + set_to_dummy_if_null(ops, hvmcontext); + set_to_dummy_if_null(ops, address_size); + set_to_dummy_if_null(ops, hvm_param); + set_to_dummy_if_null(ops, hvm_set_pci_intx_level); + set_to_dummy_if_null(ops, hvm_set_isa_irq_level); + set_to_dummy_if_null(ops, hvm_set_pci_link_route); + set_to_dummy_if_null(ops, apic); + set_to_dummy_if_null(ops, assign_vector); + set_to_dummy_if_null(ops, xen_settime); + set_to_dummy_if_null(ops, memtype); + set_to_dummy_if_null(ops, microcode); + set_to_dummy_if_null(ops, physinfo); + set_to_dummy_if_null(ops, platform_quirk); + set_to_dummy_if_null(ops, machine_memory_map); + set_to_dummy_if_null(ops, domain_memory_map); + set_to_dummy_if_null(ops, mmu_normal_update); + set_to_dummy_if_null(ops, mmu_machphys_update); + set_to_dummy_if_null(ops, add_to_physmap); +#endif +} |