linux/drivers/s390/crypto
Harald Freudenberger 7f8209580c 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:53:59 +02:00
..
ap_bus.c s390 updates for the 6.4 merge window 2023-04-30 11:43:31 -07:00
ap_bus.h s390/ap: implement SE AP bind, unbind and associate 2023-03-20 11:12:49 +01:00
ap_card.c s390/zcrypt: replace scnprintf with sysfs_emit 2023-03-20 11:12:48 +01:00
ap_debug.h s390/zcrypt: rework of debug feature messages 2021-10-26 15:21:27 +02:00
ap_queue.c s390/ap: add ap status asynch error support 2023-03-20 11:12:49 +01:00
Makefile s390/zcrypt: add new low level ep11 functions support file 2020-01-30 13:07:55 +01:00
pkey_api.c s390/pkey: zeroize key blobs 2023-05-15 14:20:13 +02:00
vfio_ap_debug.h s390-vfio-ap: introduces s390 kernel debug feature for vfio_ap device driver 2022-02-06 23:31:29 +01:00
vfio_ap_drv.c s390 updates for the 6.4 merge window 2023-04-30 11:43:31 -07:00
vfio_ap_ops.c s390/ap: provide F bit parameter for ap_rapq() and ap_zapq() 2023-03-20 11:12:49 +01:00
vfio_ap_private.h s390/vfio-ap: Fix memory allocation for mdev_types array 2022-10-26 14:47:31 +02:00
zcrypt_api.c s390 updates for the 6.4 merge window 2023-04-30 11:43:31 -07:00
zcrypt_api.h s390/zcrypt: code cleanup 2022-04-25 13:54:14 +02:00
zcrypt_card.c s390/zcrypt: replace scnprintf with sysfs_emit 2023-03-20 11:12:48 +01:00
zcrypt_cca_key.h s390/zcrypt: rework arrays with length zero occurrences 2023-04-19 16:47:31 +02:00
zcrypt_ccamisc.c s390/zcrypt: rework arrays with length zero occurrences 2023-04-19 16:47:31 +02:00
zcrypt_ccamisc.h s390/zcrypt: add display of ASYM master key verification pattern 2022-04-25 13:54:13 +02:00
zcrypt_cex2a.c s390/zcrypt: code cleanup 2022-04-25 13:54:14 +02:00
zcrypt_cex2a.h s390/zcrypt: zcrypt device driver cleanup 2018-10-09 11:21:35 +02:00
zcrypt_cex2c.c s390/ap: provide F bit parameter for ap_rapq() and ap_zapq() 2023-03-20 11:12:49 +01:00
zcrypt_cex2c.h s390/zcrypt: zcrypt device driver cleanup 2018-10-09 11:21:35 +02:00
zcrypt_cex4.c s390/zcrypt: replace scnprintf with sysfs_emit 2023-03-20 11:12:48 +01:00
zcrypt_cex4.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
zcrypt_debug.h s390/zcrypt: rework of debug feature messages 2021-10-26 15:21:27 +02:00
zcrypt_ep11misc.c s390/zcrypt: rework arrays with length zero occurrences 2023-04-19 16:47:31 +02:00
zcrypt_ep11misc.h s390/zcrypt: code cleanup 2022-04-25 13:54:14 +02:00
zcrypt_error.h s390/zcrypt: code cleanup 2022-04-25 13:54:14 +02:00
zcrypt_msgtype6.c s390/zcrypt: do not retry administrative requests 2023-07-23 13:53:59 +02:00
zcrypt_msgtype6.h s390/zcrypt: code cleanup 2022-04-25 13:54:14 +02:00
zcrypt_msgtype50.c s390/zcrypt: rework length information for dqap 2023-03-20 11:12:47 +01:00
zcrypt_msgtype50.h s390/zcrypt: Support CPRB minor version T7 2022-03-08 00:33:00 +01:00
zcrypt_queue.c s390/zcrypt: replace scnprintf with sysfs_emit 2023-03-20 11:12:48 +01:00