]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/mseal: small cleanups
authorLorenzo Stoakes <lorenzo.stoakes@oracle.com>
Fri, 25 Jul 2025 08:29:43 +0000 (09:29 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 2 Aug 2025 19:06:09 +0000 (12:06 -0700)
Drop the wholly unnecessary set_vma_sealed() helper(), which is used only
once, and place VMA_ITERATOR() declarations in the correct place.

Retain vma_is_sealed(), and use it instead of the confusingly named
can_modify_vma(), so it's abundantly clear what's being tested, rather
then a nebulous sense of 'can the VMA be modified'.

No functional change intended.

Link: https://lkml.kernel.org/r/98cf28d04583d632a6eb698e9ad23733bb6af26b.1753431105.git.lorenzo.stoakes@oracle.com
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com>
Reviewed-by: Pedro Falcato <pfalcato@suse.de>
Acked-by: David Hildenbrand <david@redhat.com>
Acked-by: Jeff Xu <jeffxu@chromium.org>
Cc: Jann Horn <jannh@google.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/madvise.c
mm/mprotect.c
mm/mremap.c
mm/mseal.c
mm/vma.c
mm/vma.h

index 7f9af2dbd044f247313bb3f365a2d2e8ed8a5b4f..35ed4ab0d7c53b94db11eb12e57d8b1b59134656 100644 (file)
@@ -1287,7 +1287,7 @@ static bool can_madvise_modify(struct madvise_behavior *madv_behavior)
        struct vm_area_struct *vma = madv_behavior->vma;
 
        /* If the VMA isn't sealed we're good. */
-       if (can_modify_vma(vma))
+       if (!vma_is_sealed(vma))
                return true;
 
        /* For a sealed VMA, we only care about discard operations. */
index 2ddd37b2f4628700f7814a9ad4ebdfe3b5c30ae8..78bded7acf7952b30f3f6d131c45af578e57f140 100644 (file)
@@ -766,7 +766,7 @@ mprotect_fixup(struct vma_iterator *vmi, struct mmu_gather *tlb,
        unsigned long charged = 0;
        int error;
 
-       if (!can_modify_vma(vma))
+       if (vma_is_sealed(vma))
                return -EPERM;
 
        if (newflags == oldflags) {
index e15cf2e444c72116518bd8f3d81df8aa4e31775c..ac39845e971804a858804a269f49732c3c82538b 100644 (file)
@@ -1651,7 +1651,7 @@ static int check_prep_vma(struct vma_remap_struct *vrm)
                return -EFAULT;
 
        /* If mseal()'d, mremap() is prohibited. */
-       if (!can_modify_vma(vma))
+       if (vma_is_sealed(vma))
                return -EPERM;
 
        /* Align to hugetlb page size, if required. */
index 1308e88ab18405d76ac1711ffff5e2734fe0c888..adbcc65e96609f0ebb1c4f2f4649acb262b58a15 100644 (file)
 #include <linux/sched.h>
 #include "internal.h"
 
-static inline void set_vma_sealed(struct vm_area_struct *vma)
-{
-       vm_flags_set(vma, VM_SEALED);
-}
-
 static int mseal_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma,
                struct vm_area_struct **prev, unsigned long start,
                unsigned long end, vm_flags_t newflags)
@@ -36,7 +31,7 @@ static int mseal_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma,
                goto out;
        }
 
-       set_vma_sealed(vma);
+       vm_flags_set(vma, VM_SEALED);
 out:
        *prev = vma;
        return ret;
@@ -53,7 +48,6 @@ static int check_mm_seal(unsigned long start, unsigned long end)
 {
        struct vm_area_struct *vma;
        unsigned long nstart = start;
-
        VMA_ITERATOR(vmi, current->mm, start);
 
        /* going through each vma to check. */
@@ -78,7 +72,6 @@ static int apply_mm_seal(unsigned long start, unsigned long end)
 {
        unsigned long nstart;
        struct vm_area_struct *vma, *prev;
-
        VMA_ITERATOR(vmi, current->mm, start);
 
        vma = vma_iter_load(&vmi);
index fc502b741dcf876243c99398bb3094c7b7981b9e..75fd2759964bdbc478abaf477ca53c56a1062737 100644 (file)
--- a/mm/vma.c
+++ b/mm/vma.c
@@ -1351,7 +1351,7 @@ static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms,
                }
 
                /* Don't bother splitting the VMA if we can't unmap it anyway */
-               if (!can_modify_vma(vms->vma)) {
+               if (vma_is_sealed(vms->vma)) {
                        error = -EPERM;
                        goto start_split_failed;
                }
@@ -1371,7 +1371,7 @@ static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms,
        for_each_vma_range(*(vms->vmi), next, vms->end) {
                long nrpages;
 
-               if (!can_modify_vma(next)) {
+               if (vma_is_sealed(next)) {
                        error = -EPERM;
                        goto modify_vma_failed;
                }
index 85db5e880fccee23b6fcc947b326f0bf284b116a..b123a9cdedb0d60667741f62d556f2bab6d8bedd 100644 (file)
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -559,31 +559,15 @@ struct vm_area_struct *vma_iter_next_rewind(struct vma_iterator *vmi,
 }
 
 #ifdef CONFIG_64BIT
-
 static inline bool vma_is_sealed(struct vm_area_struct *vma)
 {
        return (vma->vm_flags & VM_SEALED);
 }
-
-/*
- * check if a vma is sealed for modification.
- * return true, if modification is allowed.
- */
-static inline bool can_modify_vma(struct vm_area_struct *vma)
-{
-       if (unlikely(vma_is_sealed(vma)))
-               return false;
-
-       return true;
-}
-
 #else
-
-static inline bool can_modify_vma(struct vm_area_struct *vma)
+static inline bool vma_is_sealed(struct vm_area_struct *vma)
 {
-       return true;
+       return false;
 }
-
 #endif
 
 #if defined(CONFIG_STACK_GROWSUP)