s390/etr,stp: fix possible deadlock on machine check
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Fri, 9 Oct 2015 11:48:03 +0000 (13:48 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Oct 2015 12:32:18 +0000 (14:32 +0200)
commit29b0a8250ba63beffba4fe3a42fa75dddf4bd06a
tree07d567892411d28f22003f73193ae37a80cf4d17
parent7cc8944e13c73374b6f33b39ca24c0891c87b077
s390/etr,stp: fix possible deadlock on machine check

The first level machine check handler for etr and stp machine checks may
call queue_work() while in nmi context. This may deadlock e.g. if the
machine check happened when the interrupted context did hold a lock, that
also will be acquired by queue_work().
Therefore split etr and stp machine check handling into first and second
level handling. The second level handling will then issue the queue_work()
call in process context which avoids the potential deadlock.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/etr.h
arch/s390/kernel/nmi.c
arch/s390/kernel/time.c