aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/nmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/nmi.c')
-rw-r--r--arch/s390/kernel/nmi.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c
index 210e1285f75a..d75c42f4147d 100644
--- a/arch/s390/kernel/nmi.c
+++ b/arch/s390/kernel/nmi.c
@@ -53,8 +53,12 @@ void s390_handle_mcck(void)
53 */ 53 */
54 local_irq_save(flags); 54 local_irq_save(flags);
55 local_mcck_disable(); 55 local_mcck_disable();
56 mcck = __get_cpu_var(cpu_mcck); 56 /*
57 memset(&__get_cpu_var(cpu_mcck), 0, sizeof(struct mcck_struct)); 57 * Ummm... Does this make sense at all? Copying the percpu struct
58 * and then zapping it one statement later?
59 */
60 memcpy(&mcck, this_cpu_ptr(&cpu_mcck), sizeof(mcck));
61 memset(&mcck, 0, sizeof(struct mcck_struct));
58 clear_cpu_flag(CIF_MCCK_PENDING); 62 clear_cpu_flag(CIF_MCCK_PENDING);
59 local_mcck_enable(); 63 local_mcck_enable();
60 local_irq_restore(flags); 64 local_irq_restore(flags);
@@ -253,7 +257,7 @@ void notrace s390_do_machine_check(struct pt_regs *regs)
253 nmi_enter(); 257 nmi_enter();
254 inc_irq_stat(NMI_NMI); 258 inc_irq_stat(NMI_NMI);
255 mci = (struct mci *) &S390_lowcore.mcck_interruption_code; 259 mci = (struct mci *) &S390_lowcore.mcck_interruption_code;
256 mcck = &__get_cpu_var(cpu_mcck); 260 mcck = this_cpu_ptr(&cpu_mcck);
257 umode = user_mode(regs); 261 umode = user_mode(regs);
258 262
259 if (mci->sd) { 263 if (mci->sd) {