* Alice Ryhl <aliceryhl@xxxxxxxxxx> [250213 06:04]: > This updates the vm_area_struct support to use the approach we discussed > at LPC where there are several different Rust wrappers for > vm_area_struct depending on the kind of access you have to the vma. Each > case allows a different set of operations on the vma. > > MM folks, what do you prefer I do for the MAINTAINERS file? Would you > prefer that I add these files under MEMORY MANAGEMENT, or would you like > a separate entry similar to the BLOCK LAYER DEVICE DRIVER API [RUST] > entry? Or something else? > > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> Acked-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Thanks for doing this. > --- > Changes in v14: > - Rename VmArea* to Vma* as suggested by Liam. > - Update a few comments in patch 02. > - Link to v13: https://lore.kernel.org/r/20250203-vma-v13-0-2b998268a396@xxxxxxxxxx > > Changes in v13: > - Rebase on v6.14-rc1. > - Remove casts that are now unnecessary due to improved Rust/C integer > type mappings. > - Link to v12: https://lore.kernel.org/r/20250115-vma-v12-0-375099ae017a@xxxxxxxxxx > > Changes in v12: > - Add additional documentation to modules at the top of mm.rs and virt.rs. > - Explain why the name Mm is used in commit message of patch 1. > - Expand zap_page_range_single with docs suggested by Lorenzo. > - Update safety comment in vm_insert_page > - Mention that VmAreaMixedMap is identical to VmAreaRef except for VM_MIXEDMAP. > - Update docs for as_mixedmap_vma. > - Add additional docs for VmAreaNew struct. > - Rename `get_read` -> `readable` and equivalent for write/exec. > - Use mut pointers for `from_raw` for VMAs. > - Update safety comment for fops_mmap. > - Add additional docs for MiscDevice::mmap. > - Don't introduce and immediately delete mmgrab_current. > - Reduce active_pid_ns comment at Andreas's suggestion and link to get_pid_ns. > - Fix documentation test in rust/kernel/task.rs. > - Fix warning about unused variables in lock_vma_under_rcu when > CONFIG_PER_VMA_LOCK=n. > - Fix minor typos. > - Link to v11: https://lore.kernel.org/r/20241211-vma-v11-0-466640428fc3@xxxxxxxxxx > > Changes in v11: > - Add accessor for the vm_mm field of vm_area_struct. > - Pass the file to MiscDevice::mmap for consistency with > https://lore.kernel.org/r/20241210-miscdevice-file-param-v3-1-b2a79b666dc5@xxxxxxxxxx > - Link to v10: https://lore.kernel.org/r/20241129-vma-v10-0-4dfff05ba927@xxxxxxxxxx > > Changes in v10: > - Update docs for `set_io`. > - Check address in `zap_page_range_single`. > - Completely redo the last patch. > - Link to v9: https://lore.kernel.org/r/20241122-vma-v9-0-7127bfcdd54e@xxxxxxxxxx > > Changes in v9: > - Be more explicit about VmAreaNew being used with f_ops->mmap(). > - Point out that clearing VM_MAYWRITE is irreversible. > - Use __vm_flags to set the flags. > - Use as_ and into_ prefixes for conversions. > - Update lock_vma_under_rcu docs and commit msg > - Mention that VmAreaRef::end is exclusive. > - Reword docs for zap_page_range_single. > - Minor fixes to flag docs. > - Add way to access current->mm without a refcount increment. > - Link to v8: https://lore.kernel.org/r/20241120-vma-v8-0-eb31425da66b@xxxxxxxxxx > > Changes in v8: > - Split series into more commits to ease review. > - Improve read locks based on Lorenzo's doc: either the mmap or vma lock > can be used. > - Get rid of mmap write lock because it's possible to avoid the need for > it. > - Do not allow invalid flag combinations on VmAreaNew. > - Link to v7: https://lore.kernel.org/r/20241014-vma-v7-0-01e32f861195@xxxxxxxxxx > > Changes in v7: > - Make the mmap read/write lock guards respect strict owner semantics. > - Link to v6: https://lore.kernel.org/r/20241010-vma-v6-0-d89039b6f573@xxxxxxxxxx > > Changes in v6: > - Introduce VmArea{Ref,Mut,New} distinction. > - Add a second patchset for miscdevice. > - Rebase on char-misc-next (currently on v6.12-rc2). > - Link to v5: https://lore.kernel.org/r/20240806-vma-v5-1-04018f05de2b@xxxxxxxxxx > > Changes in v5: > - Rename VmArea::from_raw_vma to from_raw. > - Use Pin for mutable VmArea references. > - Go through `ARef::from` in `mmgrab_current`. > - Link to v4: https://lore.kernel.org/r/20240802-vma-v4-1-091a87058a43@xxxxxxxxxx > > Changes in v4: > - Pull out ARef::into_raw into a separate patch. > - Update invariants and struct documentation. > - Rename from_raw_mm to from_raw. > - Link to v3: https://lore.kernel.org/r/20240801-vma-v3-1-db6c1c0afda9@xxxxxxxxxx > > Changes in v3: > - Reorder entries in mm.rs. > - Use ARef for mmput_async helper. > - Clarify that VmArea requires you to hold the mmap read or write lock. > - Link to v2: https://lore.kernel.org/r/20240727-vma-v2-1-ab3e5927dc3a@xxxxxxxxxx > > Changes in v2: > - mm.rs is redesigned from scratch making use of AsRef > - Add notes about whether destructors may sleep > - Rename Area to VmArea > - Link to v1: https://lore.kernel.org/r/20240723-vma-v1-1-32ad5a0118ee@xxxxxxxxxx > > --- > Alice Ryhl (8): > mm: rust: add abstraction for struct mm_struct > mm: rust: add vm_area_struct methods that require read access > mm: rust: add vm_insert_page > mm: rust: add lock_vma_under_rcu > mm: rust: add mmput_async support > mm: rust: add VmaNew for f_ops->mmap() > rust: miscdevice: add mmap support > task: rust: rework how current is accessed > > rust/helpers/helpers.c | 1 + > rust/helpers/mm.c | 50 +++++ > rust/kernel/lib.rs | 1 + > rust/kernel/miscdevice.rs | 44 +++++ > rust/kernel/mm.rs | 341 +++++++++++++++++++++++++++++++++ > rust/kernel/mm/virt.rs | 471 ++++++++++++++++++++++++++++++++++++++++++++++ > rust/kernel/task.rs | 247 ++++++++++++------------ > 7 files changed, 1037 insertions(+), 118 deletions(-) > --- > base-commit: a64dcfb451e254085a7daee5fe51bf22959d52d3 > change-id: 20240723-vma-f80119f9fb35 > > Best regards, > -- > Alice Ryhl <aliceryhl@xxxxxxxxxx> >