lkml.org 
[lkml]   [2023]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v2 1/5] mm: move vma_policy() and anon_vma_name() decls to mm_types.h
    From
    On 10/9/23 22:53, Lorenzo Stoakes wrote:
    > The vma_policy() define is a helper specifically for a VMA field so it
    > makes sense to host it in the memory management types header.
    >
    > The anon_vma_name(), anon_vma_name_alloc() and anon_vma_name_free()
    > functions are a little out of place in mm_inline.h as they define external
    > functions, and so it makes sense to locate them in mm_types.h.
    >
    > The purpose of these relocations is to make it possible to abstract static
    > inline wrappers which invoke both of these helpers.
    >
    > Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com>

    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>

    > ---
    > include/linux/mempolicy.h | 4 ----
    > include/linux/mm_inline.h | 20 +-------------------
    > include/linux/mm_types.h | 27 +++++++++++++++++++++++++++
    > 3 files changed, 28 insertions(+), 23 deletions(-)
    >
    > diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
    > index 3c208d4f0ee9..2801d5b0a4e9 100644
    > --- a/include/linux/mempolicy.h
    > +++ b/include/linux/mempolicy.h
    > @@ -89,8 +89,6 @@ static inline struct mempolicy *mpol_dup(struct mempolicy *pol)
    > return pol;
    > }
    >
    > -#define vma_policy(vma) ((vma)->vm_policy)
    > -
    > static inline void mpol_get(struct mempolicy *pol)
    > {
    > if (pol)
    > @@ -222,8 +220,6 @@ static inline struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
    > return NULL;
    > }
    >
    > -#define vma_policy(vma) NULL
    > -
    > static inline int
    > vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
    > {
    > diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
    > index 8148b30a9df1..9ae7def16cb2 100644
    > --- a/include/linux/mm_inline.h
    > +++ b/include/linux/mm_inline.h
    > @@ -4,6 +4,7 @@
    >
    > #include <linux/atomic.h>
    > #include <linux/huge_mm.h>
    > +#include <linux/mm_types.h>
    > #include <linux/swap.h>
    > #include <linux/string.h>
    > #include <linux/userfaultfd_k.h>
    > @@ -352,15 +353,6 @@ void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
    > }
    >
    > #ifdef CONFIG_ANON_VMA_NAME
    > -/*
    > - * mmap_lock should be read-locked when calling anon_vma_name(). Caller should
    > - * either keep holding the lock while using the returned pointer or it should
    > - * raise anon_vma_name refcount before releasing the lock.
    > - */
    > -extern struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma);
    > -extern struct anon_vma_name *anon_vma_name_alloc(const char *name);
    > -extern void anon_vma_name_free(struct kref *kref);
    > -
    > /* mmap_lock should be read-locked */
    > static inline void anon_vma_name_get(struct anon_vma_name *anon_name)
    > {
    > @@ -415,16 +407,6 @@ static inline bool anon_vma_name_eq(struct anon_vma_name *anon_name1,
    > }
    >
    > #else /* CONFIG_ANON_VMA_NAME */
    > -static inline struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
    > -{
    > - return NULL;
    > -}
    > -
    > -static inline struct anon_vma_name *anon_vma_name_alloc(const char *name)
    > -{
    > - return NULL;
    > -}
    > -
    > static inline void anon_vma_name_get(struct anon_vma_name *anon_name) {}
    > static inline void anon_vma_name_put(struct anon_vma_name *anon_name) {}
    > static inline void dup_anon_vma_name(struct vm_area_struct *orig_vma,
    > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
    > index 36c5b43999e6..21eb56145f57 100644
    > --- a/include/linux/mm_types.h
    > +++ b/include/linux/mm_types.h
    > @@ -546,6 +546,27 @@ struct anon_vma_name {
    > char name[];
    > };
    >
    > +#ifdef CONFIG_ANON_VMA_NAME
    > +/*
    > + * mmap_lock should be read-locked when calling anon_vma_name(). Caller should
    > + * either keep holding the lock while using the returned pointer or it should
    > + * raise anon_vma_name refcount before releasing the lock.
    > + */
    > +struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma);
    > +struct anon_vma_name *anon_vma_name_alloc(const char *name);
    > +void anon_vma_name_free(struct kref *kref);
    > +#else /* CONFIG_ANON_VMA_NAME */
    > +static inline struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
    > +{
    > + return NULL;
    > +}
    > +
    > +static inline struct anon_vma_name *anon_vma_name_alloc(const char *name)
    > +{
    > + return NULL;
    > +}
    > +#endif
    > +
    > struct vma_lock {
    > struct rw_semaphore lock;
    > };
    > @@ -662,6 +683,12 @@ struct vm_area_struct {
    > struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
    > } __randomize_layout;
    >
    > +#ifdef CONFIG_NUMA
    > +#define vma_policy(vma) ((vma)->vm_policy)
    > +#else
    > +#define vma_policy(vma) NULL
    > +#endif
    > +
    > #ifdef CONFIG_SCHED_MM_CID
    > struct mm_cid {
    > u64 time;

    \
     
     \ /
      Last update: 2023-10-10 08:47    [W:7.312 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site