mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
mm: tweak __vma_enter_locked()
Move the commentary on how __vma_enter_locked() behaves from the body of __vma_start_write() to the head of __vma_enter_locked() and merge it with the existing documentation. Also add a call to mmap_assert_write_locked(). Link: https://lkml.kernel.org/r/20251119042639.3937024-1-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Suren Baghdasaryan <surenb@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
31807483d3
commit
ecf371b2ca
@@ -46,9 +46,9 @@ EXPORT_SYMBOL(__mmap_lock_do_trace_released);
|
||||
#ifdef CONFIG_MMU
|
||||
#ifdef CONFIG_PER_VMA_LOCK
|
||||
/*
|
||||
* Return value: 0 if vma detached,
|
||||
* 1 if vma attached with no readers,
|
||||
* -EINTR if signal received,
|
||||
* __vma_enter_locked() returns 0 immediately if the vma is not
|
||||
* attached, otherwise it waits for any current readers to finish and
|
||||
* returns 1. Returns -EINTR if a signal is received while waiting.
|
||||
*/
|
||||
static inline int __vma_enter_locked(struct vm_area_struct *vma,
|
||||
bool detaching, int state)
|
||||
@@ -56,6 +56,8 @@ static inline int __vma_enter_locked(struct vm_area_struct *vma,
|
||||
int err;
|
||||
unsigned int tgt_refcnt = VMA_LOCK_OFFSET;
|
||||
|
||||
mmap_assert_write_locked(vma->vm_mm);
|
||||
|
||||
/* Additional refcnt if the vma is attached. */
|
||||
if (!detaching)
|
||||
tgt_refcnt++;
|
||||
@@ -91,11 +93,6 @@ int __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq,
|
||||
{
|
||||
int locked;
|
||||
|
||||
/*
|
||||
* __vma_enter_locked() returns false immediately if the vma is not
|
||||
* attached, otherwise it waits until refcnt is indicating that vma
|
||||
* is attached with no readers.
|
||||
*/
|
||||
locked = __vma_enter_locked(vma, false, state);
|
||||
if (locked < 0)
|
||||
return locked;
|
||||
|
||||
Reference in New Issue
Block a user