1 /*
2 * This work is based on the LSM implementation in Linux 2.6.13.4.
3 *
4 * Author: George Coker, <gscoker@alpha.ncsc.mil>
5 *
6 * Contributors: Michael LeMay, <mdlemay@epoch.ncsc.mil>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2,
10 * as published by the Free Software Foundation.
11 */
12
13 #define XSM_NO_WRAPPERS
14 #define XSM_INLINE /* */
15 #include <xsm/dummy.h>
16
17 struct xsm_operations dummy_xsm_ops;
18
19 #define set_to_dummy_if_null(ops, function) \
20 do { \
21 if ( !ops->function ) \
22 { \
23 ops->function = xsm_##function; \
24 if (ops != &dummy_xsm_ops) \
25 dprintk(XENLOG_DEBUG, "Had to override the " #function \
26 " security operation with the dummy one.\n"); \
27 } \
28 } while (0)
29
xsm_fixup_ops(struct xsm_operations * ops)30 void __init xsm_fixup_ops (struct xsm_operations *ops)
31 {
32 set_to_dummy_if_null(ops, security_domaininfo);
33 set_to_dummy_if_null(ops, domain_create);
34 set_to_dummy_if_null(ops, getdomaininfo);
35 set_to_dummy_if_null(ops, domctl_scheduler_op);
36 set_to_dummy_if_null(ops, sysctl_scheduler_op);
37 set_to_dummy_if_null(ops, set_target);
38 set_to_dummy_if_null(ops, domctl);
39 set_to_dummy_if_null(ops, sysctl);
40 set_to_dummy_if_null(ops, readconsole);
41
42 set_to_dummy_if_null(ops, evtchn_unbound);
43 set_to_dummy_if_null(ops, evtchn_interdomain);
44 set_to_dummy_if_null(ops, evtchn_close_post);
45 set_to_dummy_if_null(ops, evtchn_send);
46 set_to_dummy_if_null(ops, evtchn_status);
47 set_to_dummy_if_null(ops, evtchn_reset);
48
49 set_to_dummy_if_null(ops, grant_mapref);
50 set_to_dummy_if_null(ops, grant_unmapref);
51 set_to_dummy_if_null(ops, grant_setup);
52 set_to_dummy_if_null(ops, grant_transfer);
53 set_to_dummy_if_null(ops, grant_copy);
54 set_to_dummy_if_null(ops, grant_query_size);
55
56 set_to_dummy_if_null(ops, alloc_security_domain);
57 set_to_dummy_if_null(ops, free_security_domain);
58 set_to_dummy_if_null(ops, alloc_security_evtchn);
59 set_to_dummy_if_null(ops, free_security_evtchn);
60 set_to_dummy_if_null(ops, show_security_evtchn);
61 set_to_dummy_if_null(ops, init_hardware_domain);
62
63 set_to_dummy_if_null(ops, get_pod_target);
64 set_to_dummy_if_null(ops, set_pod_target);
65
66 set_to_dummy_if_null(ops, memory_exchange);
67 set_to_dummy_if_null(ops, memory_adjust_reservation);
68 set_to_dummy_if_null(ops, memory_stat_reservation);
69 set_to_dummy_if_null(ops, memory_pin_page);
70 set_to_dummy_if_null(ops, claim_pages);
71
72 set_to_dummy_if_null(ops, console_io);
73
74 set_to_dummy_if_null(ops, profile);
75
76 set_to_dummy_if_null(ops, kexec);
77 set_to_dummy_if_null(ops, schedop_shutdown);
78
79 set_to_dummy_if_null(ops, show_irq_sid);
80 set_to_dummy_if_null(ops, map_domain_pirq);
81 set_to_dummy_if_null(ops, map_domain_irq);
82 set_to_dummy_if_null(ops, unmap_domain_pirq);
83 set_to_dummy_if_null(ops, unmap_domain_irq);
84 set_to_dummy_if_null(ops, bind_pt_irq);
85 set_to_dummy_if_null(ops, unbind_pt_irq);
86 set_to_dummy_if_null(ops, irq_permission);
87 set_to_dummy_if_null(ops, iomem_permission);
88 set_to_dummy_if_null(ops, iomem_mapping);
89 set_to_dummy_if_null(ops, pci_config_permission);
90 set_to_dummy_if_null(ops, get_vnumainfo);
91
92 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_PCI)
93 set_to_dummy_if_null(ops, get_device_group);
94 set_to_dummy_if_null(ops, assign_device);
95 set_to_dummy_if_null(ops, deassign_device);
96 #endif
97
98 #if defined(CONFIG_HAS_PASSTHROUGH) && defined(CONFIG_HAS_DEVICE_TREE)
99 set_to_dummy_if_null(ops, assign_dtdevice);
100 set_to_dummy_if_null(ops, deassign_dtdevice);
101 #endif
102
103 set_to_dummy_if_null(ops, resource_plug_core);
104 set_to_dummy_if_null(ops, resource_unplug_core);
105 set_to_dummy_if_null(ops, resource_plug_pci);
106 set_to_dummy_if_null(ops, resource_unplug_pci);
107 set_to_dummy_if_null(ops, resource_setup_pci);
108 set_to_dummy_if_null(ops, resource_setup_gsi);
109 set_to_dummy_if_null(ops, resource_setup_misc);
110
111 set_to_dummy_if_null(ops, page_offline);
112 set_to_dummy_if_null(ops, tmem_op);
113 set_to_dummy_if_null(ops, hvm_param);
114 set_to_dummy_if_null(ops, hvm_control);
115 set_to_dummy_if_null(ops, hvm_param_nested);
116 set_to_dummy_if_null(ops, hvm_param_altp2mhvm);
117 set_to_dummy_if_null(ops, hvm_altp2mhvm_op);
118
119 set_to_dummy_if_null(ops, do_xsm_op);
120 #ifdef CONFIG_COMPAT
121 set_to_dummy_if_null(ops, do_compat_op);
122 #endif
123
124 set_to_dummy_if_null(ops, add_to_physmap);
125 set_to_dummy_if_null(ops, remove_from_physmap);
126 set_to_dummy_if_null(ops, map_gmfn_foreign);
127
128 set_to_dummy_if_null(ops, vm_event_control);
129
130 #ifdef CONFIG_HAS_MEM_ACCESS
131 set_to_dummy_if_null(ops, mem_access);
132 #endif
133
134 #ifdef CONFIG_HAS_MEM_PAGING
135 set_to_dummy_if_null(ops, mem_paging);
136 #endif
137
138 #ifdef CONFIG_HAS_MEM_SHARING
139 set_to_dummy_if_null(ops, mem_sharing);
140 #endif
141
142 set_to_dummy_if_null(ops, platform_op);
143 #ifdef CONFIG_X86
144 set_to_dummy_if_null(ops, do_mca);
145 set_to_dummy_if_null(ops, shadow_control);
146 set_to_dummy_if_null(ops, mem_sharing_op);
147 set_to_dummy_if_null(ops, apic);
148 set_to_dummy_if_null(ops, machine_memory_map);
149 set_to_dummy_if_null(ops, domain_memory_map);
150 set_to_dummy_if_null(ops, mmu_update);
151 set_to_dummy_if_null(ops, mmuext_op);
152 set_to_dummy_if_null(ops, update_va_mapping);
153 set_to_dummy_if_null(ops, priv_mapping);
154 set_to_dummy_if_null(ops, ioport_permission);
155 set_to_dummy_if_null(ops, ioport_mapping);
156 set_to_dummy_if_null(ops, pmu_op);
157 set_to_dummy_if_null(ops, dm_op);
158 #endif
159 set_to_dummy_if_null(ops, xen_version);
160 }
161