From 9ac58ac23e75f833dbb743465fd184f5f9e00c7d Mon Sep 17 00:00:00 2001 From: Fang Lijun Date: Mon, 22 Feb 2021 10:59:13 +0800 Subject: [PATCH] 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: Fang Lijun Reviewed-by: Ding Tianhong Reviewed-by: Kefeng Wang Signed-off-by: Yang Yingliang Signed-off-by: Cheng Jian --- include/linux/mman.h | 7 ++++--- mm/mmap.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/linux/mman.h b/include/linux/mman.h index d35d984c058c..a8ea591faed7 100644 --- a/include/linux/mman.h +++ b/include/linux/mman.h @@ -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 /* diff --git a/mm/mmap.c b/mm/mmap.c index 4cc9ee8a0287..04e34c022775 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -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) && -- GitLab