forked from kernel-patches/bpf
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 's390-6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/g…
…it/s390/linux Pull s390 updates from Alexander Gordeev: - Fix the style of protected key API driver source: use x-mas tree for all local variable declarations - Rework protected key API driver to not use the struct pkey_protkey and pkey_clrkey anymore. Both structures have a fixed size buffer, but with the support of ECC protected key these buffers are not big enough. Use dynamic buffers internally and transparently for userspace - Add support for a new 'non CCA clear key token' with ECC clear keys supported: ECC P256, ECC P384, ECC P521, ECC ED25519 and ECC ED448. This makes it possible to derive a protected key from the ECC clear key input via PKEY_KBLOB2PROTK3 ioctl, while currently the only way to derive is via PCKMO instruction - The s390 PMU of PAI crypto and extension 1 NNPA counters use atomic_t for reference counting. Replace this with the proper data type refcount_t - Select ARCH_SUPPORTS_INT128, but limit this to clang for now, since gcc generates inefficient code, which may lead to stack overflows - Replace one-element array with flexible-array member in struct vfio_ccw_parent and refactor the rest of the code accordingly. Also, prefer struct_size() over sizeof() open- coded versions - Introduce OS_INFO_FLAGS_ENTRY pointing to a flags field and OS_INFO_FLAG_REIPL_CLEAR flag that informs a dumper whether the system memory should be cleared or not once dumped - Fix a hang when a user attempts to remove a VFIO-AP mediated device attached to a guest: add VFIO_DEVICE_GET_IRQ_INFO and VFIO_DEVICE_SET_IRQS IOCTLs and wire up the VFIO bus driver callback to request a release of the device - Fix calculation for R_390_GOTENT relocations for modules - Allow any user space process with CAP_PERFMON capability read and display the CPU Measurement facility counter sets - Rework large statically-defined per-CPU cpu_cf_events data structure and replace it with dynamically allocated structures created when a perf_event_open() system call is invoked or /dev/hwctr device is accessed * tag 's390-6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/cpum_cf: rework PER_CPU_DEFINE of struct cpu_cf_events s390/cpum_cf: open access to hwctr device for CAP_PERFMON privileged process s390/module: fix rela calculation for R_390_GOTENT s390/vfio-ap: wire in the vfio_device_ops request callback s390/vfio-ap: realize the VFIO_DEVICE_SET_IRQS ioctl s390/vfio-ap: realize the VFIO_DEVICE_GET_IRQ_INFO ioctl s390/pkey: add support for ecc clear key s390/pkey: do not use struct pkey_protkey s390/pkey: introduce reverse x-mas trees s390/zcore: conditionally clear memory on reipl s390/ipl: add REIPL_CLEAR flag to os_info vfio/ccw: use struct_size() helper vfio/ccw: replace one-element array with flexible-array member s390: select ARCH_SUPPORTS_INT128 s390/pai_ext: replace atomic_t with refcount_t s390/pai_crypto: replace atomic_t with refcount_t
- Loading branch information
Showing
21 changed files
with
997 additions
and
328 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ | |
* s390 implementation of the AES Cipher Algorithm with protected keys. | ||
* | ||
* s390 Version: | ||
* Copyright IBM Corp. 2017,2020 | ||
* Copyright IBM Corp. 2017, 2023 | ||
* Author(s): Martin Schwidefsky <[email protected]> | ||
* Harald Freudenberger <[email protected]> | ||
*/ | ||
|
@@ -132,7 +132,8 @@ static inline int __paes_keyblob2pkey(struct key_blob *kb, | |
if (i > 0 && ret == -EAGAIN && in_task()) | ||
if (msleep_interruptible(1000)) | ||
return -EINTR; | ||
ret = pkey_keyblob2pkey(kb->key, kb->keylen, pk); | ||
ret = pkey_keyblob2pkey(kb->key, kb->keylen, | ||
pk->protkey, &pk->len, &pk->type); | ||
if (ret == 0) | ||
break; | ||
} | ||
|
@@ -145,6 +146,7 @@ static inline int __paes_convert_key(struct s390_paes_ctx *ctx) | |
int ret; | ||
struct pkey_protkey pkey; | ||
|
||
pkey.len = sizeof(pkey.protkey); | ||
ret = __paes_keyblob2pkey(&ctx->kb, &pkey); | ||
if (ret) | ||
return ret; | ||
|
@@ -414,6 +416,9 @@ static inline int __xts_paes_convert_key(struct s390_pxts_ctx *ctx) | |
{ | ||
struct pkey_protkey pkey0, pkey1; | ||
|
||
pkey0.len = sizeof(pkey0.protkey); | ||
pkey1.len = sizeof(pkey1.protkey); | ||
|
||
if (__paes_keyblob2pkey(&ctx->kb[0], &pkey0) || | ||
__paes_keyblob2pkey(&ctx->kb[1], &pkey1)) | ||
return -EINVAL; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
/* | ||
* CP Assist for Cryptographic Functions (CPACF) | ||
* | ||
* Copyright IBM Corp. 2003, 2017 | ||
* Copyright IBM Corp. 2003, 2023 | ||
* Author(s): Thomas Spatzier | ||
* Jan Glauber | ||
* Harald Freudenberger ([email protected]) | ||
|
@@ -132,6 +132,11 @@ | |
#define CPACF_PCKMO_ENC_AES_128_KEY 0x12 | ||
#define CPACF_PCKMO_ENC_AES_192_KEY 0x13 | ||
#define CPACF_PCKMO_ENC_AES_256_KEY 0x14 | ||
#define CPACF_PCKMO_ENC_ECC_P256_KEY 0x20 | ||
#define CPACF_PCKMO_ENC_ECC_P384_KEY 0x21 | ||
#define CPACF_PCKMO_ENC_ECC_P521_KEY 0x22 | ||
#define CPACF_PCKMO_ENC_ECC_ED25519_KEY 0x28 | ||
#define CPACF_PCKMO_ENC_ECC_ED448_KEY 0x29 | ||
|
||
/* | ||
* Function codes for the PRNO (PERFORM RANDOM NUMBER OPERATION) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
/* | ||
* Kernelspace interface to the pkey device driver | ||
* | ||
* Copyright IBM Corp. 2016,2019 | ||
* Copyright IBM Corp. 2016, 2023 | ||
* | ||
* Author: Harald Freudenberger <[email protected]> | ||
* | ||
|
@@ -23,6 +23,6 @@ | |
* @return 0 on success, negative errno value on failure | ||
*/ | ||
int pkey_keyblob2pkey(const u8 *key, u32 keylen, | ||
struct pkey_protkey *protkey); | ||
u8 *protkey, u32 *protkeylen, u32 *protkeytype); | ||
|
||
#endif /* _KAPI_PKEY_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
/* | ||
* Userspace interface to the pkey device driver | ||
* | ||
* Copyright IBM Corp. 2017, 2019 | ||
* Copyright IBM Corp. 2017, 2023 | ||
* | ||
* Author: Harald Freudenberger <[email protected]> | ||
* | ||
|
@@ -32,10 +32,15 @@ | |
#define MINKEYBLOBSIZE SECKEYBLOBSIZE | ||
|
||
/* defines for the type field within the pkey_protkey struct */ | ||
#define PKEY_KEYTYPE_AES_128 1 | ||
#define PKEY_KEYTYPE_AES_192 2 | ||
#define PKEY_KEYTYPE_AES_256 3 | ||
#define PKEY_KEYTYPE_ECC 4 | ||
#define PKEY_KEYTYPE_AES_128 1 | ||
#define PKEY_KEYTYPE_AES_192 2 | ||
#define PKEY_KEYTYPE_AES_256 3 | ||
#define PKEY_KEYTYPE_ECC 4 | ||
#define PKEY_KEYTYPE_ECC_P256 5 | ||
#define PKEY_KEYTYPE_ECC_P384 6 | ||
#define PKEY_KEYTYPE_ECC_P521 7 | ||
#define PKEY_KEYTYPE_ECC_ED25519 8 | ||
#define PKEY_KEYTYPE_ECC_ED448 9 | ||
|
||
/* the newer ioctls use a pkey_key_type enum for type information */ | ||
enum pkey_key_type { | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.