diff options
author | Takashi Iwai <tiwai@suse.de> | 2023-08-24 09:27:21 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2023-08-24 09:27:21 +0200 |
commit | a057efde80453c68c60e156803578a654b52c39f (patch) | |
tree | 51c312e95de536b6a29d18a12cfdba72029e09ad /include/linux/mmap_lock.h | |
parent | 17a1eab7b70d85fc5711f37bb6e530b771736bb7 (diff) | |
parent | a4a6eed851bb661477654d772807d0e5aee5629c (diff) |
Merge branch 'for-linus' into for-next
Back-merge the 6.5-devel branch for the clean patch application for
6.6 and resolving merge conflicts.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/linux/mmap_lock.h')
-rw-r--r-- | include/linux/mmap_lock.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index aab8f1b28d26..e05e167dbd16 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -76,8 +76,14 @@ static inline void mmap_assert_write_locked(struct mm_struct *mm) static inline void vma_end_write_all(struct mm_struct *mm) { mmap_assert_write_locked(mm); - /* No races during update due to exclusive mmap_lock being held */ - WRITE_ONCE(mm->mm_lock_seq, mm->mm_lock_seq + 1); + /* + * Nobody can concurrently modify mm->mm_lock_seq due to exclusive + * mmap_lock being held. + * We need RELEASE semantics here to ensure that preceding stores into + * the VMA take effect before we unlock it with this store. + * Pairs with ACQUIRE semantics in vma_start_read(). + */ + smp_store_release(&mm->mm_lock_seq, mm->mm_lock_seq + 1); } #else static inline void vma_end_write_all(struct mm_struct *mm) {} |