diff options
| -rw-r--r-- | drivers/acpi/apei/ghes.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c index 0d099a24f776..e53bef6cf53c 100644 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c | |||
| @@ -852,6 +852,8 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs) | |||
| 852 | if (ghes_read_estatus(ghes, 1)) { | 852 | if (ghes_read_estatus(ghes, 1)) { |
| 853 | ghes_clear_estatus(ghes); | 853 | ghes_clear_estatus(ghes); |
| 854 | continue; | 854 | continue; |
| 855 | } else { | ||
| 856 | ret = NMI_HANDLED; | ||
| 855 | } | 857 | } |
| 856 | 858 | ||
| 857 | sev = ghes_severity(ghes->estatus->error_severity); | 859 | sev = ghes_severity(ghes->estatus->error_severity); |
| @@ -863,12 +865,11 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs) | |||
| 863 | 865 | ||
| 864 | __process_error(ghes); | 866 | __process_error(ghes); |
| 865 | ghes_clear_estatus(ghes); | 867 | ghes_clear_estatus(ghes); |
| 866 | |||
| 867 | ret = NMI_HANDLED; | ||
| 868 | } | 868 | } |
| 869 | 869 | ||
| 870 | #ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG | 870 | #ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG |
| 871 | irq_work_queue(&ghes_proc_irq_work); | 871 | if (ret == NMI_HANDLED) |
| 872 | irq_work_queue(&ghes_proc_irq_work); | ||
| 872 | #endif | 873 | #endif |
| 873 | atomic_dec(&ghes_in_nmi); | 874 | atomic_dec(&ghes_in_nmi); |
| 874 | return ret; | 875 | return ret; |
