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 3FCA6C6FD1D for ; Mon, 27 Mar 2023 20:57:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A6149900003; Mon, 27 Mar 2023 16:57:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A10ED900002; Mon, 27 Mar 2023 16:57:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B19B900003; Mon, 27 Mar 2023 16:57:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 7A735900002 for ; Mon, 27 Mar 2023 16:57:53 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 44BC61208E7 for ; Mon, 27 Mar 2023 20:57:53 +0000 (UTC) X-FDA: 80615890026.18.B32E094 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf10.hostedemail.com (Postfix) with ESMTP id 17A08C0007 for ; Mon, 27 Mar 2023 20:57:50 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Lngh6tTt; spf=pass (imf10.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679950671; 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=l0k5HQijZZiTI5JKuN0wulOwFUsOATJ37PiPOJOEgWU=; b=4Cg1ZGsHdrSc0WswBcMuHzq5pwXhUwwwn5G7ugBU24OI3jKgmhmOzHOzrzBBQa0M7tq4FG 6iMAJ+ke3gXewOHhzvKx4WhvBm4FibHtwV6E+biLjpE7lH6M0WA4vbqcKxu1gAbFsHF26Q awYDoeuxjB/0bFM1kIxmzHHjFn5xQmQ= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Lngh6tTt; spf=pass (imf10.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679950671; a=rsa-sha256; cv=none; b=L1y0ejp2ECVZpIols6epFQzHK2Hadi0jZBP2mqOBI1lG11sHNr2jSFZMOtpeX5/kdOiUAa 5DBWQ5ceCaULGXMn6zByhWfy6fgMy5rLsZcloGx7g0avv/RSmMaXdyuAlXYIcGSusK0E9F bTXT7IlXUK6LqMDfkplQdxD3zKF4M3Y= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1679950670; h=from:from: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=l0k5HQijZZiTI5JKuN0wulOwFUsOATJ37PiPOJOEgWU=; b=Lngh6tTtFRmSqToWVxm0YpFycEpyiFbDGs05CpmWRYVO5LFIRZNQuhR6jqArfb7ysXn9i8 uwW2aLvzlXlKpHHfuHdpfcTBlxq2xSgPvrYBP5lRQNdp9Yq8qg869vVe88GoqhC3RsUCe6 +ITmx9XEHpWqz9Vy53mSDrUTF0c5BI4= Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-53-9XMd2VO7MK22TqsAi_DLKg-1; Mon, 27 Mar 2023 16:57:49 -0400 X-MC-Unique: 9XMd2VO7MK22TqsAi_DLKg-1 Received: by mail-pf1-f198.google.com with SMTP id m12-20020a62f20c000000b0062612a76a08so4782557pfh.2 for ; Mon, 27 Mar 2023 13:57:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679950668; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=l0k5HQijZZiTI5JKuN0wulOwFUsOATJ37PiPOJOEgWU=; b=URFhnq4wQpbaWYR+fNQ6La+S6L8WtPt9loFlpqSYOnSPwDSpxZ2jtucgKBK052qk4K 8WWrrNEIe6ySq2qgtj+RrxDxSMwjeZlYmdAqdSh/TSDzl7mqaHiTiWEmHjF4+JsW/oXf I98qVif7/n0zmSA4dMWN801G7WAOP0VkV7UQdZEb8hLs0a4CFiIRHgECLJsptQoem9Oe GgfiucoYf8Xr5eOOK3ErzUx9JqB998fwtZXbZGfSPoYscAJ/HVmRNxzlnwN6dm6rnOBX DCXZvRlpyzt5W/CN77vQs/j8rPyRXOEZfZMOaRT05CFAk8O8+n6eCB7ZMYZR3rIi1+Rb eS4w== X-Gm-Message-State: AO0yUKXlXDujT/xsvMEtzX6ye5XdET1y2zT66wj1NmQyT8db/Gcyb1BJ Ouh8Mjit/wGC4KQmzUFuROE4P7Z5ZBrj0734O/PEIvDuq4dpD8eTVN4ehMhXAFo+cRTjh4XyGt7 gyhfdv7NNUK4= X-Received: by 2002:a17:90b:2243:b0:23f:7176:df32 with SMTP id hk3-20020a17090b224300b0023f7176df32mr13751411pjb.40.1679950667910; Mon, 27 Mar 2023 13:57:47 -0700 (PDT) X-Google-Smtp-Source: AKy350a0pTeUjTnPuwRDsnKWfscYaKPzIjcxZsvU3tPZsN9ULXGT5CBiCjeFnwCwJ4yaAP2G4njNvw== X-Received: by 2002:a17:90b:2243:b0:23f:7176:df32 with SMTP id hk3-20020a17090b224300b0023f7176df32mr13751400pjb.40.1679950667631; Mon, 27 Mar 2023 13:57:47 -0700 (PDT) Received: from [172.16.65.120] ([64.114.255.114]) by smtp.gmail.com with ESMTPSA id j8-20020a17090a060800b0023d01900d7bsm7675288pjj.0.2023.03.27.13.57.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Mar 2023 13:57:47 -0700 (PDT) Message-ID: Date: Mon, 27 Mar 2023 22:57:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH v3] mm/hugetlb: Fix uffd wr-protection for CoW optimization path To: Mike Kravetz , Peter Xu Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Mike Rapoport , Nadav Amit , Axel Rasmussen , Andrea Arcangeli , Muhammad Usama Anjum , linux-stable References: <20230324142620.2344140-1-peterx@redhat.com> <20230324222707.GA3046@monkey> <8a06be33-1b44-b992-f80a-8764810ebf3f@redhat.com> <20230327183438.GC4184@monkey> From: David Hildenbrand Organization: Red Hat In-Reply-To: <20230327183438.GC4184@monkey> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: 81h1g55z1arb1n8jtawizfxcodp4a3wk X-Rspamd-Queue-Id: 17A08C0007 X-HE-Tag: 1679950670-66013 X-HE-Meta: U2FsdGVkX19fQxqsRhnszPM5KBX94GBwr5MBHFM4mGpq8Sb5mHfJ8ltYrub4fPkCsJj3LU389oRwE0Z+W4akaoL/HOdm0vmfpsAfKTJt1Tz8LL4Y/iMdq18qwNKy0eG+SKBWm+l0ERM/kvT7Cv3/blQANWkbkSGwzpbIxLEzkhMhFz2lu8cV2JyRXa3BJjNWOa4WcyazZpM+6NV0TMXcnjIU5uudETk/QkQwol6LXXNjEqWH2hpx0BXVxxNOED/SA5/p+FZrPaIpOokqwRep8vGaAow3vSxMebtk0/3W6OlsUSP/xhBrL6j6U+/ymWZrHwHjDOoynfIrxnGB0teA3ltP9CciLWMh1A560j9P5cIRSh33UH/g8ZSG/WNGzjLFZN2To1zWsXFs4HDBRGgPbWE8CLm36NC1UQ/2MmjNCVv1xhwtHDrGN1N1GYgKIznKxFxv4XPhjxgL3FLOVjD5U6/EvzTmAb+EMp+ONQmTGKK22Pq6ev3alxyLkU65HB1I8adr2mTRU4e/K4rVLxuvC4mZfEXlwiM8nDNSkxkFhCySTuQgznXhBQbSBA6WRo0Qjs9UhfFwLY+Dk+bCfJRN53p4CTD9Jbo3wnmRU7YRACEIJu9Bokxlw1EKx3qDONq9ZJFOWZrVivW/HSvR+q326Ip/+rF/V5kvEJKf75Ow12kXnvQeM7/fJ/R+9Uwh8HUbAsJ6gd8rSrp8AW0kR71cdemdFTOcyrEe6ZxDaPKhruZmlq7OkF1k/Djy0ty5+52XorCZ3//ced6AZ2jMeORAvwHQI/ap1Wn059jaImG4UNpsin88mhfYlQoEsEMjwubrGdDIMxchgLf916Zfrh8t9ZLYDzeNPD+bVJIvfRDS9x9x9w0aXUi2qqR9+2LZvER4AgMZkKGgD8uNp7IvibNBvHen3NErXceQWmJ/j2BcjfNZy3js4RUJDLWLcvsWFG4utUgwmL6nG6aa2GKh0gh pTygMSlB 6Xu3/PG0BZkNUtXBnDyyUSqOIHzdJBnvv1QmtYokEGtHsPhIcFcXTM9J5WZRoGrwe2w1/fmRV0dhGZid+jl+sB1NTIjYqB5AZKRD/dT9AVS8qGkpNOwfWa7PLIbHbBK4KYtljtmwvdWQtcPpZ3SyrUtoita7rGQ0JBfLsvJEfSAEIs60pxGbg7sDvDcWRYp20PQ1NuaXiNJWhirVEH1mIk7kO8EAxsJEDMmYD3ZArxaK5gKQ4UBV1KX5aKxEga6sbw8FXLGY57vjIt1ARu+qWO0uSCsB+k0DyFWM4EBOkDwpBrJc8Jz6/OhlxE+YzTphSBtdex956i6hjyev7zrM65pVoAL8T9WSLHm/xMUTrldIYXi8a2eJphwngSxd6Gyomca6buKVN7QGbmbM1rJrIOuNrAX8+pULq6tQYsbHOUbgtfJI5Qw22LEy89rp/vPsOVxIvLRu8+ZGxOlil2Qy5YR1ZQpCCPKO0jQzu232CFvjBzDWyqcob8g4GWlLC7HxKisQe76Nilg7okMiLOKznUHC+fqhYDyCrOjrF 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 27.03.23 20:34, Mike Kravetz wrote: > On 03/26/23 10:46, Peter Xu wrote: >> On Fri, Mar 24, 2023 at 11:36:53PM +0100, David Hildenbrand wrote: >>>>> @@ -5487,6 +5487,17 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma, >>>>> unsigned long haddr = address & huge_page_mask(h); >>>>> struct mmu_notifier_range range; >>>>> + /* >>>>> + * Never handle CoW for uffd-wp protected pages. It should be only >>>>> + * handled when the uffd-wp protection is removed. >>>>> + * >>>>> + * Note that only the CoW optimization path (in hugetlb_no_page()) >>>>> + * can trigger this, because hugetlb_fault() will always resolve >>>>> + * uffd-wp bit first. >>>>> + */ >>>>> + if (!unshare && huge_pte_uffd_wp(pte)) >>>>> + return 0; >>>> >>>> This looks correct. However, since the previous version looked correct I must >>>> ask. Can we have unshare set and huge_pte_uffd_wp true? If so, then it seems >>>> we would need to possibly propogate that uffd_wp to the new pte as in v2 >> >> Good point, thanks for spotting! >> >>> >>> We can. A reproducer would share an anon hugetlb page because parent and >>> child. In the parent, we would uffd-wp that page. We could trigger unsharing >>> by R/O-pinning that page. >> >> Right. This seems to be a separate bug.. It should be triggered in >> totally different context and much harder due to rare use of RO pins, >> meanwhile used with userfault-wp. >> >> If both of you agree, I can prepare a separate patch for this bug, and I'll >> better prepare a reproducer/selftest with it. >> > > I am OK with separate patches, and agree that the R/O pinning case is less > likely to happen. Yes, the combination should be rather rare and we can fix that separately. Ideally, we'd try to mimic the same uffd code flow in hugetlb cow/unshare handling that we use in memory.c > > Since this patch addresses the issue found by Muhammad, > > Reviewed-by: Mike Kravetz Hopefully we didn't forget about yet another case :D Acked-by: David Hildenbrand -- Thanks, David / dhildenb