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 64101C7EE2E for ; Mon, 12 Jun 2023 09:11:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AF5006B0072; Mon, 12 Jun 2023 05:11:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AA51C6B0074; Mon, 12 Jun 2023 05:11:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 96D866B0075; Mon, 12 Jun 2023 05:11:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8583C6B0072 for ; Mon, 12 Jun 2023 05:11:00 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 48D1EC015F for ; Mon, 12 Jun 2023 09:11:00 +0000 (UTC) X-FDA: 80893526280.29.F0AC7C0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf05.hostedemail.com (Postfix) with ESMTP id DA9C2100005 for ; Mon, 12 Jun 2023 09:10:57 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686561058; 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; bh=CqjC+C4AgR1rau0q09punpJRg3u3xND4mYNqjoFiNv8=; b=MQdSDWAF39RcSXBJh5PZZN4C6Xjx8QXMQBcR8w2ToZtTeRyiYVkd3PB4LPlMc7DgEcCP40 bcGT0DUsZLX/7nBo14vbByvtoQ50quRZAew7P4+cpKr+CWz24yutAnNG4mR4bUxY35Xb2i GpMZ61t60VxPKmtuEnMY/YsG4DNSzow= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; spf=pass (imf05.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686561058; a=rsa-sha256; cv=none; b=UYz0dTadDOSU5GPOPH9fJeiKmWbv236jEqHedpQIAC9up8pUtYraEjYydTegFUfd+ESxV3 tAaIemkEPsPNWlZmi/ryhgko2Hhj12XI3UzpcYe76Cn3B70vMkTCuPnjbK6ywYBSadU5K2 ygh5DmJKFJf+EgXgpWCcsf7lW3OyFmI= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E60EE1FB; Mon, 12 Jun 2023 02:11:41 -0700 (PDT) Received: from [192.168.68.121] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EDF8E3F663; Mon, 12 Jun 2023 02:10:51 -0700 (PDT) Message-ID: <65a42ee0-170c-ec7c-519b-e66cdd901a52@arm.com> Date: Mon, 12 Jun 2023 10:10:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH v2 28/32] mm/memory: allow pte_offset_map[_lock]() to fail To: Hugh Dickins , Andrew Morton Cc: Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Qi Zheng , Yang Shi , Mel Gorman , Peter Xu , Peter Zijlstra , Will Deacon , Yu Zhao , Alistair Popple , Ralph Campbell , Ira Weiny , Steven Price , SeongJae Park , Lorenzo Stoakes , Huang Ying , Naoya Horiguchi , Christophe Leroy , Zack Rusin , Jason Gunthorpe , Axel Rasmussen , Anshuman Khandual , Pasha Tatashin , Miaohe Lin , Minchan Kim , Christoph Hellwig , Song Liu , Thomas Hellstrom , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20230609130632.ec6ffe72fc5f7952af4a3e54@linux-foundation.org> <11a9744a-e7f-33d0-474-c2f2eb7e079@google.com> From: Ryan Roberts In-Reply-To: <11a9744a-e7f-33d0-474-c2f2eb7e079@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: DA9C2100005 X-Rspam-User: X-Stat-Signature: 8h68yi58qahs3twuhxgqtdtfgzqu4o7d X-Rspamd-Server: rspam01 X-HE-Tag: 1686561057-569493 X-HE-Meta: U2FsdGVkX1+vglCJTSIY9LD7z+lTSY8Uk7HAL+NoqyZVr0ob/y6zuKS0EU9KPWoeZZ7rns0HFwO5xYl/JCplwBDk9uGZ2k0yoj4+gfYnO/sOMZimukW6Rm+bg3iESLg1ZgLBucQfH0n0LWOaA3IWUkjaOpGbLm8zlFOL4MIrPw86MaPQ7f3ri2A8pe+qyIBZBXJdjFWlL7PNM15QOq9Te9p5nRrcgchJSb405B/bNbo+7UfDCCEOP1JJNq8lvZITARROiKy4cypN4PZAcEaPmfAl8UbCe24zpEB7Fnr/IQ90YUUBPnBhuux0ksqOAtO6L/YtOdZN+4JsiS2nKqAjuLcqPCtxmS2zHvq0RbCRFqK7XYiWW/0tW//tsZCY5Qy9b0Z+Vkuw3zY8Xuu5rlhYFrk+PwmO+lGxX8jeBPEx4XTkfYEuMQU6TtzHk96TW4rF8CaM8U0iqr9370JJ6ThqeADp3u4F+MMpu+pTUfqroev94VKUGe4EBfBXuqboL5aWG2z45ggJESXx0P8b0ep/zyIPMUhzvLrlcc6xGxRlarLn56xkMkhh1gxcLTmSMxK0MDkQA9SmbEfcnUnJsuUuxexRTiDxs2bbInRM7YwcUdmiviRJqet3u4qpDCi/qxeQ+0m6sOd3UR/ksZLe3NuKdFxz0NywnM71OCEPTBJ1RtngvUn335mF4aQr3hgGqn/UBArjlx/FJhovDJBC1ohMFts+nYKqDfx/9LKm1oenRSCnAI58WaWeuXZFpY837B+S8ZFYpl/fBRrgr59yEJZdIEeHYHHR18aLj+iHRhVLBFSwzmTk1kI9aSOZzyQ8CrfPSSpjWxZW05J3JmJUhCLL7G6VrWPwV9j2TkPz52ManxAHTkKcE5jBjJgzAgrFcZ83PCjGImj7pFPA+VW2KsD8bW5+O1dfi84vsUL7pJwcjQiZI9UsmcfUIkCYKo0VM7eLxO48MdBQqio4xIrSfGN udaO6uy2 zds8/7g2Llxnzpjl1a361B+h+7MmZ4SOWKzzjO7DTNJlosUXM1NpZgVFTGAkKx0XLLBJT0jxC2i8iztQmG99jPBDyLNOF/oOTz+DbXTrLbVeoeLjaj+T4VTdM5orplZ0trdG+pRkYZLQ1J9M7d6AFwYFW23r37zCxv52jfbP/yj/dpDVDev5Xjq/XeQj1pWWnI0XR2RIkLmmMyttXf4YOZr+eGCAR/9bTvnmp8aaLyZqfaa0AqHkaqabCVusEBdQ4WD69Di6D2VX3T4B7wPd88khFRXtQ/d/30R62/muIP/DF1vs= 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 09/06/2023 21:11, Hugh Dickins wrote: > On Fri, 9 Jun 2023, Andrew Morton wrote: >> On Thu, 8 Jun 2023 18:43:38 -0700 (PDT) Hugh Dickins wrote: >> >>> copy_pte_range(): use pte_offset_map_nolock(), and allow for it to fail; >>> but with a comment on some further assumptions that are being made there. >>> >>> zap_pte_range() and zap_pmd_range(): adjust their interaction so that >>> a pte_offset_map_lock() failure in zap_pte_range() leads to a retry in >>> zap_pmd_range(); remove call to pmd_none_or_trans_huge_or_clear_bad(). >>> >>> Allow pte_offset_map_lock() to fail in many functions. Update comment >>> on calling pte_alloc() in do_anonymous_page(). Remove redundant calls >>> to pmd_trans_unstable(), pmd_devmap_trans_unstable(), pmd_none() and >>> pmd_bad(); but leave pmd_none_or_clear_bad() calls in free_pmd_range() >>> and copy_pmd_range(), those do simplify the next level down. >>> >>> ... >>> >>> @@ -3728,11 +3737,9 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) >>> vmf->page = pfn_swap_entry_to_page(entry); >>> vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, >>> vmf->address, &vmf->ptl); >>> - if (unlikely(!pte_same(*vmf->pte, vmf->orig_pte))) { >>> - spin_unlock(vmf->ptl); >>> - goto out; >>> - } >>> - >>> + if (unlikely(!vmf->pte || >>> + !pte_same(*vmf->pte, vmf->orig_pte))) >>> + goto unlock; >>> /* >>> * Get a page reference while we know the page can't be >>> * freed. >> >> This hunk falls afoul of >> https://lkml.kernel.org/r/20230602092949.545577-5-ryan.roberts@arm.com. >> >> I did this: >> >> @@ -3729,7 +3738,8 @@ vm_fault_t do_swap_page(struct vm_fault >> vmf->page = pfn_swap_entry_to_page(entry); >> vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, >> vmf->address, &vmf->ptl); >> - if (unlikely(!pte_same(*vmf->pte, vmf->orig_pte))) >> + if (unlikely(!vmf->pte || >> + !pte_same(*vmf->pte, vmf->orig_pte))) >> goto unlock; >> >> /* > > Yes, that's exactly right: thanks, Andrew. FWIW, I agree. Thanks, Ryan > > Hugh