[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aMV690M9WOS6rtWX@earth.li>
Date: Sat, 13 Sep 2025 15:08:55 +0100
From: Jonathan McDowell <noodles@...th.li>
To: Herbert Xu <herbert@...dor.apana.org.au>
Cc: Olivia Mackall <olivia@...enic.com>, linux-crypto@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-integrity@...r.kernel.org
Subject: Re: [PATCH] hwrng: core - Allow runtime disabling of the HW RNG
On Sat, Sep 13, 2025 at 11:56:27AM +0800, Herbert Xu wrote:
>On Mon, Sep 01, 2025 at 02:55:01PM +0100, Jonathan McDowell wrote:
>> From: Jonathan McDowell <noodles@...a.com>
>>
>> The HW RNG core allows for manual selection of which RNG device to use,
>> but does not allow for no device to be enabled. It may be desirable to
>> do this on systems with only a single suitable hardware RNG, where we
>> need exclusive access to other functionality on this device. In
>> particular when performing TPM firmware upgrades this lets us ensure the
>> kernel does not try to access the device.
>>
>> Before:
>>
>> root@...ian-qemu-efi:~# grep "" /sys/devices/virtual/misc/hw_random/rng_*
>> /sys/devices/virtual/misc/hw_random/rng_available:tpm-rng-0
>> /sys/devices/virtual/misc/hw_random/rng_current:tpm-rng-0
>> /sys/devices/virtual/misc/hw_random/rng_quality:1024
>> /sys/devices/virtual/misc/hw_random/rng_selected:0
>>
>> After:
>>
>> root@...ian-qemu-efi:~# grep "" /sys/devices/virtual/misc/hw_random/rng_*
>> /sys/devices/virtual/misc/hw_random/rng_available:tpm-rng-0 none
>> /sys/devices/virtual/misc/hw_random/rng_current:tpm-rng-0
>> /sys/devices/virtual/misc/hw_random/rng_quality:1024
>> /sys/devices/virtual/misc/hw_random/rng_selected:0
>>
>> root@...ian-qemu-efi:~# echo none > /sys/devices/virtual/misc/hw_random/rng_current
>> root@...ian-qemu-efi:~# grep "" /sys/devices/virtual/misc/hw_random/rng_*
>> /sys/devices/virtual/misc/hw_random/rng_available:tpm-rng-0 none
>> /sys/devices/virtual/misc/hw_random/rng_current:none
>> grep: /sys/devices/virtual/misc/hw_random/rng_quality: No such device
>> /sys/devices/virtual/misc/hw_random/rng_selected:1
>>
>> (Observe using bpftrace no calls to TPM being made)
>>
>> root@...ian-qemu-efi:~# echo "" > /sys/devices/virtual/misc/hw_random/rng_current
>> root@...ian-qemu-efi:~# grep "" /sys/devices/virtual/misc/hw_random/rng_*
>> /sys/devices/virtual/misc/hw_random/rng_available:tpm-rng-0 none
>> /sys/devices/virtual/misc/hw_random/rng_current:tpm-rng-0
>> /sys/devices/virtual/misc/hw_random/rng_quality:1024
>> /sys/devices/virtual/misc/hw_random/rng_selected:0
>>
>> (Observe using bpftrace that calls to the TPM resume)
>>
>> Signed-off-by: Jonathan McDowell <noodles@...a.com>
>> ---
>> drivers/char/hw_random/core.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
>> index 018316f54621..11c8077b792b 100644
>> --- a/drivers/char/hw_random/core.c
>> +++ b/drivers/char/hw_random/core.c
>> @@ -341,6 +341,10 @@ static ssize_t rng_current_store(struct device *dev,
>>
>> if (sysfs_streq(buf, "")) {
>> err = enable_best_rng();
>> + } else if (sysfs_streq(buf, "none")) {
>> + if (current_rng)
>> + cur_rng_set_by_user = 1;
>> + drop_current_rng();
>
>Is this setting supposed to be sticky?
>
>Because as it stands, if another HWRNG is registered after setting
>it to none, it would still become the default RNG which seems to be
>surprising.
Good point, I'd missed that (it's not likely to be an issue in my
situation), but I'll spin a v2 that fixes up hwrng_register() too.
J.
--
I'm an atheist myself - there is no Greg Hill.
Powered by blists - more mailing lists