aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/traps.c4
-rw-r--r--arch/x86_64/kernel/nmi.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index 54629bb5893a..029bf94cda7d 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -657,7 +657,7 @@ fastcall void do_nmi(struct pt_regs * regs, long error_code)
657 657
658 ++nmi_count(cpu); 658 ++nmi_count(cpu);
659 659
660 if (!nmi_callback(regs, cpu)) 660 if (!rcu_dereference(nmi_callback)(regs, cpu))
661 default_do_nmi(regs); 661 default_do_nmi(regs);
662 662
663 nmi_exit(); 663 nmi_exit();
@@ -665,7 +665,7 @@ fastcall void do_nmi(struct pt_regs * regs, long error_code)
665 665
666void set_nmi_callback(nmi_callback_t callback) 666void set_nmi_callback(nmi_callback_t callback)
667{ 667{
668 nmi_callback = callback; 668 rcu_assign_pointer(nmi_callback, callback);
669} 669}
670EXPORT_SYMBOL_GPL(set_nmi_callback); 670EXPORT_SYMBOL_GPL(set_nmi_callback);
671 671
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 84cae81fff8b..caf164959e19 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -524,14 +524,14 @@ asmlinkage void do_nmi(struct pt_regs * regs, long error_code)
524 524
525 nmi_enter(); 525 nmi_enter();
526 add_pda(__nmi_count,1); 526 add_pda(__nmi_count,1);
527 if (!nmi_callback(regs, cpu)) 527 if (!rcu_dereference(nmi_callback)(regs, cpu))
528 default_do_nmi(regs); 528 default_do_nmi(regs);
529 nmi_exit(); 529 nmi_exit();
530} 530}
531 531
532void set_nmi_callback(nmi_callback_t callback) 532void set_nmi_callback(nmi_callback_t callback)
533{ 533{
534 nmi_callback = callback; 534 rcu_assign_pointer(nmi_callback, callback);
535} 535}
536 536
537void unset_nmi_callback(void) 537void unset_nmi_callback(void)