diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-24 10:29:50 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-24 10:29:50 -0700 |
| commit | 7a3fad30fd8b4b5e370906b3c554f64026f56c2f (patch) | |
| tree | ad1f004b3157bf01db1295b6de37df8673089989 /include/vdso/datapage.h | |
| parent | d1e9a63dcd7248385bbbccf1650d69e4af914f05 (diff) | |
| parent | ad8070cb1b4bd40aa19a5e3f7c24d7f62c71b382 (diff) | |
| download | linux-next-7a3fad30fd8b4b5e370906b3c554f64026f56c2f.tar.gz linux-next-7a3fad30fd8b4b5e370906b3c554f64026f56c2f.zip | |
Merge tag 'random-6.11-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random
Pull random number generator updates from Jason Donenfeld:
"This adds getrandom() support to the vDSO.
First, it adds a new kind of mapping to mmap(2), MAP_DROPPABLE, which
lets the kernel zero out pages anytime under memory pressure, which
enables allocating memory that never gets swapped to disk but also
doesn't count as being mlocked.
Then, the vDSO implementation of getrandom() is introduced in a
generic manner and hooked into random.c.
Next, this is implemented on x86. (Also, though it's not ready for
this pull, somebody has begun an arm64 implementation already)
Finally, two vDSO selftests are added.
There are also two housekeeping cleanup commits"
* tag 'random-6.11-rc1-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random:
MAINTAINERS: add random.h headers to RNG subsection
random: note that RNDGETPOOL was removed in 2.6.9-rc2
selftests/vDSO: add tests for vgetrandom
x86: vdso: Wire up getrandom() vDSO implementation
random: introduce generic vDSO getrandom() implementation
mm: add MAP_DROPPABLE for designating always lazily freeable mappings
Diffstat (limited to 'include/vdso/datapage.h')
| -rw-r--r-- | include/vdso/datapage.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/vdso/datapage.h b/include/vdso/datapage.h index 7647e0946f50..b85f24cac3f5 100644 --- a/include/vdso/datapage.h +++ b/include/vdso/datapage.h @@ -117,6 +117,16 @@ struct vdso_data { struct arch_vdso_data arch_data; }; +/** + * struct vdso_rng_data - vdso RNG state information + * @generation: counter representing the number of RNG reseeds + * @is_ready: boolean signaling whether the RNG is initialized + */ +struct vdso_rng_data { + u64 generation; + u8 is_ready; +}; + /* * We use the hidden visibility to prevent the compiler from generating a GOT * relocation. Not only is going through a GOT useless (the entry couldn't and @@ -128,6 +138,7 @@ struct vdso_data { */ extern struct vdso_data _vdso_data[CS_BASES] __attribute__((visibility("hidden"))); extern struct vdso_data _timens_data[CS_BASES] __attribute__((visibility("hidden"))); +extern struct vdso_rng_data _vdso_rng_data __attribute__((visibility("hidden"))); /** * union vdso_data_store - Generic vDSO data page |
