APPLIED: [[SCRIPT=remove_re|Re: [SRU][F/aws][PATCH 0/5] AWS: fix out of entropy on Graviton 2 instances types (mg6.*)]]
Tim Gardner
tim.gardner at canonical.com
Fri May 7 16:19:43 UTC 2021
Applied to focal:linux-aws master. Thanks.
-rtg
On 5/7/21 2:15 AM, Andrea Righi wrote:
> BugLink: https://bugs.launchpad.net/bugs/1927692
>
> [Impact]
>
> AWS Graviton 2 instances do not have enough entropy available at boot,
> so any task that require entropy (even reading few bytes from
> /dev/random) will be stuck forever.
>
> [Fix]
>
> The proper fix for this problem is to correctly refill the entropy pool
> with some real random data using some hardware-generated randomness.
>
> In the meantime a reasonable workaround can be to apply the following
> upstream commits:
>
> 30c08efec888 random: make /dev/random be almost like /dev/urandom
> 48446f198f9a random: ignore GRND_RANDOM in getentropy(2)
> 75551dbf112c random: add GRND_INSECURE to return best-effort non-cryptographic bytes
> c6f1deb15878 random: Add a urandom_read_nowait() for random APIs that don't warn
> 4c8d062186d9 random: Don't wake crng_init_wait when crng_init == 1
>
> In this way the system will not run out of entropy and will be able to
> provide best-effort randomness in any case, preventing the out of
> entropy issue on the AWS Gravion 2 instances.
>
> [Test plan]
>
> Execute the following command on any m6g instance:
>
> dd bs=32 count=1 if=/dev/random of=/dev/null
>
> This should return quickly, if not it means that the system does not
> have enough entropy available. When the problem happens this command
> hangs forever.
>
> [Where problems could occur]
>
> This changes affect the read semantics of /dev/random to be the same as
> /dev/urandom except that reads will block until the CRNG is ready. This
> should not materially break any API. Any code that worked without these
> changes should work at least as well as before. However, applications
> that have strict randomness requirements might be affected by the
> provided best-effort randomness, so we may need to apply more
> commits/changes to introduce a proper hardware entropy support on
> Graviton 2 instances to provide a better quality of randomness. In the
> meantime these upstream changes consist a reasonable workaround to
> prevent applications from hanging forever on the mg6.* instances.
>
> ----------------------------------------------------------------
> Andy Lutomirski (5):
> random: add GRND_INSECURE to return best-effort non-cryptographic bytes
> random: Don't wake crng_init_wait when crng_init == 1
> random: Add a urandom_read_nowait() for random APIs that don't warn
> random: ignore GRND_RANDOM in getentropy(2)
> random: make /dev/random be almost like /dev/urandom
>
> drivers/char/random.c | 81 +++++++++++++++++++++++++++++++++------------------------------------------------
> include/uapi/linux/random.h | 4 +++-
> 2 files changed, 36 insertions(+), 49 deletions(-)
>
>
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list