Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/pkey: introduce reverse x-mas trees

This patch introduces reverse x-mas trees for all
local variables on all the functions in pkey.

Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>

authored by

Harald Freudenberger and committed by
Alexander Gordeev
46a29b03 844cf829

+36 -36
+36 -36
drivers/s390/crypto/pkey_api.c
··· 91 91 /* mask of available pckmo subfunctions */ 92 92 static cpacf_mask_t pckmo_functions; 93 93 94 - long fc; 95 - int keysize; 96 94 u8 paramblock[64]; 95 + int keysize; 96 + long fc; 97 97 98 98 switch (keytype) { 99 99 case PKEY_KEYTYPE_AES_128: ··· 146 146 */ 147 147 static int pkey_skey2pkey(const u8 *key, struct pkey_protkey *pkey) 148 148 { 149 - int rc, verify; 150 - u16 cardnr, domain; 151 149 struct keytoken_header *hdr = (struct keytoken_header *)key; 150 + u16 cardnr, domain; 151 + int rc, verify; 152 152 153 153 zcrypt_wait_api_operational(); 154 154 ··· 195 195 static int pkey_clr2ep11key(const u8 *clrkey, size_t clrkeylen, 196 196 u8 *keybuf, size_t *keybuflen) 197 197 { 198 - int i, rc; 199 - u16 card, dom; 200 198 u32 nr_apqns, *apqns = NULL; 199 + u16 card, dom; 200 + int i, rc; 201 201 202 202 zcrypt_wait_api_operational(); 203 203 ··· 229 229 */ 230 230 static int pkey_ep11key2pkey(const u8 *key, struct pkey_protkey *pkey) 231 231 { 232 - int i, rc; 233 - u16 card, dom; 234 - u32 nr_apqns, *apqns = NULL; 235 232 struct ep11keyblob *kb = (struct ep11keyblob *)key; 233 + u32 nr_apqns, *apqns = NULL; 234 + u16 card, dom; 235 + int i, rc; 236 236 237 237 zcrypt_wait_api_operational(); 238 238 ··· 347 347 */ 348 348 static int pkey_verifyprotkey(const struct pkey_protkey *protkey) 349 349 { 350 - unsigned long fc; 351 350 struct { 352 351 u8 iv[AES_BLOCK_SIZE]; 353 352 u8 key[MAXPROTKEYSIZE]; 354 353 } param; 355 354 u8 null_msg[AES_BLOCK_SIZE]; 356 355 u8 dest_buf[AES_BLOCK_SIZE]; 356 + unsigned long fc; 357 357 unsigned int k; 358 358 359 359 switch (protkey->type) { ··· 393 393 static int pkey_nonccatok2pkey(const u8 *key, u32 keylen, 394 394 struct pkey_protkey *protkey) 395 395 { 396 - int rc = -EINVAL; 397 - u8 *tmpbuf = NULL; 398 396 struct keytoken_header *hdr = (struct keytoken_header *)key; 397 + u8 *tmpbuf = NULL; 398 + int rc = -EINVAL; 399 399 400 400 switch (hdr->version) { 401 401 case TOKVER_PROTECTED_KEY: { ··· 518 518 int pkey_keyblob2pkey(const u8 *key, u32 keylen, 519 519 struct pkey_protkey *protkey) 520 520 { 521 - int rc; 522 521 struct keytoken_header *hdr = (struct keytoken_header *)key; 522 + int rc; 523 523 524 524 if (keylen < sizeof(struct keytoken_header)) { 525 525 DEBUG_ERR("%s invalid keylen %d\n", __func__, keylen); ··· 663 663 enum pkey_key_type *ktype, 664 664 enum pkey_key_size *ksize, u32 *flags) 665 665 { 666 - int rc; 667 - u32 _nr_apqns, *_apqns = NULL; 668 666 struct keytoken_header *hdr = (struct keytoken_header *)key; 667 + u32 _nr_apqns, *_apqns = NULL; 668 + int rc; 669 669 670 670 if (keylen < sizeof(struct keytoken_header)) 671 671 return -EINVAL; ··· 773 773 const u8 *key, size_t keylen, 774 774 struct pkey_protkey *pkey) 775 775 { 776 - int i, card, dom, rc; 777 776 struct keytoken_header *hdr = (struct keytoken_header *)key; 777 + int i, card, dom, rc; 778 778 779 779 /* check for at least one apqn given */ 780 780 if (!apqns || !nr_apqns) ··· 847 847 static int pkey_apqns4key(const u8 *key, size_t keylen, u32 flags, 848 848 struct pkey_apqn *apqns, size_t *nr_apqns) 849 849 { 850 - int rc; 851 - u32 _nr_apqns, *_apqns = NULL; 852 850 struct keytoken_header *hdr = (struct keytoken_header *)key; 851 + u32 _nr_apqns, *_apqns = NULL; 852 + int rc; 853 853 854 854 if (keylen < sizeof(struct keytoken_header) || flags == 0) 855 855 return -EINVAL; ··· 860 860 (hdr->version == TOKVER_EP11_AES_WITH_HEADER || 861 861 hdr->version == TOKVER_EP11_ECC_WITH_HEADER) && 862 862 is_ep11_keyblob(key + sizeof(struct ep11kblob_header))) { 863 - int minhwtype = 0, api = 0; 864 863 struct ep11keyblob *kb = (struct ep11keyblob *) 865 864 (key + sizeof(struct ep11kblob_header)); 865 + int minhwtype = 0, api = 0; 866 866 867 867 if (flags != PKEY_FLAGS_MATCH_CUR_MKVP) 868 868 return -EINVAL; ··· 877 877 } else if (hdr->type == TOKTYPE_NON_CCA && 878 878 hdr->version == TOKVER_EP11_AES && 879 879 is_ep11_keyblob(key)) { 880 - int minhwtype = 0, api = 0; 881 880 struct ep11keyblob *kb = (struct ep11keyblob *)key; 881 + int minhwtype = 0, api = 0; 882 882 883 883 if (flags != PKEY_FLAGS_MATCH_CUR_MKVP) 884 884 return -EINVAL; ··· 891 891 if (rc) 892 892 goto out; 893 893 } else if (hdr->type == TOKTYPE_CCA_INTERNAL) { 894 - int minhwtype = ZCRYPT_CEX3C; 895 894 u64 cur_mkvp = 0, old_mkvp = 0; 895 + int minhwtype = ZCRYPT_CEX3C; 896 896 897 897 if (hdr->version == TOKVER_CCA_AES) { 898 898 struct secaeskeytoken *t = (struct secaeskeytoken *)key; ··· 919 919 if (rc) 920 920 goto out; 921 921 } else if (hdr->type == TOKTYPE_CCA_INTERNAL_PKA) { 922 - u64 cur_mkvp = 0, old_mkvp = 0; 923 922 struct eccprivkeytoken *t = (struct eccprivkeytoken *)key; 923 + u64 cur_mkvp = 0, old_mkvp = 0; 924 924 925 925 if (t->secid == 0x20) { 926 926 if (flags & PKEY_FLAGS_MATCH_CUR_MKVP) ··· 957 957 u8 cur_mkvp[32], u8 alt_mkvp[32], u32 flags, 958 958 struct pkey_apqn *apqns, size_t *nr_apqns) 959 959 { 960 - int rc; 961 960 u32 _nr_apqns, *_apqns = NULL; 961 + int rc; 962 962 963 963 zcrypt_wait_api_operational(); 964 964 ··· 1023 1023 const u8 *key, size_t keylen, u32 *protkeytype, 1024 1024 u8 *protkey, u32 *protkeylen) 1025 1025 { 1026 - int i, card, dom, rc; 1027 1026 struct keytoken_header *hdr = (struct keytoken_header *)key; 1027 + int i, card, dom, rc; 1028 1028 1029 1029 /* check for at least one apqn given */ 1030 1030 if (!apqns || !nr_apqns) ··· 1303 1303 } 1304 1304 case PKEY_GENSECK2: { 1305 1305 struct pkey_genseck2 __user *ugs = (void __user *)arg; 1306 + size_t klen = KEYBLOBBUFSIZE; 1306 1307 struct pkey_genseck2 kgs; 1307 1308 struct pkey_apqn *apqns; 1308 - size_t klen = KEYBLOBBUFSIZE; 1309 1309 u8 *kkey; 1310 1310 1311 1311 if (copy_from_user(&kgs, ugs, sizeof(kgs))) ··· 1345 1345 } 1346 1346 case PKEY_CLR2SECK2: { 1347 1347 struct pkey_clr2seck2 __user *ucs = (void __user *)arg; 1348 + size_t klen = KEYBLOBBUFSIZE; 1348 1349 struct pkey_clr2seck2 kcs; 1349 1350 struct pkey_apqn *apqns; 1350 - size_t klen = KEYBLOBBUFSIZE; 1351 1351 u8 *kkey; 1352 1352 1353 1353 if (copy_from_user(&kcs, ucs, sizeof(kcs))) ··· 1409 1409 } 1410 1410 case PKEY_KBLOB2PROTK2: { 1411 1411 struct pkey_kblob2pkey2 __user *utp = (void __user *)arg; 1412 - struct pkey_kblob2pkey2 ktp; 1413 1412 struct pkey_apqn *apqns = NULL; 1413 + struct pkey_kblob2pkey2 ktp; 1414 1414 u8 *kkey; 1415 1415 1416 1416 if (copy_from_user(&ktp, utp, sizeof(ktp))) ··· 1437 1437 } 1438 1438 case PKEY_APQNS4K: { 1439 1439 struct pkey_apqns4key __user *uak = (void __user *)arg; 1440 - struct pkey_apqns4key kak; 1441 1440 struct pkey_apqn *apqns = NULL; 1441 + struct pkey_apqns4key kak; 1442 1442 size_t nr_apqns, len; 1443 1443 u8 *kkey; 1444 1444 ··· 1486 1486 } 1487 1487 case PKEY_APQNS4KT: { 1488 1488 struct pkey_apqns4keytype __user *uat = (void __user *)arg; 1489 - struct pkey_apqns4keytype kat; 1490 1489 struct pkey_apqn *apqns = NULL; 1490 + struct pkey_apqns4keytype kat; 1491 1491 size_t nr_apqns, len; 1492 1492 1493 1493 if (copy_from_user(&kat, uat, sizeof(kat))) ··· 1528 1528 } 1529 1529 case PKEY_KBLOB2PROTK3: { 1530 1530 struct pkey_kblob2pkey3 __user *utp = (void __user *)arg; 1531 - struct pkey_kblob2pkey3 ktp; 1532 - struct pkey_apqn *apqns = NULL; 1533 1531 u32 protkeylen = PROTKEYBLOBBUFSIZE; 1532 + struct pkey_apqn *apqns = NULL; 1533 + struct pkey_kblob2pkey3 ktp; 1534 1534 u8 *kkey, *protkey; 1535 1535 1536 1536 if (copy_from_user(&ktp, utp, sizeof(ktp))) ··· 1717 1717 static ssize_t pkey_ccadata_aes_attr_read(u32 keytype, bool is_xts, char *buf, 1718 1718 loff_t off, size_t count) 1719 1719 { 1720 - int rc; 1721 1720 struct pkey_seckey *seckey = (struct pkey_seckey *)buf; 1721 + int rc; 1722 1722 1723 1723 if (off != 0 || count < sizeof(struct secaeskeytoken)) 1724 1724 return -EINVAL; ··· 1824 1824 bool is_xts, char *buf, loff_t off, 1825 1825 size_t count) 1826 1826 { 1827 - int i, rc, card, dom; 1828 - u32 nr_apqns, *apqns = NULL; 1829 1827 size_t keysize = CCACIPHERTOKENSIZE; 1828 + u32 nr_apqns, *apqns = NULL; 1829 + int i, rc, card, dom; 1830 1830 1831 1831 if (off != 0 || count < CCACIPHERTOKENSIZE) 1832 1832 return -EINVAL; ··· 1947 1947 bool is_xts, char *buf, loff_t off, 1948 1948 size_t count) 1949 1949 { 1950 - int i, rc, card, dom; 1951 - u32 nr_apqns, *apqns = NULL; 1952 1950 size_t keysize = MAXEP11AESKEYBLOBSIZE; 1951 + u32 nr_apqns, *apqns = NULL; 1952 + int i, rc, card, dom; 1953 1953 1954 1954 if (off != 0 || count < MAXEP11AESKEYBLOBSIZE) 1955 1955 return -EINVAL;