linux/arch/powerpc
Russell Currey f40caa4da1 powerpc/eeh: Avoid use after free in eeh_handle_special_event()
commit daeba2956f upstream.

eeh_handle_special_event() is called when an EEH event is detected but
can't be narrowed down to a specific PE.  This function looks through
every PE to find one in an erroneous state, then calls the regular event
handler eeh_handle_normal_event() once it knows which PE has an error.

However, if eeh_handle_normal_event() found that the PE cannot possibly
be recovered, it will free it, rendering the passed PE stale.
This leads to a use after free in eeh_handle_special_event() as it attempts to
clear the "recovering" state on the PE after eeh_handle_normal_event() returns.

Thus, make sure the PE is valid when attempting to clear state in
eeh_handle_special_event().

Fixes: 8a6b1bc70d ("powerpc/eeh: EEH core to handle special event")
Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Russell Currey <ruscur@russell.cc>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
[bwh: Backported to 3.16: adjust context, indentation]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-08-26 02:14:44 +01:00
..
boot powerpc/boot: Fix zImage TOC alignment 2017-07-18 18:40:08 +01:00
configs powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00
crypto crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
include net: ethernet: ucc_geth: fix MEM_PART_MURAM mode 2017-08-26 02:14:42 +01:00
kernel powerpc/eeh: Avoid use after free in eeh_handle_special_event() 2017-08-26 02:14:44 +01:00
kvm KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state 2017-03-16 02:26:24 +00:00
lib powerpc/64: Fix incorrect return value from __copy_tofrom_user 2017-02-23 03:54:11 +00:00
math-emu powerpc: Correct emulated mtfsf instruction 2014-04-07 10:33:11 +10:00
mm mm: larger stack guard gap, between vmas 2017-07-02 17:13:02 +01:00
net net: filter: make JITs zero A for SKF_AD_ALU_XOR_X 2016-01-25 10:44:05 +00:00
oprofile cpufreq: remove unused notifier: CPUFREQ_{SUSPENDCHANGE|RESUMECHANGE} 2014-03-19 14:10:24 +01:00
perf powerpc/perf: Remove PPMU_HAS_SSLOT flag for Power8 2016-02-17 10:22:48 +00:00
platforms powerpc/pseries: Fix of_node_put() underflow during DLPAR remove 2017-08-26 02:14:37 +01:00
sysdev powerpc/MSI: Fix race condition in tearing down MSI interrupts 2015-09-30 13:20:55 +01:00
xmon powerpc/xmon: Fix another endiannes issue in RTAS call from xmon 2015-02-04 10:58:05 +00:00
Kconfig powerpc/bpf/jit: Disable classic BPF JIT on ppc64le 2016-08-22 22:38:18 +01:00
Kconfig.debug powerpc/powernv: Remove OPAL v1 takeover 2014-06-25 13:10:47 +10:00
Makefile Merge branch 'merge' into next 2014-05-28 13:30:12 +10:00
relocs_check.pl Fix warning typo "CONFIG_RELCOATABLE" 2013-05-29 15:11:30 +02:00