From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D8AAC678D5 for ; Wed, 8 Mar 2023 09:52:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 27443280001; Wed, 8 Mar 2023 04:52:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 224656B0075; Wed, 8 Mar 2023 04:52:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0ED18280001; Wed, 8 Mar 2023 04:52:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id F3B526B0074 for ; Wed, 8 Mar 2023 04:52:51 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B5D0FAB5B4 for ; Wed, 8 Mar 2023 09:52:51 +0000 (UTC) X-FDA: 80545266942.09.F65E856 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by imf25.hostedemail.com (Postfix) with ESMTP id 612B3A0003 for ; Wed, 8 Mar 2023 09:52:48 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NRl+LP3+; spf=pass (imf25.hostedemail.com: domain of lkp@intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=lkp@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678269169; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=AzaaQW+RVIYGS5RbIzcN5f9lkDkf0rX0CYabb+4mfbI=; b=1IupzmQf+6wlsM2yzGkhAvDh8WYL6GqpsxPbTUwgCLh2QdVzgxGf/sbbvV6oq2y1LG9GbM GQJ9KvYl9JLIv28GpVb0E5aeWwwm5pkz/v0saEZRtgtsME7Em0dewQ7cMzB6dTfznTAECr jreGqsDmw71mKmq0+GMDJ5Gga7ZGupY= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=NRl+LP3+; spf=pass (imf25.hostedemail.com: domain of lkp@intel.com designates 192.55.52.93 as permitted sender) smtp.mailfrom=lkp@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678269169; a=rsa-sha256; cv=none; b=RJ2ZuxVbB2PDA62xen4ErGSxPjRPJjksyOu8k7ZzX8we+ueAxbnrgp3JHwd2Y/vPlRVZnP lu5stD6FqJL/j93JPcNbICBTym/TZuAt4PjWwKVLZVP0jqIyMZ8tTM8QLcZbKLfqU049bm hU3J2Mv38yKYn1U5tnGDzlR5bOOM3HI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1678269168; x=1709805168; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=dxQJct6f43Jx0UnkB4zNZyJRb1ubXcUEMzADERU/HTo=; b=NRl+LP3+8JSgfhCh84fSztfj4Vh26TzNzWFqNMZsgMz2v55EknBX1i+l UdctNLxoSEjiNXUrA8Ylpk75CpmfBFUdubqGzVSZy7yEMX6iMlcecxLht A7hiQyTebG1rVH+9oh90pnlKkCtPK4kJu1CVIerXbgSy1332z9mj3seGx VqDxtGB9ZVYBVLcuj37AA+rqn/uBVe5TlDEySROs9GRl3UoLwe0MLwTYQ hHc56VjIKuCcuUv2X9GlfGgfFHIbj80vd03nQYKwVk7t0I/se23qpOhIG znE/e0uIPl9mJLhN92xz1vjZL2rY7yI8klCaUxHf9ahpyziyOV/YRQQ9F A==; X-IronPort-AV: E=McAfee;i="6500,9779,10642"; a="333584667" X-IronPort-AV: E=Sophos;i="5.98,243,1673942400"; d="scan'208";a="333584667" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2023 01:52:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10642"; a="679277486" X-IronPort-AV: E=Sophos;i="5.98,243,1673942400"; d="scan'208";a="679277486" Received: from lkp-server01.sh.intel.com (HELO b613635ddfff) ([10.239.97.150]) by fmsmga007.fm.intel.com with ESMTP; 08 Mar 2023 01:52:42 -0800 Received: from kbuild by b613635ddfff with local (Exim 4.96) (envelope-from ) id 1pZqTR-00021x-1W; Wed, 08 Mar 2023 09:52:41 +0000 Date: Wed, 8 Mar 2023 17:51:56 +0800 From: kernel test robot To: Axel Rasmussen , Alexander Viro , Andrew Morton , Hugh Dickins , Jan Kara , "Liam R. Howlett" , Matthew Wilcox , Mike Kravetz , Mike Rapoport , Muchun Song , Nadav Amit , Peter Xu , Shuah Khan Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Linux Memory Management List , James Houghton , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Axel Rasmussen Subject: Re: [PATCH v3 4/5] mm: userfaultfd: don't separate addr + len arguments Message-ID: <202303081703.nwxAgIVH-lkp@intel.com> References: <20230306225024.264858-5-axelrasmussen@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230306225024.264858-5-axelrasmussen@google.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 612B3A0003 X-Rspam-User: X-Stat-Signature: esh3sn8bt8ou5wue989cwu7xu8ystmgo X-HE-Tag: 1678269168-993345 X-HE-Meta: U2FsdGVkX1+9e8GYUq/3nPlNaLkP0A3d8hVbzMHvEIEV1UDRVF86mWIET+k2YPTCHyZpMzir/rI3L44arRIBL82gcYRbyBq/tMLdR9Q7AGX3GSe/lqlVwbSP7iub3qUvcpjPF6QjMQdkfPz+h9UtYiJTharjkeL/xNGAm8idH/OLVjl9CTdwH+VhowV+Q34FiRhniTjopZIWcTp+4oxlWH1n6Iwj/DKBqCqeESGl1DKaxuS8In1UprQ3oVZlaqFB24wZ/XjKavAhLht4fdtpA2w0HV5cCEJ5uLx7KgJMwSskbVIx7GUiEctHgRwcylBxgaTAoGyW2ldiysI8YWD13anDHdkJSp2kPlhFTShkbTmlzQXoUJvnSlpiJDKTIE/jhO3oe2QidFIdLnPg0zyEut9WngZuFVMC1tLB7DPqbogrwiStSa4Y8c2UEk+BQiM1rlQx4izQ1bUIH47cpTUQ/h4lXPsaSPrb/jQhQt3T2i3QAdfqffE2/rxxmHuWgtWJKpd2gft+PXUAVysvsje5kgaoHMhvmMVuqG5Ad6bWUoKJLJI3F63NggEwUcgJS0FhrKWsDHzN//t0ShUlrToagRi19rZGpz8jRUG1aT4Y7Lvm7gGzw8lb8tIrIAr/HUvami/lQ0Z7za3MbOcC2eeYgwRflKVnLoHwdradPLflr9R21vG2lVRp/oduPN9tq3hulUp6/+La9FtARHN+FNeiwZPpGAJAogV0DhX6r6XnaA1MkMGjQd+RUU+NMyY9+xpEx5rQzocLY/Jb+mJ4YrS6R5kYEEfSl0rtZ9S5gz6aORBfHMWLRGhobME2ruSkuA88M3FGYaCPRjo8PHqMIp2JHvkHCINlmjjiOH8bj3S0BXA9qO6ANeE1Q22GEFLrY+cIXr0vCdmebiTu3te9Y4wsaPEKECwRrrRSJ6xODoG2a/QDDAZ2HDUDeYdmLZb3TeowXMxRhzQNcHbVvdXP5Xv pg0Lf57D aqHvKtt4rN/Ea3c0qvSmIeUuM1Xy+8FGO6rq4wkR/cqbUPNTt6lJasOVTR2rskgU3lPhcb5By4kild5ofWhBCM/ek/I0ep2jk0G8JVwVOA5A6EbSCalz9hNjKVETlYCyrA5/jzpoIPIxoTLhSSGCzDe+zQAhAFlMW3ogTm5/Adg+aIi49Sx+lW9S623NLdxGbBKsDr4VIAYWCa544rzKNlrjio6plR7rR2/DekgqVTutSWAO7db4Bds/JTrhN8gRb6TpctX6tBV8hChxa0gZi8rqOjxTgFWFtnBWBP/4pf/m3Khm/QjCLB+P4JjN9snqHRsDyObIrddega1kwkXOQVsoUSZfPE/ajCZSqcWMkctKc9wQn4mIidNMDB6tCMV52jJRMlwbfmSe8zP0AN9FKtjBXSIc9l2ycGBsfEsOTfjP3hzHdPZqJfM+Od9Dg2K6CSzNLaeHEiaHEA1X5rMkayq03pQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi Axel, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v6.3-rc1] [cannot apply to akpm-mm/mm-everything next-20230308] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Axel-Rasmussen/mm-userfaultfd-rename-functions-for-clarity-consistency/20230307-065203 patch link: https://lore.kernel.org/r/20230306225024.264858-5-axelrasmussen%40google.com patch subject: [PATCH v3 4/5] mm: userfaultfd: don't separate addr + len arguments config: x86_64-randconfig-a011-20230306 (https://download.01.org/0day-ci/archive/20230308/202303081703.nwxAgIVH-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/cee642b93be3ae01c7cc737c0176cbc16074a25a git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Axel-Rasmussen/mm-userfaultfd-rename-functions-for-clarity-consistency/20230307-065203 git checkout cee642b93be3ae01c7cc737c0176cbc16074a25a # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot | Link: https://lore.kernel.org/oe-kbuild-all/202303081703.nwxAgIVH-lkp@intel.com/ All errors (new ones prefixed by >>): >> mm/userfaultfd.c:577:52: error: passing 'const struct uffdio_range *' to parameter of incompatible type 'struct uffdio_range' return mfill_atomic_hugetlb(dst_vma, src_start, dst, flags); ^~~ mm/userfaultfd.c:463:29: note: passing argument to parameter 'dst' here struct uffdio_range dst, ^ 1 error generated. vim +577 mm/userfaultfd.c 508 509 static __always_inline ssize_t mfill_atomic(struct mm_struct *dst_mm, 510 unsigned long src_start, 511 const struct uffdio_range *dst, 512 atomic_t *mmap_changing, 513 uffd_flags_t flags) 514 { 515 struct vm_area_struct *dst_vma; 516 ssize_t err; 517 pmd_t *dst_pmd; 518 unsigned long src_addr, dst_addr; 519 long copied; 520 struct page *page; 521 522 /* 523 * Sanitize the command parameters: 524 */ 525 BUG_ON(dst->start & ~PAGE_MASK); 526 BUG_ON(dst->len & ~PAGE_MASK); 527 528 /* Does the address range wrap, or is the span zero-sized? */ 529 BUG_ON(src_start + dst->len <= src_start); 530 BUG_ON(dst->start + dst->len <= dst->start); 531 532 src_addr = src_start; 533 dst_addr = dst->start; 534 copied = 0; 535 page = NULL; 536 retry: 537 mmap_read_lock(dst_mm); 538 539 /* 540 * If memory mappings are changing because of non-cooperative 541 * operation (e.g. mremap) running in parallel, bail out and 542 * request the user to retry later 543 */ 544 err = -EAGAIN; 545 if (mmap_changing && atomic_read(mmap_changing)) 546 goto out_unlock; 547 548 /* 549 * Make sure the vma is not shared, that the dst range is 550 * both valid and fully within a single existing vma. 551 */ 552 err = -ENOENT; 553 dst_vma = find_dst_vma(dst_mm, dst); 554 if (!dst_vma) 555 goto out_unlock; 556 557 err = -EINVAL; 558 /* 559 * shmem_zero_setup is invoked in mmap for MAP_ANONYMOUS|MAP_SHARED but 560 * it will overwrite vm_ops, so vma_is_anonymous must return false. 561 */ 562 if (WARN_ON_ONCE(vma_is_anonymous(dst_vma) && 563 dst_vma->vm_flags & VM_SHARED)) 564 goto out_unlock; 565 566 /* 567 * validate 'mode' now that we know the dst_vma: don't allow 568 * a wrprotect copy if the userfaultfd didn't register as WP. 569 */ 570 if ((flags & MFILL_ATOMIC_WP) && !(dst_vma->vm_flags & VM_UFFD_WP)) 571 goto out_unlock; 572 573 /* 574 * If this is a HUGETLB vma, pass off to appropriate routine 575 */ 576 if (is_vm_hugetlb_page(dst_vma)) > 577 return mfill_atomic_hugetlb(dst_vma, src_start, dst, flags); 578 579 if (!vma_is_anonymous(dst_vma) && !vma_is_shmem(dst_vma)) 580 goto out_unlock; 581 if (!vma_is_shmem(dst_vma) && 582 (flags & MFILL_ATOMIC_MODE_MASK) == MFILL_ATOMIC_CONTINUE) 583 goto out_unlock; 584 585 /* 586 * Ensure the dst_vma has a anon_vma or this page 587 * would get a NULL anon_vma when moved in the 588 * dst_vma. 589 */ 590 err = -ENOMEM; 591 if (!(dst_vma->vm_flags & VM_SHARED) && 592 unlikely(anon_vma_prepare(dst_vma))) 593 goto out_unlock; 594 595 while (src_addr < src_start + dst->len) { 596 pmd_t dst_pmdval; 597 598 BUG_ON(dst_addr >= dst->start + dst->len); 599 600 dst_pmd = mm_alloc_pmd(dst_mm, dst_addr); 601 if (unlikely(!dst_pmd)) { 602 err = -ENOMEM; 603 break; 604 } 605 606 dst_pmdval = pmdp_get_lockless(dst_pmd); 607 /* 608 * If the dst_pmd is mapped as THP don't 609 * override it and just be strict. 610 */ 611 if (unlikely(pmd_trans_huge(dst_pmdval))) { 612 err = -EEXIST; 613 break; 614 } 615 if (unlikely(pmd_none(dst_pmdval)) && 616 unlikely(__pte_alloc(dst_mm, dst_pmd))) { 617 err = -ENOMEM; 618 break; 619 } 620 /* If an huge pmd materialized from under us fail */ 621 if (unlikely(pmd_trans_huge(*dst_pmd))) { 622 err = -EFAULT; 623 break; 624 } 625 626 BUG_ON(pmd_none(*dst_pmd)); 627 BUG_ON(pmd_trans_huge(*dst_pmd)); 628 629 err = mfill_atomic_pte(dst_pmd, dst_vma, dst_addr, 630 src_addr, &page, flags); 631 cond_resched(); 632 633 if (unlikely(err == -ENOENT)) { 634 void *page_kaddr; 635 636 mmap_read_unlock(dst_mm); 637 BUG_ON(!page); 638 639 page_kaddr = kmap_local_page(page); 640 err = copy_from_user(page_kaddr, 641 (const void __user *) src_addr, 642 PAGE_SIZE); 643 kunmap_local(page_kaddr); 644 if (unlikely(err)) { 645 err = -EFAULT; 646 goto out; 647 } 648 flush_dcache_page(page); 649 goto retry; 650 } else 651 BUG_ON(page); 652 653 if (!err) { 654 dst_addr += PAGE_SIZE; 655 src_addr += PAGE_SIZE; 656 copied += PAGE_SIZE; 657 658 if (fatal_signal_pending(current)) 659 err = -EINTR; 660 } 661 if (err) 662 break; 663 } 664 665 out_unlock: 666 mmap_read_unlock(dst_mm); 667 out: 668 if (page) 669 put_page(page); 670 BUG_ON(copied < 0); 671 BUG_ON(err > 0); 672 BUG_ON(!copied && !err); 673 return copied ? copied : err; 674 } 675 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests