]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390/crypto: Renaming PPNO to PRNO.
authorHarald Freudenberger <freude@linux.vnet.ibm.com>
Fri, 24 Feb 2017 09:11:54 +0000 (10:11 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Apr 2017 11:41:32 +0000 (13:41 +0200)
The PPNO (Perform Pseudorandom Number Operation) instruction
has been renamed to PRNO (Perform Random Number Operation).
To avoid confusion and conflicts with future extensions with
this instruction (like e.g. provide a true random number
generator) this patch renames all occurences in cpacf.h and
adjusts the only exploiter code which is the prng device
driver and one line in the s390 kvm feature check.

Signed-off-by: Harald Freudenberger <freude@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/crypto/prng.c
arch/s390/include/asm/cpacf.h
arch/s390/kvm/kvm-s390.c

index 5a3ec04a7082c11993155b0277e739c1b1e65a94..3e47c4a0f18b346f4ce9eb58ddb4928bcfe517a3 100644 (file)
@@ -81,7 +81,7 @@ struct prng_ws_s {
        u64 byte_counter;
 };
 
-struct ppno_ws_s {
+struct prno_ws_s {
        u32 res;
        u32 reseed_counter;
        u64 stream_bytes;
@@ -93,7 +93,7 @@ struct prng_data_s {
        struct mutex mutex;
        union {
                struct prng_ws_s prngws;
-               struct ppno_ws_s ppnows;
+               struct prno_ws_s prnows;
        };
        u8 *buf;
        u32 rest;
@@ -306,12 +306,12 @@ static int __init prng_sha512_selftest(void)
                0x36, 0x8c, 0x5a, 0x9f, 0x7a, 0x4b, 0x3e, 0xe2 };
 
        u8 buf[sizeof(random)];
-       struct ppno_ws_s ws;
+       struct prno_ws_s ws;
 
        memset(&ws, 0, sizeof(ws));
 
        /* initial seed */
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_SEED,
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_SEED,
                   &ws, NULL, 0, seed, sizeof(seed));
 
        /* check working states V and C */
@@ -324,9 +324,9 @@ static int __init prng_sha512_selftest(void)
        }
 
        /* generate random bytes */
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_GEN,
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_GEN,
                   &ws, buf, sizeof(buf), NULL, 0);
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_GEN,
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_GEN,
                   &ws, buf, sizeof(buf), NULL, 0);
 
        /* check against expected data */
@@ -374,16 +374,16 @@ static int __init prng_sha512_instantiate(void)
        /* followed by 16 bytes of unique nonce */
        get_tod_clock_ext(seed + 64 + 32);
 
-       /* initial seed of the ppno drng */
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_SEED,
-                  &prng_data->ppnows, NULL, 0, seed, sizeof(seed));
+       /* initial seed of the prno drng */
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_SEED,
+                  &prng_data->prnows, NULL, 0, seed, sizeof(seed));
 
        /* if fips mode is enabled, generate a first block of random
           bytes for the FIPS 140-2 Conditional Self Test */
        if (fips_enabled) {
                prng_data->prev = prng_data->buf + prng_chunk_size;
-               cpacf_ppno(CPACF_PPNO_SHA512_DRNG_GEN,
-                          &prng_data->ppnows,
+               cpacf_prno(CPACF_PRNO_SHA512_DRNG_GEN,
+                          &prng_data->prnows,
                           prng_data->prev, prng_chunk_size, NULL, 0);
        }
 
@@ -412,9 +412,9 @@ static int prng_sha512_reseed(void)
        if (ret != sizeof(seed))
                return ret;
 
-       /* do a reseed of the ppno drng with this bytestring */
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_SEED,
-                  &prng_data->ppnows, NULL, 0, seed, sizeof(seed));
+       /* do a reseed of the prno drng with this bytestring */
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_SEED,
+                  &prng_data->prnows, NULL, 0, seed, sizeof(seed));
 
        return 0;
 }
@@ -425,15 +425,15 @@ static int prng_sha512_generate(u8 *buf, size_t nbytes)
        int ret;
 
        /* reseed needed ? */
-       if (prng_data->ppnows.reseed_counter > prng_reseed_limit) {
+       if (prng_data->prnows.reseed_counter > prng_reseed_limit) {
                ret = prng_sha512_reseed();
                if (ret)
                        return ret;
        }
 
-       /* PPNO generate */
-       cpacf_ppno(CPACF_PPNO_SHA512_DRNG_GEN,
-                  &prng_data->ppnows, buf, nbytes, NULL, 0);
+       /* PRNO generate */
+       cpacf_prno(CPACF_PRNO_SHA512_DRNG_GEN,
+                  &prng_data->prnows, buf, nbytes, NULL, 0);
 
        /* FIPS 140-2 Conditional Self Test */
        if (fips_enabled) {
@@ -653,7 +653,7 @@ static ssize_t prng_counter_show(struct device *dev,
        if (mutex_lock_interruptible(&prng_data->mutex))
                return -ERESTARTSYS;
        if (prng_mode == PRNG_MODE_SHA512)
-               counter = prng_data->ppnows.stream_bytes;
+               counter = prng_data->prnows.stream_bytes;
        else
                counter = prng_data->prngws.byte_counter;
        mutex_unlock(&prng_data->mutex);
@@ -774,8 +774,8 @@ static int __init prng_init(void)
 
        /* choose prng mode */
        if (prng_mode != PRNG_MODE_TDES) {
-               /* check for MSA5 support for PPNO operations */
-               if (!cpacf_query_func(CPACF_PPNO, CPACF_PPNO_SHA512_DRNG_GEN)) {
+               /* check for MSA5 support for PRNO operations */
+               if (!cpacf_query_func(CPACF_PRNO, CPACF_PRNO_SHA512_DRNG_GEN)) {
                        if (prng_mode == PRNG_MODE_SHA512) {
                                pr_err("The prng module cannot "
                                       "start in SHA-512 mode\n");
index e2dfbf280d124aefefb6e82247820c23d8268c74..ba4aecc2dac762c8e81cb86f0f7b5571e10d90cc 100644 (file)
@@ -25,7 +25,7 @@
 #define CPACF_KMO              0xb92b          /* MSA4 */
 #define CPACF_PCC              0xb92c          /* MSA4 */
 #define CPACF_KMCTR            0xb92d          /* MSA4 */
-#define CPACF_PPNO             0xb93c          /* MSA5 */
+#define CPACF_PRNO             0xb93c          /* MSA5 */
 
 /*
  * En/decryption modifier bits
 #define CPACF_PCKMO_ENC_AES_256_KEY    0x14
 
 /*
- * Function codes for the PPNO (PERFORM PSEUDORANDOM NUMBER OPERATION)
+ * Function codes for the PRNO (PERFORM RANDOM NUMBER OPERATION)
  * instruction
  */
-#define CPACF_PPNO_QUERY               0x00
-#define CPACF_PPNO_SHA512_DRNG_GEN     0x03
-#define CPACF_PPNO_SHA512_DRNG_SEED    0x83
+#define CPACF_PRNO_QUERY               0x00
+#define CPACF_PRNO_SHA512_DRNG_GEN     0x03
+#define CPACF_PRNO_SHA512_DRNG_SEED    0x83
 
 typedef struct { unsigned char bytes[16]; } cpacf_mask_t;
 
@@ -173,7 +173,7 @@ static inline int __cpacf_check_opcode(unsigned int opcode)
        case CPACF_PCC:
        case CPACF_KMCTR:
                return test_facility(77);       /* check for MSA4 */
-       case CPACF_PPNO:
+       case CPACF_PRNO:
                return test_facility(57);       /* check for MSA5 */
        default:
                BUG();
@@ -373,16 +373,16 @@ static inline int cpacf_kmctr(unsigned long func, void *param, u8 *dest,
 }
 
 /**
- * cpacf_ppno() - executes the PPNO (PERFORM PSEUDORANDOM NUMBER OPERATION)
+ * cpacf_prno() - executes the PRNO (PERFORM RANDOM NUMBER OPERATION)
  *               instruction
- * @func: the function code passed to PPNO; see CPACF_PPNO_xxx defines
+ * @func: the function code passed to PRNO; see CPACF_PRNO_xxx defines
  * @param: address of parameter block; see POP for details on each func
  * @dest: address of destination memory area
  * @dest_len: size of destination memory area in bytes
  * @seed: address of seed data
  * @seed_len: size of seed data in bytes
  */
-static inline void cpacf_ppno(unsigned long func, void *param,
+static inline void cpacf_prno(unsigned long func, void *param,
                              u8 *dest, long dest_len,
                              const u8 *seed, long seed_len)
 {
@@ -398,7 +398,7 @@ static inline void cpacf_ppno(unsigned long func, void *param,
                "       brc     1,0b\n"   /* handle partial completion */
                : [dst] "+a" (r2), [dlen] "+d" (r3)
                : [fc] "d" (r0), [pba] "a" (r1),
-                 [seed] "a" (r4), [slen] "d" (r5), [opc] "i" (CPACF_PPNO)
+                 [seed] "a" (r4), [slen] "d" (r5), [opc] "i" (CPACF_PRNO)
                : "cc", "memory");
 }
 
index 28983836c0f76adf1ba1ea5f2e2b2e224d1df239..d5c5c911821ae85006488913cf72625630ece940 100644 (file)
@@ -273,7 +273,7 @@ static void kvm_s390_cpu_feat_init(void)
                              kvm_s390_available_subfunc.pcc);
        }
        if (test_facility(57)) /* MSA5 */
-               __cpacf_query(CPACF_PPNO, (cpacf_mask_t *)
+               __cpacf_query(CPACF_PRNO, (cpacf_mask_t *)
                              kvm_s390_available_subfunc.ppno);
 
        if (MACHINE_HAS_ESOP)