lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACXcFmnKhYyjHNzu_MxZ2qup1jxp4CWT09HzBu=h5D2Ur9LjWQ@mail.gmail.com>
Date:   Wed, 10 Nov 2021 17:25:07 +0800
From:   Sandy Harris <sandyinchina@...il.com>
To:     LKML <linux-kernel@...r.kernel.org>,
        Linux Crypto Mailing List <linux-crypto@...r.kernel.org>,
        "Ted Ts'o" <tytso@....edu>, "Jason A. Donenfeld" <Jason@...c4.com>
Subject: [PATCH] random: Use 64 bits from get_random_long() in extract_crng()

---
drivers/char/random.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/char/random.c b/drivers/char/random.c
index 605969ed0f96..bf644b594fb7 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -989,14 +989,20 @@ static void _extract_crng(struct crng_state *crng,
                         __u8 out[CHACHA_BLOCK_SIZE])
{
       unsigned long v, flags;
+        u32 *p, *q ;
+        p = crng->state ;
+        q = (u32 *) &v ;

       if (crng_ready() &&
           (time_after(crng_global_init_time, crng->init_time) ||
            time_after(jiffies, crng->init_time + CRNG_RESEED_INTERVAL)))
               crng_reseed(crng, crng == &primary_crng ? &input_pool : NULL);
       spin_lock_irqsave(&crng->lock, flags);
-       if (arch_get_random_long(&v))
-               crng->state[14] ^= v;
+       if (arch_get_random_long(&v))  {
+               p[14] ^= q[0];
+                if (sizeof(v) == 8)
+                        p[15] ^= q[1];
+        }
       chacha20_block(&crng->state[0], out);
       if (crng->state[12] == 0)
               crng->state[13]++;
--

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ