]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
hwrng: core - document the quality field
authorMichael S. Tsirkin <mst@redhat.com>
Tue, 25 Sep 2018 16:35:18 +0000 (12:35 -0400)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 5 Oct 2018 02:16:56 +0000 (10:16 +0800)
quality field is currently documented as being 'per mill'.  In fact the
math involved is:

                add_hwgenerator_randomness((void *)rng_fillbuf, rc,
                                           rc * current_quality * 8 >> 10);

thus the actual definition is "bits of entropy per 1024 bits of input".

The current documentation seems to have confused multiple people
in the past, let's fix the documentation to match code.

An alternative is to change core to match driver expectations, replacing
rc * current_quality * 8 >> 10
with
rc * current_quality / 1000
but that has performance costs, so probably isn't a good option.

Fixes: 0f734e6e768 ("hwrng: add per-device entropy derating")
Reported-by: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/core.c
include/linux/hw_random.h

index aaf9e5afaad435e2342a15fc963aa91367079957..95be7228f327009a79de498815bb92f3ee480a51 100644 (file)
@@ -44,10 +44,10 @@ static unsigned short default_quality; /* = 0; default to "off" */
 
 module_param(current_quality, ushort, 0644);
 MODULE_PARM_DESC(current_quality,
-                "current hwrng entropy estimation per mill");
+                "current hwrng entropy estimation per 1024 bits of input");
 module_param(default_quality, ushort, 0644);
 MODULE_PARM_DESC(default_quality,
-                "default entropy content of hwrng per mill");
+                "default entropy content of hwrng per 1024 bits of input");
 
 static void drop_current_rng(void);
 static int hwrng_init(struct hwrng *rng);
index bee0827766a397d6d5ff3a2f8cdf42b97925f3c8..c0b93e0ff0c0f2cd2528eaaa1180c32b50a56706 100644 (file)
@@ -33,7 +33,8 @@
  *                     and max is a multiple of 4 and >= 32 bytes.
  * @priv:              Private data, for use by the RNG driver.
  * @quality:           Estimation of true entropy in RNG's bitstream
- *                     (per mill).
+ *                     (in bits of entropy per 1024 bits of input;
+ *                     valid values: 1 to 1024, or 0 for unknown).
  */
 struct hwrng {
        const char *name;