[PATCH v2 1/4] mm: factor out VMA stack and heap checks
David Hildenbrand
david at redhat.com
Wed Jul 19 08:18:02 UTC 2023
On 19.07.23 09:51, Kefeng Wang wrote:
> Factor out VMA stack and heap checks and name them
> vma_is_initial_stack() and vma_is_initial_heap() for
> general use.
>
> Cc: Christian Göttsche <cgzones at googlemail.com>
> Cc: David Hildenbrand <david at redhat.com>
> Signed-off-by: Kefeng Wang <wangkefeng.wang at huawei.com>
> ---
[...]
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 2dd73e4f3d8e..51f8c573db74 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -822,6 +822,27 @@ static inline bool vma_is_anonymous(struct vm_area_struct *vma)
> return !vma->vm_ops;
> }
>
Worth adding a similar comment like for vma_is_initial_stack() ?
> +static inline bool vma_is_initial_heap(const struct vm_area_struct *vma)
> +{
> + return vma->vm_start <= vma->vm_mm->brk &&
> + vma->vm_end >= vma->vm_mm->start_brk;
> +}
> +
> +/*
> + * Indicate if the VMA is a stack for the given task; for
> + * /proc/PID/maps that is the stack of the main task.
> + */
> +static inline bool vma_is_initial_stack(const struct vm_area_struct *vma)
> +{
> + /*
> + * We make no effort to guess what a given thread considers to be
> + * its "stack". It's not even well-defined for programs written
> + * languages like Go.
> + */
> + return vma->vm_start <= vma->vm_mm->start_stack &&
> + vma->vm_end >= vma->vm_mm->start_stack;
> +}
> +
> static inline bool vma_is_temporary_stack(struct vm_area_struct *vma)
> {
> int maybe_stack = vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP);
Reviewed-by: David Hildenbrand <david at redhat.com>
--
Cheers,
David / dhildenb
More information about the dri-devel
mailing list