提交 cbf06b7d 编写于 作者: Z ZhangPeng 提交者: Ma Wupeng

userswap: convert enable_userswap to static key

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I6CAIM

--------------------------------

Replace enable_userswap with struct static_key_false userswap_enabled.
Signed-off-by: NZhangPeng <zhangpeng362@huawei.com>
上级 4a55c5b4
......@@ -11,7 +11,7 @@
#ifdef CONFIG_USERSWAP
extern int enable_userswap;
extern struct static_key_false userswap_enabled;
/*
* In uswap situation, we use the bit 0 of the returned address to indicate
......@@ -43,7 +43,7 @@ static inline bool uswap_check_copy_mode(struct vm_area_struct *vma, __u64 mode)
static inline bool uswap_validate_mremap_flags(unsigned long flags)
{
if (!enable_userswap && flags & MREMAP_USWAP_SET_PTE)
if (!static_branch_unlikely(&userswap_enabled) && flags & MREMAP_USWAP_SET_PTE)
return false;
if (flags & MREMAP_USWAP_SET_PTE && flags & ~MREMAP_USWAP_SET_PTE)
return false;
......@@ -80,7 +80,7 @@ static inline void uswap_get_cpu_id(unsigned long reason, struct uffd_msg *msg)
static inline void uswap_release(unsigned long *userfault_flags)
{
if (enable_userswap)
if (static_branch_unlikely(&userswap_enabled))
*userfault_flags |= VM_USWAP;
}
......
......@@ -586,7 +586,8 @@ static __always_inline ssize_t __mcopy_atomic(struct mm_struct *dst_mm,
BUG_ON(pmd_trans_huge(*dst_pmd));
#ifdef CONFIG_USERSWAP
if (dst_vma->vm_flags & VM_USWAP &&
if (static_branch_unlikely(&userswap_enabled) &&
dst_vma->vm_flags & VM_USWAP &&
mode & UFFDIO_COPY_MODE_DIRECT_MAP)
err = mfill_atomic_pte_nocopy(dst_mm, dst_pmd, dst_vma,
dst_addr, src_addr);
......
......@@ -14,7 +14,7 @@
#include "internal.h"
int enable_userswap;
DEFINE_STATIC_KEY_FALSE(userswap_enabled);
static bool vma_uswap_compatible(struct vm_area_struct *vma)
{
......@@ -470,7 +470,7 @@ bool uswap_register(struct uffdio_register *uffdio_register,
struct vm_area_struct *vma;
unsigned long end;
if (!enable_userswap)
if (!static_branch_unlikely(&userswap_enabled))
return true;
if (!(uffdio_register->mode & UFFDIO_REGISTER_MODE_USWAP))
return true;
......@@ -496,6 +496,9 @@ bool uswap_register(struct uffdio_register *uffdio_register,
bool do_uswap_page(swp_entry_t entry, struct vm_fault *vmf,
struct vm_area_struct *vma, vm_fault_t *ret)
{
if (!static_branch_unlikely(&userswap_enabled))
return true;
if (swp_type(entry) != SWP_USERSWAP_ENTRY)
return true;
......@@ -519,7 +522,7 @@ bool do_uswap_page(swp_entry_t entry, struct vm_fault *vmf,
static int __init enable_userswap_setup(char *str)
{
enable_userswap = true;
static_branch_enable(&userswap_enabled);
return 1;
}
__setup("enable_userswap", enable_userswap_setup);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册