linux/drivers/s390
Harald Freudenberger 25cb64ecc3 s390/zcrypt: do not retry administrative requests
commit af40322e90 upstream.

All kind of administrative requests should not been retried. Some card
firmware detects this and assumes a replay attack. This patch checks
on failure if the low level functions indicate a retry (EAGAIN) and
checks for the ADMIN flag set on the request message.  If this both
are true, the response code for this message is changed to EIO to make
sure the zcrypt API layer does not attempt to retry the request. As of
now the ADMIN flag is set for a request message when
- for EP11 the field 'flags' of the EP11 CPRB struct has the leftmost
  bit set.
- for CCA when the CPRB minor version is 'T3', 'T5', 'T6' or 'T7'.

Please note that the do-not-retry only applies to a request
which has been sent to the card (= has been successfully enqueued) but
the reply indicates some kind of failure and by default it would be
replied. It is totally fine to retry a request if a previous attempt
to enqueue the msg into the firmware queue had some kind of failure
and thus the card has never seen this request.

Reported-by: Frank Uhlig <Frank.Uhlig1@ibm.com>
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-07-23 13:49:35 +02:00
..
block s390/dasd: Use correct lock while counting channel queue length 2023-06-14 11:15:27 +02:00
char s390/early: fix sclp_early_sccb variable lifetime 2023-03-10 09:32:53 +01:00
cio s390/cio: unregister device when the only path is gone 2023-06-28 11:12:37 +02:00
crypto s390/zcrypt: do not retry administrative requests 2023-07-23 13:49:35 +02:00
net s390/qeth: Fix vipa deletion 2023-07-19 16:22:06 +02:00
scsi scsi: zfcp: Fix double free of FSF request when qdio send fails 2022-11-17 17:51:06 +00:00
virtio virtio: Revert "virtio: find_vqs() add arg sizes" 2022-08-16 01:40:24 -04:00
Makefile s390: remove pointless drivers-y in drivers/s390/Makefile 2019-09-16 13:21:51 +02:00