]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
hwrng: core - zeroize buffers with random data
authorStephan Mueller <smueller@chronox.de>
Sat, 22 Oct 2016 13:57:05 +0000 (15:57 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 1 Nov 2016 00:37:10 +0000 (08:37 +0800)
The HWRNG core allocates two buffers during initialization which are
used to obtain random data. After that data is processed, it is now
zeroized as it is possible that the HWRNG core will not be asked to
produce more random data for a long time. This prevents leaving such
sensitive data in memory.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/core.c

index d2d2c89de5b4428e627eb06d9733ec1bcf2c2b0d..f9766415ff10b7fe6566c08a39fde0ae07464792 100644 (file)
@@ -92,6 +92,7 @@ static void add_early_randomness(struct hwrng *rng)
        mutex_unlock(&reading_mutex);
        if (bytes_read > 0)
                add_device_randomness(rng_buffer, bytes_read);
+       memset(rng_buffer, 0, size);
 }
 
 static inline void cleanup_rng(struct kref *kref)
@@ -287,6 +288,7 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf,
                }
        }
 out:
+       memset(rng_buffer, 0, rng_buffer_size());
        return ret ? : err;
 
 out_unlock_reading:
@@ -425,6 +427,7 @@ static int hwrng_fillfn(void *unused)
                /* Outside lock, sure, but y'know: randomness. */
                add_hwgenerator_randomness((void *)rng_fillbuf, rc,
                                           rc * current_quality * 8 >> 10);
+               memset(rng_fillbuf, 0, rng_buffer_size());
        }
        hwrng_fill = NULL;
        return 0;