mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
mm/mseal: small cleanups
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>
This commit is contained in:
parent
d0b47a6866
commit
8b2914162a
@ -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. */
|
||||
|
@ -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) {
|
||||
|
@ -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. */
|
||||
|
@ -15,11 +15,6 @@
|
||||
#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);
|
||||
|
4
mm/vma.c
4
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;
|
||||
}
|
||||
|
20
mm/vma.h
20
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)
|
||||
|
Loading…
Reference in New Issue
Block a user