CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Alistair Popple CC: Dan Carpenter CC: Christoph Hellwig CC: Andrew Morton CC: Linux Memory Management List tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 50be9417e23af5a8ac860d998e1e3f06b8fd79d7 commit: b756a3b5e7ead8f6f4b03cea8ac22478ce04c8a8 mm: device exclusive memory access date: 8 days ago :::::: branch date: 9 hours ago :::::: commit date: 8 days ago config: parisc-randconfig-s032-20210709 (attached as .config) compiler: hppa64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b756a3b5e7ead8f6f4b03cea8ac22478ce04c8a8 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout b756a3b5e7ead8f6f4b03cea8ac22478ce04c8a8 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=parisc SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) mm/memory.c: note: in included file (through include/linux/export.h, include/linux/linkage.h, include/linux/kernel.h, ...): ./include/generated/autoksyms.h:5:16: sparse: sparse: no whitespace before object-like macro body ./include/generated/autoksyms.h:6:16: sparse: sparse: no whitespace before object-like macro body ./include/generated/autoksyms.h:6:9: sparse: sparse: preprocessor token __KSYM_ redefined ./include/generated/autoksyms.h:5:9: sparse: this was the original definition ./include/generated/autoksyms.h:7:16: sparse: sparse: no whitespace before object-like macro body ./include/generated/autoksyms.h:7:9: sparse: sparse: preprocessor token __KSYM_ redefined ./include/generated/autoksyms.h:5:9: sparse: this was the original definition ./include/generated/autoksyms.h:8:16: sparse: sparse: no whitespace before object-like macro body ./include/generated/autoksyms.h:8:9: sparse: sparse: preprocessor token __KSYM_ redefined ./include/generated/autoksyms.h:5:9: sparse: this was the original definition ./include/generated/autoksyms.h:9:16: sparse: sparse: no whitespace before object-like macro body ./include/generated/autoksyms.h:9:9: sparse: sparse: preprocessor token __KSYM_ redefined ./include/generated/autoksyms.h:5:9: sparse: this was the original definition mm/memory.c:5405:22: sparse: sparse: cast removes address space '__user' of expression >> mm/memory.c:725:21: sparse: sparse: context imbalance in 'restore_exclusive_pte' - different lock contexts for basic block mm/memory.c:771:1: sparse: sparse: context imbalance in 'copy_nonpresent_pte' - different lock contexts for basic block mm/memory.c:980:9: sparse: sparse: context imbalance in 'copy_pte_range' - different lock contexts for basic block mm/memory.c: note: in included file (through include/linux/pgtable.h, arch/parisc/include/asm/io.h, include/linux/io.h, ...): arch/parisc/include/asm/pgtable.h:449:9: sparse: sparse: context imbalance in 'zap_pte_range' - different lock contexts for basic block mm/memory.c:1736:16: sparse: sparse: context imbalance in '__get_locked_pte' - different lock contexts for basic block mm/memory.c:1757:9: sparse: sparse: context imbalance in 'insert_page_into_pte_locked' - different lock contexts for basic block mm/memory.c:1785:9: sparse: sparse: context imbalance in 'insert_page' - different lock contexts for basic block mm/memory.c:2077:9: sparse: sparse: context imbalance in 'insert_pfn' - different lock contexts for basic block mm/memory.c:2296:17: sparse: sparse: context imbalance in 'remap_pte_range' - different lock contexts for basic block mm/memory.c:2543:17: sparse: sparse: context imbalance in 'apply_to_pte_range' - unexpected unlock mm/memory.c:3068:17: sparse: sparse: context imbalance in 'wp_page_copy' - different lock contexts for basic block mm/memory.c:3180:17: sparse: sparse: context imbalance in 'wp_pfn_shared' - unexpected unlock mm/memory.c:3243:19: sparse: sparse: context imbalance in 'do_wp_page' - different lock contexts for basic block mm/memory.c:3812:9: sparse: sparse: context imbalance in 'do_anonymous_page' - different lock contexts for basic block mm/memory.c:3982:9: sparse: sparse: context imbalance in 'do_set_pte' - different lock contexts for basic block mm/memory.c:4411:32: sparse: sparse: context imbalance in 'do_numa_page' - different lock contexts for basic block mm/memory.c:4588:9: sparse: sparse: context imbalance in 'handle_pte_fault' - different lock contexts for basic block mm/memory.c:4874:5: sparse: sparse: context imbalance in 'follow_invalidate_pte' - different lock contexts for basic block mm/memory.c:4995:9: sparse: sparse: context imbalance in 'follow_pfn' - unexpected unlock vim +/restore_exclusive_pte +725 mm/memory.c 28093f9f34cede Gerald Schaefer 2016-04-28 701 b756a3b5e7ead8 Alistair Popple 2021-06-30 702 static void restore_exclusive_pte(struct vm_area_struct *vma, b756a3b5e7ead8 Alistair Popple 2021-06-30 703 struct page *page, unsigned long address, b756a3b5e7ead8 Alistair Popple 2021-06-30 704 pte_t *ptep) b756a3b5e7ead8 Alistair Popple 2021-06-30 705 { b756a3b5e7ead8 Alistair Popple 2021-06-30 706 pte_t pte; b756a3b5e7ead8 Alistair Popple 2021-06-30 707 swp_entry_t entry; b756a3b5e7ead8 Alistair Popple 2021-06-30 708 b756a3b5e7ead8 Alistair Popple 2021-06-30 709 pte = pte_mkold(mk_pte(page, READ_ONCE(vma->vm_page_prot))); b756a3b5e7ead8 Alistair Popple 2021-06-30 710 if (pte_swp_soft_dirty(*ptep)) b756a3b5e7ead8 Alistair Popple 2021-06-30 711 pte = pte_mksoft_dirty(pte); b756a3b5e7ead8 Alistair Popple 2021-06-30 712 b756a3b5e7ead8 Alistair Popple 2021-06-30 713 entry = pte_to_swp_entry(*ptep); b756a3b5e7ead8 Alistair Popple 2021-06-30 714 if (pte_swp_uffd_wp(*ptep)) b756a3b5e7ead8 Alistair Popple 2021-06-30 715 pte = pte_mkuffd_wp(pte); b756a3b5e7ead8 Alistair Popple 2021-06-30 716 else if (is_writable_device_exclusive_entry(entry)) b756a3b5e7ead8 Alistair Popple 2021-06-30 717 pte = maybe_mkwrite(pte_mkdirty(pte), vma); b756a3b5e7ead8 Alistair Popple 2021-06-30 718 b756a3b5e7ead8 Alistair Popple 2021-06-30 719 set_pte_at(vma->vm_mm, address, ptep, pte); b756a3b5e7ead8 Alistair Popple 2021-06-30 720 b756a3b5e7ead8 Alistair Popple 2021-06-30 721 /* b756a3b5e7ead8 Alistair Popple 2021-06-30 722 * No need to take a page reference as one was already b756a3b5e7ead8 Alistair Popple 2021-06-30 723 * created when the swap entry was made. b756a3b5e7ead8 Alistair Popple 2021-06-30 724 */ b756a3b5e7ead8 Alistair Popple 2021-06-30 @725 if (PageAnon(page)) b756a3b5e7ead8 Alistair Popple 2021-06-30 726 page_add_anon_rmap(page, vma, address, false); b756a3b5e7ead8 Alistair Popple 2021-06-30 727 else b756a3b5e7ead8 Alistair Popple 2021-06-30 728 /* b756a3b5e7ead8 Alistair Popple 2021-06-30 729 * Currently device exclusive access only supports anonymous b756a3b5e7ead8 Alistair Popple 2021-06-30 730 * memory so the entry shouldn't point to a filebacked page. b756a3b5e7ead8 Alistair Popple 2021-06-30 731 */ b756a3b5e7ead8 Alistair Popple 2021-06-30 732 WARN_ON_ONCE(!PageAnon(page)); b756a3b5e7ead8 Alistair Popple 2021-06-30 733 b756a3b5e7ead8 Alistair Popple 2021-06-30 734 if (vma->vm_flags & VM_LOCKED) b756a3b5e7ead8 Alistair Popple 2021-06-30 735 mlock_vma_page(page); b756a3b5e7ead8 Alistair Popple 2021-06-30 736 b756a3b5e7ead8 Alistair Popple 2021-06-30 737 /* b756a3b5e7ead8 Alistair Popple 2021-06-30 738 * No need to invalidate - it was non-present before. However b756a3b5e7ead8 Alistair Popple 2021-06-30 739 * secondary CPUs may have mappings that need invalidating. b756a3b5e7ead8 Alistair Popple 2021-06-30 740 */ b756a3b5e7ead8 Alistair Popple 2021-06-30 741 update_mmu_cache(vma, address, ptep); b756a3b5e7ead8 Alistair Popple 2021-06-30 742 } b756a3b5e7ead8 Alistair Popple 2021-06-30 743 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org