include/linux/hugetlb.h | 8 ++++++++ 1 file changed, 8 insertions(+)
Introduce guard support to simplify the usage of the
hugetlb_vma_{lock,unlock}_{read,write}.
Signed-off-by: Fushuai Wang <wangfushuai@baidu.com>
---
include/linux/hugetlb.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 8e63e46b8e1f..f97cb2f123a3 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -15,6 +15,7 @@
#include <linux/gfp.h>
#include <linux/userfaultfd_k.h>
#include <linux/nodemask.h>
+#include <linux/cleanup.h>
struct ctl_table;
struct user_struct;
@@ -468,6 +469,13 @@ static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long addr)
#endif /* !CONFIG_HUGETLB_PAGE */
+DEFINE_GUARD(hugetlb_vma_read, struct vm_area_struct *,
+ hugetlb_vma_lock_read(_T), hugetlb_vma_unlock_read(_T))
+
+DEFINE_GUARD(hugetlb_vma_write, struct vm_area_struct *,
+ hugetlb_vma_lock_write(_T), hugetlb_vma_unlock_write(_T))
+DEFINE_GUARD_COND(hugetlb_vma_write, _try, hugetlb_vma_trylock_write(_T))
+
#ifndef pgd_write
static inline int pgd_write(pgd_t pgd)
{
--
2.36.1
On 11/28/25 12:02, Fushuai Wang wrote:
> Introduce guard support to simplify the usage of the
> hugetlb_vma_{lock,unlock}_{read,write}.
>
> Signed-off-by: Fushuai Wang <wangfushuai@baidu.com>
> ---
> include/linux/hugetlb.h | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
> index 8e63e46b8e1f..f97cb2f123a3 100644
> --- a/include/linux/hugetlb.h
> +++ b/include/linux/hugetlb.h
> @@ -15,6 +15,7 @@
> #include <linux/gfp.h>
> #include <linux/userfaultfd_k.h>
> #include <linux/nodemask.h>
> +#include <linux/cleanup.h>
>
> struct ctl_table;
> struct user_struct;
> @@ -468,6 +469,13 @@ static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long addr)
>
> #endif /* !CONFIG_HUGETLB_PAGE */
>
> +DEFINE_GUARD(hugetlb_vma_read, struct vm_area_struct *,
> + hugetlb_vma_lock_read(_T), hugetlb_vma_unlock_read(_T))
> +
> +DEFINE_GUARD(hugetlb_vma_write, struct vm_area_struct *,
> + hugetlb_vma_lock_write(_T), hugetlb_vma_unlock_write(_T))
> +DEFINE_GUARD_COND(hugetlb_vma_write, _try, hugetlb_vma_trylock_write(_T))
Do I understand correctly that the code you are introducing does not
have any users?
--
Cheers
David
>> include/linux/hugetlb.h | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h >> index 8e63e46b8e1f..f97cb2f123a3 100644 >> --- a/include/linux/hugetlb.h >> +++ b/include/linux/hugetlb.h >> @@ -15,6 +15,7 @@ >> #include <linux/gfp.h> >> #include <linux/userfaultfd_k.h> >> #include <linux/nodemask.h> >> +#include <linux/cleanup.h> >> >> struct ctl_table; >> struct user_struct; >> @@ -468,6 +469,13 @@ static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long addr) >> >> #endif /* !CONFIG_HUGETLB_PAGE */ >> >> +DEFINE_GUARD(hugetlb_vma_read, struct vm_area_struct *, >> + hugetlb_vma_lock_read(_T), hugetlb_vma_unlock_read(_T)) >> + >> +DEFINE_GUARD(hugetlb_vma_write, struct vm_area_struct *, >> + hugetlb_vma_lock_write(_T), hugetlb_vma_unlock_write(_T)) >> +DEFINE_GUARD_COND(hugetlb_vma_write, _try, hugetlb_vma_trylock_write(_T)) > > Do I understand correctly that the code you are introducing does not > have any users? Yes, it is not used now, but it can be used in future development to simplify the code. If there are complex hugetlb_vma locks in the current code, this can also be used later to optimize them. --- Regards, Wang.
On 11/28/25 12:23, Fushuai Wang wrote: >>> include/linux/hugetlb.h | 8 ++++++++ >>> 1 file changed, 8 insertions(+) >>> >>> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h >>> index 8e63e46b8e1f..f97cb2f123a3 100644 >>> --- a/include/linux/hugetlb.h >>> +++ b/include/linux/hugetlb.h >>> @@ -15,6 +15,7 @@ >>> #include <linux/gfp.h> >>> #include <linux/userfaultfd_k.h> >>> #include <linux/nodemask.h> >>> +#include <linux/cleanup.h> >>> >>> struct ctl_table; >>> struct user_struct; >>> @@ -468,6 +469,13 @@ static inline void hugetlb_split(struct vm_area_struct *vma, unsigned long addr) >>> >>> #endif /* !CONFIG_HUGETLB_PAGE */ >>> >>> +DEFINE_GUARD(hugetlb_vma_read, struct vm_area_struct *, >>> + hugetlb_vma_lock_read(_T), hugetlb_vma_unlock_read(_T)) >>> + >>> +DEFINE_GUARD(hugetlb_vma_write, struct vm_area_struct *, >>> + hugetlb_vma_lock_write(_T), hugetlb_vma_unlock_write(_T)) >>> +DEFINE_GUARD_COND(hugetlb_vma_write, _try, hugetlb_vma_trylock_write(_T)) >> >> Do I understand correctly that the code you are introducing does not >> have any users? > > Yes, it is not used now, but it can be used in future development to simplify > the code. If there are complex hugetlb_vma locks in the current code, this can > also be used later to optimize them. Right, but we usually don't add dead code. So it should ideally be introduced with actual users. -- Cheers David
© 2016 - 2025 Red Hat, Inc.