Message ID | 20221223003833.2793963-1-zokeefe@google.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm/shmem: restore SHMEM_HUGE_DENY precedence over MADV_COLLAPSE | expand |
On 23.12.22 01:38, Zach O'Keefe wrote: > SHMEM_HUGE_DENY is for emergency use by the admin, to disable allocation > of shmem huge pages if, for example, a dangerous bug is found in their > usage: see "deny" in Documentation/mm/transhuge.rst. An app using > madvise(,,MADV_COLLAPSE) should not be allowed to override it: restore > its precedence over shmem_huge_force. > > Fixes: 7c6c6cc4d3a2 ("mm/shmem: add flag to enforce shmem THP in hugepage_vma_check()") > Suggested-by: Hugh Dickins <hughd@google.com> > Signed-off-by: Zach O'Keefe <zokeefe@google.com> > Cc: Yang Shi <shy828301@gmail.com> > --- > mm/shmem.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index c301487be5fb..0005ab2c29af 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -478,12 +478,10 @@ bool shmem_is_huge(struct vm_area_struct *vma, struct inode *inode, > if (vma && ((vma->vm_flags & VM_NOHUGEPAGE) || > test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags))) > return false; > - if (shmem_huge_force) > - return true; > - if (shmem_huge == SHMEM_HUGE_FORCE) > - return true; > if (shmem_huge == SHMEM_HUGE_DENY) > return false; > + if (shmem_huge_force || shmem_huge == SHMEM_HUGE_FORCE) > + return true; > > switch (SHMEM_SB(inode->i_sb)->huge) { > case SHMEM_HUGE_ALWAYS: Looks sane to me Acked-by: David Hildenbrand <david@redhat.com>
diff --git a/mm/shmem.c b/mm/shmem.c index c301487be5fb..0005ab2c29af 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -478,12 +478,10 @@ bool shmem_is_huge(struct vm_area_struct *vma, struct inode *inode, if (vma && ((vma->vm_flags & VM_NOHUGEPAGE) || test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags))) return false; - if (shmem_huge_force) - return true; - if (shmem_huge == SHMEM_HUGE_FORCE) - return true; if (shmem_huge == SHMEM_HUGE_DENY) return false; + if (shmem_huge_force || shmem_huge == SHMEM_HUGE_FORCE) + return true; switch (SHMEM_SB(inode->i_sb)->huge) { case SHMEM_HUGE_ALWAYS:
SHMEM_HUGE_DENY is for emergency use by the admin, to disable allocation of shmem huge pages if, for example, a dangerous bug is found in their usage: see "deny" in Documentation/mm/transhuge.rst. An app using madvise(,,MADV_COLLAPSE) should not be allowed to override it: restore its precedence over shmem_huge_force. Fixes: 7c6c6cc4d3a2 ("mm/shmem: add flag to enforce shmem THP in hugepage_vma_check()") Suggested-by: Hugh Dickins <hughd@google.com> Signed-off-by: Zach O'Keefe <zokeefe@google.com> Cc: Yang Shi <shy828301@gmail.com> --- mm/shmem.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)