提交 9ac58ac2 编写于 作者: F Fang Lijun 提交者: Yang Yingliang

arm64/ascend: mm: Fix hugetlb check node error

ascend inclusion
category: bugfix
bugzilla: NA
CVE: NA

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

The vm_flags will changed by MAP_CHECKNODE,
so we must use it for output argument.

Fixes: d0a645813b91 ("arm64/ascend: mm: Fix arm32 compile warnings")
Signed-off-by: NFang Lijun <fanglijun3@huawei.com>
Reviewed-by: NDing Tianhong <dingtianhong@huawei.com>
Reviewed-by: NKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: NCheng Jian <cj.chengjian@huawei.com>
上级 21450e79
......@@ -76,15 +76,16 @@ static inline int dvpp_mmap_zone(unsigned long addr) { return 0; }
#ifdef CONFIG_COHERENT_DEVICE
#define CHECKNODE_BITS 48
#define CHECKNODE_MASK (~((_AC(1, UL) << CHECKNODE_BITS) - 1))
static inline void set_vm_checknode(vm_flags_t vm_flags, unsigned long flags)
static inline void set_vm_checknode(vm_flags_t *vm_flags, unsigned long flags)
{
if (is_set_cdmmask())
vm_flags |= VM_CHECKNODE | ((((flags >> MAP_HUGE_SHIFT) &
*vm_flags |= VM_CHECKNODE | ((((flags >> MAP_HUGE_SHIFT) &
MAP_HUGE_MASK) << CHECKNODE_BITS) & CHECKNODE_MASK);
}
#else
#define CHECKNODE_BITS (0)
static inline void set_vm_checknode(vm_flags_t vm_flags, unsigned long flags) {}
static inline void set_vm_checknode(vm_flags_t *vm_flags, unsigned long flags)
{}
#endif
/*
......
......@@ -1565,7 +1565,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr,
* hugetlbfs file mmap will use it to check node
*/
if (flags & MAP_CHECKNODE)
set_vm_checknode(vm_flags, flags);
set_vm_checknode(&vm_flags, flags);
addr = mmap_region(file, addr, len, vm_flags, pgoff, uf);
if (!IS_ERR_VALUE(addr) &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册