mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00

This adds a type called VmaRef which is used when referencing a vma that you have read access to. Here, read access means that you hold either the mmap read lock or the vma read lock (or stronger). Additionally, a vma_lookup method is added to the mmap read guard, which enables you to obtain a &VmaRef in safe Rust code. This patch only provides a way to lock the mmap read lock, but a follow-up patch also provides a way to just lock the vma read lock. Link: https://lkml.kernel.org/r/20250408-vma-v16-2-d8b446e885d9@google.com Signed-off-by: Alice Ryhl <aliceryhl@google.com> Acked-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Acked-by: Liam R. Howlett <Liam.Howlett@Oracle.com> Reviewed-by: Jann Horn <jannh@google.com> Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org> Reviewed-by: Gary Guo <gary@garyguo.net> Cc: Alex Gaynor <alex.gaynor@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Balbir Singh <balbirs@nvidia.com> Cc: Benno Lossin <benno.lossin@proton.me> Cc: Björn Roy Baron <bjorn3_gh@protonmail.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Miguel Ojeda <ojeda@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Trevor Gross <tmgross@umich.edu> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
46 lines
755 B
C
46 lines
755 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#include <linux/mm.h>
|
|
#include <linux/sched/mm.h>
|
|
|
|
void rust_helper_mmgrab(struct mm_struct *mm)
|
|
{
|
|
mmgrab(mm);
|
|
}
|
|
|
|
void rust_helper_mmdrop(struct mm_struct *mm)
|
|
{
|
|
mmdrop(mm);
|
|
}
|
|
|
|
void rust_helper_mmget(struct mm_struct *mm)
|
|
{
|
|
mmget(mm);
|
|
}
|
|
|
|
bool rust_helper_mmget_not_zero(struct mm_struct *mm)
|
|
{
|
|
return mmget_not_zero(mm);
|
|
}
|
|
|
|
void rust_helper_mmap_read_lock(struct mm_struct *mm)
|
|
{
|
|
mmap_read_lock(mm);
|
|
}
|
|
|
|
bool rust_helper_mmap_read_trylock(struct mm_struct *mm)
|
|
{
|
|
return mmap_read_trylock(mm);
|
|
}
|
|
|
|
void rust_helper_mmap_read_unlock(struct mm_struct *mm)
|
|
{
|
|
mmap_read_unlock(mm);
|
|
}
|
|
|
|
struct vm_area_struct *rust_helper_vma_lookup(struct mm_struct *mm,
|
|
unsigned long addr)
|
|
{
|
|
return vma_lookup(mm, addr);
|
|
}
|