tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 3689b0ef08b70e4e03b82ebd37730a03a672853a commit: 17573fd971f9e31ddee420eca8359ceff87e9e51 [12103/13737] KVM: guest_memfd: extract __kvm_gmem_get_pfn() config: x86_64-randconfig-121-20240526 (https://download.01.org/0day-ci/archive/20240526/202405261716.tWWnavqi-lkp@xxxxxxxxx/config) compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240526/202405261716.tWWnavqi-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202405261716.tWWnavqi-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) >> arch/x86/kvm/../../../virt/kvm/guest_memfd.c:540:18: sparse: sparse: incompatible types in comparison expression (different address spaces): arch/x86/kvm/../../../virt/kvm/guest_memfd.c:540:18: sparse: struct file * arch/x86/kvm/../../../virt/kvm/guest_memfd.c:540:18: sparse: struct file [noderef] __rcu * arch/x86/kvm/../../../virt/kvm/guest_memfd.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/xarray.h, ...): include/linux/page-flags.h:242:46: sparse: sparse: self-comparison always evaluates to false include/linux/page-flags.h:242:46: sparse: sparse: self-comparison always evaluates to false arch/x86/kvm/../../../virt/kvm/guest_memfd.c:121:17: sparse: sparse: context imbalance in 'kvm_gmem_invalidate_begin' - different lock contexts for basic block arch/x86/kvm/../../../virt/kvm/guest_memfd.c: note: in included file (through include/linux/wait.h, include/linux/wait_bit.h, include/linux/fs.h, ...): include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct file **f @@ got struct file [noderef] __rcu ** @@ arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: expected struct file **f arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: got struct file [noderef] __rcu ** arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct file **f @@ got struct file [noderef] __rcu ** @@ arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: expected struct file **f arch/x86/kvm/../../../virt/kvm/guest_memfd.c:293:33: sparse: got struct file [noderef] __rcu ** vim +540 arch/x86/kvm/../../../virt/kvm/guest_memfd.c 530 531 static int __kvm_gmem_get_pfn(struct file *file, struct kvm_memory_slot *slot, 532 gfn_t gfn, kvm_pfn_t *pfn, int *max_order, bool prepare) 533 { 534 pgoff_t index = gfn - slot->base_gfn + slot->gmem.pgoff; 535 struct kvm_gmem *gmem = file->private_data; 536 struct folio *folio; 537 struct page *page; 538 int r; 539 > 540 if (file != slot->gmem.file) { 541 WARN_ON_ONCE(slot->gmem.file); 542 return -EFAULT; 543 } 544 545 gmem = file->private_data; 546 if (xa_load(&gmem->bindings, index) != slot) { 547 WARN_ON_ONCE(xa_load(&gmem->bindings, index)); 548 return -EIO; 549 } 550 551 folio = kvm_gmem_get_folio(file_inode(file), index, prepare); 552 if (IS_ERR(folio)) 553 return PTR_ERR(folio); 554 555 if (folio_test_hwpoison(folio)) { 556 r = -EHWPOISON; 557 goto out_unlock; 558 } 559 560 page = folio_file_page(folio, index); 561 562 *pfn = page_to_pfn(page); 563 if (max_order) 564 *max_order = 0; 565 566 r = 0; 567 568 out_unlock: 569 folio_unlock(folio); 570 571 return r; 572 } 573 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki