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 D1280EE57DF for ; Mon, 11 Sep 2023 15:35:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17E4A6B02BB; Mon, 11 Sep 2023 11:35:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 107F66B02BC; Mon, 11 Sep 2023 11:35:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F11AC6B02BD; Mon, 11 Sep 2023 11:35:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id DDD226B02BB for ; Mon, 11 Sep 2023 11:35:03 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 24B8F809C7 for ; Mon, 11 Sep 2023 15:35:03 +0000 (UTC) X-FDA: 81224714886.10.19AA451 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.151]) by imf17.hostedemail.com (Postfix) with ESMTP id 48BB440023 for ; Mon, 11 Sep 2023 15:35:00 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=cFHFFs8t; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf17.hostedemail.com: domain of dave.hansen@intel.com designates 192.55.52.151 as permitted sender) smtp.mailfrom=dave.hansen@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694446501; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=C1X4KyIPdl4B2HCDCssKQrVg9kzZKWUBQgi9Rt5I8bE=; b=EE1u2G5LtFDCbkcLI/JZkcaTfoZrScDtzL9UvXTL4MIy/IdhOtsykixNNHbYvPsdXyYl1y 0yzXjMY07LobG0on9jMvaUPRI95/hgfnAJV8H2Yo1J/UYcj8Ce7VmrxuLCSzaptgjhIcN8 ZZHhgj3TcVJVFcGD7NvTaLFrvSGf1uY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=cFHFFs8t; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf17.hostedemail.com: domain of dave.hansen@intel.com designates 192.55.52.151 as permitted sender) smtp.mailfrom=dave.hansen@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694446501; a=rsa-sha256; cv=none; b=x33uPoj0ycD1DqTyi3gLg05RNcrMHHOJ8rAWYZ+FhQLhUOtPCfy+G59LNiWWpesN11lUMO L+qEbMQQW74YCEIIN6Y+iESUaBQ/BEJGoEotbYr56IDs2pUTR+ALKNW1Nzwlr5JRmR75SO 23gpXSKRn8mBzTw/z4xc+Mt3AgTgt1o= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1694446500; x=1725982500; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=zm/fyZaPMSdCXnW917uk4EPzTwyVK6jhAhdlA1UwJq8=; b=cFHFFs8t7hI/isMlaAyEDemtVye+luGgB9P+BoRK03osjy+Fil1sWIia nxk5B9e7xc/vqgiArxUt2k8FjxWCdRJz7XUzXESpK/TfOJQn2b2qtdJcy GqE+daja5+2BgbNWus0QXpr1Or8TbMgIdDd2J3AVSXzitYSPgRvFODF1P /MuHejSM+tMcGd79ZK5LOUgKpQT+mcgU6nbM2ZcWWajW3PBaAF6KfITnd ld1LFlH+rDuqQh85AkObAlbQN8AYxEgvAZH/ixyj6if3C5KUholJRlXDS lQOuLoP+gqtiE0QL2LTCr6lRhuks9W5lbVeDzjI9g8kuUP6n/rUzvtZ7v g==; X-IronPort-AV: E=McAfee;i="6600,9927,10830"; a="358408571" X-IronPort-AV: E=Sophos;i="6.02,244,1688454000"; d="scan'208";a="358408571" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Sep 2023 08:34:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10830"; a="990119092" X-IronPort-AV: E=Sophos;i="6.02,244,1688454000"; d="scan'208";a="990119092" Received: from cdaubert-mobl13.amr.corp.intel.com (HELO [10.212.203.41]) ([10.212.203.41]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Sep 2023 08:34:57 -0700 Message-ID: Date: Mon, 11 Sep 2023 08:34:57 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [syzbot] [mm?] BUG: Bad page map (7) Content-Language: en-US To: Matthew Wilcox , Yin Fengwei Cc: syzbot , akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, syzkaller-bugs@googlegroups.com References: <000000000000d099fa0604f03351@google.com> <0465d13d-83b6-163d-438d-065d03e9ba76@intel.com> From: Dave Hansen In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 48BB440023 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: xkk3cfxtmykgyo7hhk7h96iqkaez6ghj X-HE-Tag: 1694446500-887184 X-HE-Meta: U2FsdGVkX19SAIRqY0IAD1Wt6WMSMnindNX/BjMGL5etWAJYQLAaxFILDki5Hx4Z0HD6O89C4Bfwl/TlzLbwX2GExA01Y0wmnqRBxOIQl6vkBYAE1bZeU6fP8LMy2bl5l2Z86dDeviQ7z9CsoD0fHSehfnFpjv3GLDsAJuRn2BwwgfVLJmWjrHAfJsdB6CPC9Hs2iMLUA5fShPrHUy/EvSlXE2MWWw+Qmy1p0UxcTKulbPPwhEMEQf5EbhcXFRNbi+ImkhrhfI6737L+rGz6J/qPUC8AG33eiasbM/PBdzOziNhKZm17GFvO8EQlNSrutUxO79kHqeinZR9p+CvPMu3NrSNJjOcizDOdJkuOTmDuK0UL9/vakm+S6EZAOGF8QYjX4yljx6Qz9unREoRz1ll1q4q0/y4X18QAthGc3jT9JIizI1Rj+Ni4NMdNQKhrCzrB8sPi/jSKt9rvXDm84U4vcS73RCa7AlTnSOY8bfqeR+ffh2VApLG7+C0bDJcisNl8+cyIUiC9+yroBxShT5B7YoYwY/thZycLrSzwzHgzyK7FzbJMmGUSL0BZEw5wECVOJfMcxD/M/8GJAVf3bfhfbs/OuEDpjfyhBW4vFJ6sxcUnezNQ4aYnkIojcBAU36iNvf7dlU1M6xL5Fp+BldfK4BqWE65vrI6VUYHvq/TjmltGmS3O0G5Hi4k7tGND4I2oCmkQYqJ3+yZ4a9loVzPmEM043bW8+noPUBgV7oGpgT+rwSmnjuPN7OCPsgRaxaSzBPqUfXa8F8jlwjga1KENOmhGtJSU2VYDDDa37ls/oXoktpMht2fw7FMB2kuUyHOurGZRdYD57jr8Aco15s25pc6u02qhqhFJFdRuubli9g7OU8BO5EmrGklrXnLv5ZxYqRdZ27h2P0LcYxJB8vB+hcPCE1DLz/cfIBDBkVsgSjSyMtdggRllxibdv6X3AYm4cN0kK2OZ7LTn9TA k9E8Jpjd mSO9GG1GjCEe6wykaIXt6Mu4vLz2H2ztHTFbNwUe2udAhPw2h0N57N6RCOO7hEwBMp+C5AYArNN+x1wfEfyisfAI0S7UxjqnYcGh1yYMUvsnXl1SSunfc284IyOo3nfLBgFDKnhWXegV0yDZQcIopTyb8AYRtSbMrIciVLn6pWB7LDx8E8hZ2gIgUl1CFHvCbJjvr8H8nTbU39gxA1LP6C9tkJUAXWAQTq+oGLLjLQZm5FmpQPjzmgmTvUA99bMQ0F4opHMaoPND5PVmCy0W8H5hvyK29sMqZVAmg 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: On 9/11/23 06:26, Matthew Wilcox wrote: > @@ -231,7 +235,10 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr, > if (--nr == 0) > break; > ptep++; > - pte = __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT)); > + if (__pte_needs_invert(pte_val(pte))) > + pte = __pte(pte_val(pte) - (1UL << PFN_PTE_SHIFT)); > + else > + pte = __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT)); > } > arch_leave_lazy_mmu_mode(); > } This is much better than a whole x86 fork of set_ptes(). But it's still a bit wonky because it exposes the PTE inversion logic to generic code. Could we do something like this instead? It'll (probably) end up repeating the PTE inversion logic each way though the loop, so it's less efficient than what you have above. But unless I buggered something, it "just works" without exposing any of the inversion logic to generic code. The trick is that pte_pfn() undoes the inversion and then pfn_pte() re-does it on each trip through the loop. static inline void set_ptes(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte, unsigned int nr) { pgprot_t prot = pte_pgprot(x); unsigned long pfn = pte_pfn(pte); page_table_check_ptes_set(mm, ptep, pte, nr); arch_enter_lazy_mmu_mode(); for (;;) { set_pte(ptep, pte); if (--nr == 0) break; ptep++; pfn++; pte = pfn_pte(pfn, pgprot); } arch_leave_lazy_mmu_mode(); } Obviously completely untested. :)