linux-stable/drivers/s390
Harald Freudenberger b516daed99 s390/ap: Fix hanging ioctl caused by wrong msg counter
commit e73a99f328 upstream.

When a AP queue is switched to soft offline, all pending
requests are purged out of the pending requests list and
'received' by the upper layer like zcrypt device drivers.
This is also done for requests which are already enqueued
into the firmware queue. A request in a firmware queue
may eventually produce an response message, but there is
no waiting process any more. However, the response was
counted with the queue_counter and as this counter was
reset to 0 with the offline switch, the pending response
caused the queue_counter to get negative. The next request
increased this counter to 0 (instead of 1) which caused
the ap code to assume there is nothing to receive and so
the response for this valid request was never tried to
fetch from the firmware queue.

This all caused a queue to not work properly after a
switch offline/online and in the end processes to hang
forever when trying to send a crypto request after an
queue offline/online switch cicle.

Fixed by a) making sure the counter does not drop below 0
and b) on a successful enqueue of a message has at least
a value of 1.

Additionally a warning is emitted, when a reply can't get
assigned to a waiting process. This may be normal operation
(process had timeout or has been killed) but may give a
hint that something unexpected happened (like this odd
behavior described above).

Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-23 14:42:51 +02:00
..
block s390/dasd: fix hanging IO request during DASD driver unbind 2021-03-17 17:06:28 +01:00
char s390 updates for the 5.10 merge window 2020-10-16 12:36:38 -07:00
cio vfio-ccw: Serialize FSM IDLE state with I/O completion 2021-06-16 12:01:35 +02:00
crypto s390/ap: Fix hanging ioctl caused by wrong msg counter 2021-06-23 14:42:51 +02:00
net s390/qeth: schedule TX NAPI on QAOB completion 2021-03-25 09:04:13 +01:00
scsi s390 updates for the 5.10 merge window 2020-10-16 12:36:38 -07:00
virtio virtio/s390: implement virtio-ccw revision 2 correctly 2021-03-04 11:38:42 +01:00
Makefile