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