[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] xen: CFI hardening for notifier callbacks
commit 22939d3c83da3f94c612b1f49f6f91f11ee3490d Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Fri Oct 29 10:11:55 2021 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Wed Feb 23 15:33:43 2022 +0000 xen: CFI hardening for notifier callbacks Control Flow Integrity schemes use toolchain and optionally hardware support to help protect against call/jump/return oriented programming attacks. Use cf_check to annotate function pointer targets for the toolchain. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/arch/x86/acpi/cpu_idle.c | 2 +- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/cpu/mcheck/mce_intel.c | 2 +- xen/arch/x86/cpu/mwait-idle.c | 4 ++-- xen/arch/x86/cpu/vpmu.c | 2 +- xen/arch/x86/genapic/x2apic.c | 2 +- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/nmi.c | 2 +- xen/arch/x86/percpu.c | 2 +- xen/arch/x86/psr.c | 2 +- xen/arch/x86/smpboot.c | 2 +- xen/common/debugtrace.c | 4 ++-- xen/common/kexec.c | 2 +- xen/common/livepatch.c | 2 +- xen/common/rcupdate.c | 2 +- xen/common/sched/core.c | 2 +- xen/common/sched/cpupool.c | 2 +- xen/common/stop_machine.c | 2 +- xen/common/tasklet.c | 2 +- xen/common/timer.c | 2 +- xen/common/trace.c | 2 +- xen/drivers/cpufreq/cpufreq.c | 2 +- xen/drivers/cpufreq/cpufreq_misc_governors.c | 2 +- xen/drivers/passthrough/x86/hvm.c | 2 +- 24 files changed, 26 insertions(+), 26 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 7902ccce6b..fb47eb9ad6 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -1622,7 +1622,7 @@ bool cpuidle_using_deep_cstate(void) : ACPI_STATE_C1); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index ea86d84481..a449fa0424 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -733,7 +733,7 @@ static int cpu_bank_alloc(unsigned int cpu) return 0; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/mce_intel.c index d63d6083d3..b6da8262e6 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -931,7 +931,7 @@ static int cpu_mcabank_alloc(unsigned int cpu) return -ENOMEM; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index 24d073d315..fe1b7af25f 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -1275,8 +1275,8 @@ static int __init mwait_idle_probe(void) return 0; } -static int mwait_idle_cpu_init(struct notifier_block *nfb, - unsigned long action, void *hcpu) +static int cf_check mwait_idle_cpu_init( + struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu, cstate; struct acpi_processor_power *dev = processor_powers[cpu]; diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index 9fc897dc84..df3c9201b2 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -817,7 +817,7 @@ long cf_check do_xenpmu_op( return ret; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index 9064a0ca46..bd44bb7539 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -187,7 +187,7 @@ static const struct genapic __initconstrel apic_x2apic_cluster = { .send_IPI_self = send_IPI_self_x2apic }; -static int update_clusterinfo( +static int cf_check update_clusterinfo( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 2ae1685d0a..0a19353068 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -117,7 +117,7 @@ static const char __initconst warning_hvm_fep[] = static bool_t __initdata opt_altp2m_enabled = 0; boolean_param("altp2m", opt_altp2m_enabled); -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c index b112921b39..d6018f0c42 100644 --- a/xen/arch/x86/nmi.c +++ b/xen/arch/x86/nmi.c @@ -427,7 +427,7 @@ void setup_apic_nmi_watchdog(void) nmi_active = 1; } -static int cpu_nmi_callback( +static int cf_check cpu_nmi_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c index 0e0b6577ca..eb3ba7bc88 100644 --- a/xen/arch/x86/percpu.c +++ b/xen/arch/x86/percpu.c @@ -63,7 +63,7 @@ static void free_percpu_area(unsigned int cpu) call_rcu(&info->rcu, _free_percpu_area); } -static int cpu_percpu_callback( +static int cf_check cpu_percpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/arch/x86/psr.c b/xen/arch/x86/psr.c index 9a3670afc3..5b9991bd5b 100644 --- a/xen/arch/x86/psr.c +++ b/xen/arch/x86/psr.c @@ -1642,7 +1642,7 @@ static void psr_cpu_fini(unsigned int cpu) free_socket_resources(socket); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { int rc = 0; diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 335129a010..709704d71a 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -1112,7 +1112,7 @@ static int cpu_smpboot_alloc(unsigned int cpu) return rc; } -static int cpu_smpboot_callback( +static int cf_check cpu_smpboot_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/debugtrace.c b/xen/common/debugtrace.c index f3c0fd8aa1..160d00b796 100644 --- a/xen/common/debugtrace.c +++ b/xen/common/debugtrace.c @@ -263,8 +263,8 @@ static void debugtrace_alloc_buffer(struct debugtrace_data **ptr, *ptr = data; } -static int debugtrace_cpu_callback(struct notifier_block *nfb, - unsigned long action, void *hcpu) +static int cf_check debugtrace_cpu_callback( + struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/kexec.c b/xen/common/kexec.c index 36384f782d..3b223cd03d 100644 --- a/xen/common/kexec.c +++ b/xen/common/kexec.c @@ -531,7 +531,7 @@ static int kexec_init_cpu_notes(const unsigned long cpu) return ret; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned long cpu = (unsigned long)hcpu; diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c index 33708b4e23..701efd87a1 100644 --- a/xen/common/livepatch.c +++ b/xen/common/livepatch.c @@ -2124,7 +2124,7 @@ static void livepatch_printall(unsigned char key) spin_unlock(&payload_lock); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c index a5a27af3de..2ec5606de5 100644 --- a/xen/common/rcupdate.c +++ b/xen/common/rcupdate.c @@ -641,7 +641,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, init_timer(&rdp->idle_timer, rcu_idle_timer_handler, rdp, cpu); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 6c1ee7879a..fbd2dfb59b 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -2839,7 +2839,7 @@ void sched_rm_cpu(unsigned int cpu) cpu_schedule_down(cpu); } -static int cpu_schedule_callback( +static int cf_check cpu_schedule_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/sched/cpupool.c b/xen/common/sched/cpupool.c index f26c7f2895..e5cfb03b85 100644 --- a/xen/common/sched/cpupool.c +++ b/xen/common/sched/cpupool.c @@ -985,7 +985,7 @@ void dump_runq(unsigned char key) spin_unlock(&cpupool_lock); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c index 8979d553d6..a122bd4afe 100644 --- a/xen/common/stop_machine.c +++ b/xen/common/stop_machine.c @@ -182,7 +182,7 @@ static void stopmachine_action(void *data) local_irq_enable(); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/tasklet.c b/xen/common/tasklet.c index ac89511a09..1b16bbcdeb 100644 --- a/xen/common/tasklet.c +++ b/xen/common/tasklet.c @@ -214,7 +214,7 @@ void softirq_tasklet_init(struct tasklet *t, void (*func)(void *), void *data) t->is_softirq = 1; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/timer.c b/xen/common/timer.c index 1bb265ceea..b788050ea1 100644 --- a/xen/common/timer.c +++ b/xen/common/timer.c @@ -637,7 +637,7 @@ static void free_percpu_timers(unsigned int cpu) ASSERT(ts->heap == dummy_heap); } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/common/trace.c b/xen/common/trace.c index 61fecc2b2b..b5358508f8 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -79,7 +79,7 @@ static u32 tb_event_mask = TRC_ALL; * i.e., sizeof(_type) * ans >= _x. */ #define fit_to_type(_type, _x) (((_x)+sizeof(_type)-1) / sizeof(_type)) -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index e55e202d5a..a94520ee57 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -632,7 +632,7 @@ static int __init cpufreq_cmdline_parse(const char *s) return rc; } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/drivers/cpufreq/cpufreq_misc_governors.c b/xen/drivers/cpufreq/cpufreq_misc_governors.c index 8343f491da..ad79d0f5d2 100644 --- a/xen/drivers/cpufreq/cpufreq_misc_governors.c +++ b/xen/drivers/cpufreq/cpufreq_misc_governors.c @@ -91,7 +91,7 @@ cpufreq_userspace_handle_option(const char *name, const char *val) return 0; } -static int cpufreq_userspace_cpu_callback( +static int cf_check cpufreq_userspace_cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x86/hvm.c index e5a2c58303..527bd6a56d 100644 --- a/xen/drivers/passthrough/x86/hvm.c +++ b/xen/drivers/passthrough/x86/hvm.c @@ -1046,7 +1046,7 @@ static void dpci_softirq(void) } } -static int cpu_callback( +static int cf_check cpu_callback( struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |