s390/cio: fix IO subchannel event race
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Wed, 5 Sep 2012 12:19:42 +0000 (14:19 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 6 Sep 2012 08:40:39 +0000 (10:40 +0200)
commit43d0be75af8d05654b88d1da494cf292714fbdec
treee95e17c270b88565bc3d91a5d4ac6abf7127399d
parent1f08be80bef6f7a3faaa728db836b47ff742f41f
s390/cio: fix IO subchannel event race

If the subchannel event function is called from IRQ context and we
observe that the subchannel in question is gone we flag the attached
device as not operational and schedule the event function to be called
again from process context where the subchannel gets deregistered.
However if the subchannel reappeared at the time the event function
gets called from process context we would do nothing and leave the
device in not operational state. Recognize this case in sch_get_action
and trigger reexamination of the subchannel/device.

Acked-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/device.c