2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:52 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:52 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:52 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
|
|
|
|
|
2024-10-16 15:57:28 +02:00
|
|
|
|
2026-04-19 23:33:46 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:19 -07:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-05 17:02:17 -07:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:05 -07:00
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2026-04-19 23:33:57 -07:00
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
2026-04-19 23:34:07 -07:00
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:54 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:03 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2026-04-19 23:34:10 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:22 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:22 -07:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:10 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:10 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
crypto: drbg - Include get_random_bytes() output in additional input
Woodage & Shumow (2018) (https://eprint.iacr.org/2018/349.pdf) showed
that contrary to the claims made by NIST in SP800-90A, HMAC_DRBG doesn't
satisfy the formal definition of forward secrecy (i.e. "backtracking
resistance") when it's called with an empty additional input string.
The actual attack seems pretty benign, as it doesn't actually give the
attacker any previous RNG output, but rather just allows them to test
whether their guess of the previous block of RNG output is correct.
Regardless, it's an annoying design flaw, and it's yet another example
of why NIST's DRBGs aren't all that great.
Meanwhile, the kernel's HMAC_DRBG code also tries to reseed itself
automatically after random.c has reseeded itself. But the
implementation is buggy, as it just checks whether 300 seconds have
elapsed, rather than looking at the actual generation counter.
Let's just follow the example of BoringSSL and use the conservative
approach of always including 32 bytes of "regular" random data in the
additional input string. This fixes both issues described above.
This does reduce performance. But this should be tolerable, since:
- Due to earlier changes, the kernel code that was previously using
drbg.c regardless of FIPS mode is now using it only in FIPS mode.
- The additional input string is processed only once per request. So
if a lot of bytes are generated at once, the cost is amortized.
- The NIST DRBGs are notoriously slow anyway.
Note that this fix should have no impact (either positive or negative)
on FIPS 140 certifiability. From FIPS's point of view the code added by
this commit simply doesn't matter: it adds zero entropy to something
that doesn't need to contain entropy.
Fixes: 541af946fe13 ("crypto: drbg - SP800-90A Deterministic Random Bit Generator")
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-04-19 23:34:18 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
crypto: drbg - Include get_random_bytes() output in additional input
Woodage & Shumow (2018) (https://eprint.iacr.org/2018/349.pdf) showed
that contrary to the claims made by NIST in SP800-90A, HMAC_DRBG doesn't
satisfy the formal definition of forward secrecy (i.e. "backtracking
resistance") when it's called with an empty additional input string.
The actual attack seems pretty benign, as it doesn't actually give the
attacker any previous RNG output, but rather just allows them to test
whether their guess of the previous block of RNG output is correct.
Regardless, it's an annoying design flaw, and it's yet another example
of why NIST's DRBGs aren't all that great.
Meanwhile, the kernel's HMAC_DRBG code also tries to reseed itself
automatically after random.c has reseeded itself. But the
implementation is buggy, as it just checks whether 300 seconds have
elapsed, rather than looking at the actual generation counter.
Let's just follow the example of BoringSSL and use the conservative
approach of always including 32 bytes of "regular" random data in the
additional input string. This fixes both issues described above.
This does reduce performance. But this should be tolerable, since:
- Due to earlier changes, the kernel code that was previously using
drbg.c regardless of FIPS mode is now using it only in FIPS mode.
- The additional input string is processed only once per request. So
if a lot of bytes are generated at once, the cost is amortized.
- The NIST DRBGs are notoriously slow anyway.
Note that this fix should have no impact (either positive or negative)
on FIPS 140 certifiability. From FIPS's point of view the code added by
this commit simply doesn't matter: it adds zero entropy to something
that doesn't need to contain entropy.
Fixes: 541af946fe13 ("crypto: drbg - SP800-90A Deterministic Random Bit Generator")
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-04-19 23:34:18 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
crypto: drbg - Include get_random_bytes() output in additional input
Woodage & Shumow (2018) (https://eprint.iacr.org/2018/349.pdf) showed
that contrary to the claims made by NIST in SP800-90A, HMAC_DRBG doesn't
satisfy the formal definition of forward secrecy (i.e. "backtracking
resistance") when it's called with an empty additional input string.
The actual attack seems pretty benign, as it doesn't actually give the
attacker any previous RNG output, but rather just allows them to test
whether their guess of the previous block of RNG output is correct.
Regardless, it's an annoying design flaw, and it's yet another example
of why NIST's DRBGs aren't all that great.
Meanwhile, the kernel's HMAC_DRBG code also tries to reseed itself
automatically after random.c has reseeded itself. But the
implementation is buggy, as it just checks whether 300 seconds have
elapsed, rather than looking at the actual generation counter.
Let's just follow the example of BoringSSL and use the conservative
approach of always including 32 bytes of "regular" random data in the
additional input string. This fixes both issues described above.
This does reduce performance. But this should be tolerable, since:
- Due to earlier changes, the kernel code that was previously using
drbg.c regardless of FIPS mode is now using it only in FIPS mode.
- The additional input string is processed only once per request. So
if a lot of bytes are generated at once, the cost is amortized.
- The NIST DRBGs are notoriously slow anyway.
Note that this fix should have no impact (either positive or negative)
on FIPS 140 certifiability. From FIPS's point of view the code added by
this commit simply doesn't matter: it adds zero entropy to something
that doesn't need to contain entropy.
Fixes: 541af946fe13 ("crypto: drbg - SP800-90A Deterministic Random Bit Generator")
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-04-19 23:34:18 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
crypto: drbg - Include get_random_bytes() output in additional input
Woodage & Shumow (2018) (https://eprint.iacr.org/2018/349.pdf) showed
that contrary to the claims made by NIST in SP800-90A, HMAC_DRBG doesn't
satisfy the formal definition of forward secrecy (i.e. "backtracking
resistance") when it's called with an empty additional input string.
The actual attack seems pretty benign, as it doesn't actually give the
attacker any previous RNG output, but rather just allows them to test
whether their guess of the previous block of RNG output is correct.
Regardless, it's an annoying design flaw, and it's yet another example
of why NIST's DRBGs aren't all that great.
Meanwhile, the kernel's HMAC_DRBG code also tries to reseed itself
automatically after random.c has reseeded itself. But the
implementation is buggy, as it just checks whether 300 seconds have
elapsed, rather than looking at the actual generation counter.
Let's just follow the example of BoringSSL and use the conservative
approach of always including 32 bytes of "regular" random data in the
additional input string. This fixes both issues described above.
This does reduce performance. But this should be tolerable, since:
- Due to earlier changes, the kernel code that was previously using
drbg.c regardless of FIPS mode is now using it only in FIPS mode.
- The additional input string is processed only once per request. So
if a lot of bytes are generated at once, the cost is amortized.
- The NIST DRBGs are notoriously slow anyway.
Note that this fix should have no impact (either positive or negative)
on FIPS 140 certifiability. From FIPS's point of view the code added by
this commit simply doesn't matter: it adds zero entropy to something
that doesn't need to contain entropy.
Fixes: 541af946fe13 ("crypto: drbg - SP800-90A Deterministic Random Bit Generator")
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-04-19 23:34:18 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2025-12-19 16:40:24 +01:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-05-05 17:02:17 -07:00
|
|
|
|
2014-07-06 02:24:03 +02:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2015-05-25 15:09:59 +02:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2015-05-25 15:09:59 +02:00
|
|
|
|
2021-11-30 15:10:07 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
2021-11-30 15:10:07 +01:00
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
crypto: drbg - always seeded with SP800-90B compliant noise source
As the Jitter RNG provides an SP800-90B compliant noise source, use this
noise source always for the (re)seeding of the DRBG.
To make sure the DRBG is always properly seeded, the reseed threshold
is reduced to 1<<20 generate operations.
The Jitter RNG may report health test failures. Such health test
failures are treated as transient as follows. The DRBG will not reseed
from the Jitter RNG (but from get_random_bytes) in case of a health
test failure. Though, it produces the requested random number.
The Jitter RNG has a failure counter where at most 1024 consecutive
resets due to a health test failure are considered as a transient error.
If more consecutive resets are required, the Jitter RNG will return
a permanent error which is returned to the caller by the DRBG. With this
approach, the worst case reseed threshold is significantly lower than
mandated by SP800-90A in order to seed with an SP800-90B noise source:
the DRBG has a reseed threshold of 2^20 * 1024 = 2^30 generate requests.
Yet, in case of a transient Jitter RNG health test failure, the DRBG is
seeded with the data obtained from get_random_bytes.
However, if the Jitter RNG fails during the initial seeding operation
even due to a health test error, the DRBG will send an error to the
caller because at that time, the DRBG has received no seed that is
SP800-90B compliant.
Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2020-04-17 21:34:03 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-09 21:55:38 +08:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-25 15:09:59 +02:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:20 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:06 -07:00
|
|
|
|
2019-05-08 16:19:24 +02:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2015-03-06 08:26:31 +01:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2025-12-19 16:40:24 +01:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:07 -07:00
|
|
|
|
|
|
|
|
|
2015-04-20 11:29:15 +08:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-05-05 17:02:17 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2026-04-19 23:34:04 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:20 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2014-07-06 02:25:36 +02:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:33:57 -07:00
|
|
|
|
2015-04-18 19:36:17 +02:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:21 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-18 19:36:17 +02:00
|
|
|
|
2015-04-20 11:29:15 +08:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2015-04-21 10:46:41 +08:00
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:08 -07:00
|
|
|
|
2015-04-21 10:46:41 +08:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:14 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:14 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
2026-04-19 23:34:15 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:14 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:14 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:15 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:14 -07:00
|
|
|
|
2026-04-19 23:34:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:17 -07:00
|
|
|
|
2026-04-19 23:34:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:15 -07:00
|
|
|
|
2026-04-19 23:34:17 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:17 -07:00
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:17 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:13 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2021-09-10 13:01:17 -06:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-21 16:37:42 -08:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-01-19 10:05:54 +01:00
|
|
|
|
2026-04-19 23:34:07 -07:00
|
|
|
|
2015-04-20 11:26:48 +08:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-13 22:52:57 +08:00
|
|
|
|
2026-05-05 17:02:17 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:47 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2026-04-19 23:33:47 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2026-05-05 17:02:17 -07:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-09 21:02:36 +02:00
|
|
|
|
2026-04-19 23:34:11 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:02 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-20 15:06:51 +00:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:02 -07:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
|
|
|
|
|
2026-04-19 23:34:02 -07:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
|
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2014-07-10 16:52:04 +08:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
crypto: drbg - Remove support for "prediction resistance"
"Prediction resistance", i.e. the property that the RNG's output is
unpredictable even after a state compromise, might sound like a nice
property to have. In reality, it's not very practical, as it requires
that fresh entropy be pulled on every request. (The normal Linux RNG
doesn't provide prediction resistance.) In the case of drbg.c, that
means pulling from "jitterentropy", which is extremely slow.
For some perspective, running a simple benchmark, generating 32 random
bytes takes the following amount of time:
get_random_bytes(): 90 ns
drbg_nopr_hmac_sha512: 3707 ns
drbg_pr_hmac_sha512: 773082 ns
So at least in this case, the "pr" (prediction-resistant) DRBG is over
200 times slower than the "nopr" (non-prediction-resistant) DRBG, or
over 8000 times slower than the normal Linux RNG. While anyone using
drbg.c has always had to tolerate that it's slower than the normal Linux
RNG, the "pr" DRBG is clearly at another level of slowness.
Thus, the following is also entirely unsurprising:
- FIPS 140-3 doesn't actually require that SP800-90A DRBG
implementations support prediction resistance. The non-prediction
resistant DRBGs can be, and have been, certified.
- drbg.c registers "drbg_nopr_hmac_sha512" with a higher cra_priority
than "drbg_pr_hmac_sha512". So "drbg_nopr_hmac_sha512" is already
the one actually being used in practice.
Given these considerations, it's clear that "drbg_pr_hmac_sha512" isn't
actually useful, and it essentially just existed as another curiosity in
the museum of crypto algorithms. Remove it to simplify the code.
Suggested-by: Joachim Vandersmissen <joachim@jvdsn.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-05-05 17:02:58 -07:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
2025-04-30 16:17:02 +08:00
|
|
|
|
2014-05-31 15:44:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-19 23:33:57 -07:00
|
|
|
|
2015-06-03 14:49:28 +08:00
|
|
|
|
2026-04-19 23:34:09 -07:00
|
|
|
|