lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20230201000116.1333160-1-surenb@google.com> Date: Tue, 31 Jan 2023 16:01:16 -0800 From: Suren Baghdasaryan <surenb@...gle.com> To: akpm@...ux-foundation.org Cc: michel@...pinasse.org, jglisse@...gle.com, mhocko@...e.com, vbabka@...e.cz, hannes@...xchg.org, mgorman@...hsingularity.net, dave@...olabs.net, willy@...radead.org, liam.howlett@...cle.com, peterz@...radead.org, ldufour@...ux.ibm.com, paulmck@...nel.org, mingo@...hat.com, will@...nel.org, luto@...nel.org, songliubraving@...com, peterx@...hat.com, david@...hat.com, dhowells@...hat.com, hughd@...gle.com, bigeasy@...utronix.de, kent.overstreet@...ux.dev, punit.agrawal@...edance.com, lstoakes@...il.com, peterjung1337@...il.com, rientjes@...gle.com, axelrasmussen@...gle.com, joelaf@...gle.com, minchan@...gle.com, rppt@...nel.org, 42.hyeyoo@...il.com, jannh@...gle.com, shakeelb@...gle.com, tatashin@...gle.com, edumazet@...gle.com, gthelen@...gle.com, gurua@...gle.com, arjunroy@...gle.com, soheil@...gle.com, leewalsh@...gle.com, posk@...gle.com, linux-mm@...ck.org, linux-arm-kernel@...ts.infradead.org, linuxppc-dev@...ts.ozlabs.org, x86@...nel.org, linux-kernel@...r.kernel.org, kernel-team@...roid.com, surenb@...gle.com Subject: [PATCH 1/1] mm: introduce vm_flags_reset_once to replace WRITE_ONCE vm_flags updates Provide vm_flags_reset_once() and replace the vm_flags updates which used WRITE_ONCE() to prevent compiler optimizations. Fixes: 0cce31a0aa0e ("mm: replace vma->vm_flags direct modifications with modifier calls") Reported-by: Hyeonggon Yoo <42.hyeyoo@...il.com> Signed-off-by: Suren Baghdasaryan <surenb@...gle.com> --- Notes: - The patch applies cleanly over mm-unstable - The SHA in Fixes: line is from mm-unstable, so is... unstable include/linux/mm.h | 7 +++++++ mm/mlock.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 5bf0ad48faaa..23ce04f6e91e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -648,6 +648,13 @@ static inline void vm_flags_reset(struct vm_area_struct *vma, vm_flags_init(vma, flags); } +static inline void vm_flags_reset_once(struct vm_area_struct *vma, + vm_flags_t flags) +{ + mmap_assert_write_locked(vma->vm_mm); + WRITE_ONCE(ACCESS_PRIVATE(vma, __vm_flags), flags); +} + static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags) { diff --git a/mm/mlock.c b/mm/mlock.c index ed49459e343e..617469fce96d 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -380,7 +380,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma, */ if (newflags & VM_LOCKED) newflags |= VM_IO; - vm_flags_reset(vma, newflags); + vm_flags_reset_once(vma, newflags); lru_add_drain(); walk_page_range(vma->vm_mm, start, end, &mlock_walk_ops, NULL); @@ -388,7 +388,7 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma, if (newflags & VM_IO) { newflags &= ~VM_IO; - vm_flags_reset(vma, newflags); + vm_flags_reset_once(vma, newflags); } } -- 2.39.1.456.gfc5497dd1b-goog
Powered by blists - more mailing lists