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 25EF5C00140 for ; Fri, 5 Aug 2022 18:12:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 736D26B0071; Fri, 5 Aug 2022 14:12:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E4DF6B0072; Fri, 5 Aug 2022 14:12:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 55F0A8E0001; Fri, 5 Aug 2022 14:12:38 -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 405EC6B0071 for ; Fri, 5 Aug 2022 14:12:38 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1071B1C6012 for ; Fri, 5 Aug 2022 18:12:38 +0000 (UTC) X-FDA: 79766334396.07.F100D34 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf01.hostedemail.com (Postfix) with ESMTP id 8758D40012 for ; Fri, 5 Aug 2022 18:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1659723157; 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: in-reply-to:in-reply-to:references:references; bh=azNlccd9KjWFp3EUvniWUfHZxqcCBT9BbelEFRqChqE=; b=IvXrhc8Ewkz9pBjkcIHg1m21kM3TUIncz55h4gNHIktDtDxw3/MQP1yhjcfqLPvtrimqLq aZzba3wuy7MMR4BfEYOdUNwbXxsxmcWuL1aIhDKsZyM2L0ZHj8yYDXxBk1SpIRBwX58iQB CiJbJX+t7Ov1lgt7C2k11BFL8y+hSSQ= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-203-Q0wMybSINMKaRcodTIoFqg-1; Fri, 05 Aug 2022 14:12:36 -0400 X-MC-Unique: Q0wMybSINMKaRcodTIoFqg-1 Received: by mail-qk1-f198.google.com with SMTP id q20-20020a05620a0d9400b006b6540e8d79so2538749qkl.14 for ; Fri, 05 Aug 2022 11:12:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc; bh=azNlccd9KjWFp3EUvniWUfHZxqcCBT9BbelEFRqChqE=; b=Fmg80LaTpALia/8vcxUprlCqLNmYPqqeVyNbwbvyWY3DKsqtiDCyqUhiNjca6nLCXI qqQqYbbvaQ19QmzdrJvzTqPVy1PXMJgllxugdnPGM+nSuzfuZOs2IJUFwnfnStRtTiKI 4V/rPEI3yIkf4SCwSL2olQoXydhMsxwQQAtUtu95z9jutzklyti1Yibwm0dD3qdneX1e HrYqfunNR4AXya+tUj4iMUF1UbZF42XxStKd/efNzkpeGPwXZO4ocExTdhqWnPgWjhmi wF+3ayueyddd2qFBu4e7W4U/DM/QqjJIuHAA73+cHVsypMpja7swrUXWKAhtNWQ/IlmJ UgkQ== X-Gm-Message-State: ACgBeo3vez8jwS5gffPuwCKrR6I97nrcuieBg+bgnYiMQ206TQUo9QCb N+FctIKpHJ5EiPfSEURCpTYUK44wYNJJGvXDxWwCsbTkwNzBZ+GJM1rpz1yDB5/8pE0KIL5dCv/ Ndg9nG2SJaLQ= X-Received: by 2002:a05:6214:2a82:b0:476:ae61:e61d with SMTP id jr2-20020a0562142a8200b00476ae61e61dmr6771259qvb.72.1659723155671; Fri, 05 Aug 2022 11:12:35 -0700 (PDT) X-Google-Smtp-Source: AA6agR6+9LksOO2oPrhIzWkwqZ+EqfBQakGdM7aUISj69kgv1WrYKGwj/U4NulEO1ZNnz+7hpY7zfw== X-Received: by 2002:a05:6214:2a82:b0:476:ae61:e61d with SMTP id jr2-20020a0562142a8200b00476ae61e61dmr6771240qvb.72.1659723155432; Fri, 05 Aug 2022 11:12:35 -0700 (PDT) Received: from xz-m1.local (bras-base-aurron9127w-grc-35-70-27-3-10.dsl.bell.ca. [70.27.3.10]) by smtp.gmail.com with ESMTPSA id i4-20020a05622a08c400b00342b7e4241fsm1728545qte.77.2022.08.05.11.12.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Aug 2022 11:12:34 -0700 (PDT) Date: Fri, 5 Aug 2022 14:12:33 -0400 From: Peter Xu To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrew Morton , Mike Kravetz , Muchun Song , Peter Feiner , "Kirill A . Shutemov" Subject: Re: [PATCH v1 2/2] mm/hugetlb: support write-faults in shared mappings Message-ID: References: <20220805110329.80540-1-david@redhat.com> <20220805110329.80540-3-david@redhat.com> MIME-Version: 1.0 In-Reply-To: <20220805110329.80540-3-david@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1659723157; 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=azNlccd9KjWFp3EUvniWUfHZxqcCBT9BbelEFRqChqE=; b=eN7yk+qy1N0TUptvSWImKTv2PdypW0Xgx8yhyy8KPwG1ckzuQ7vLUg85HzrYgsPE1Qwyfq wVAPNleEbAbcXXWQVlwpMOi93z837hZwAgkNZ2LZm6UsRoeeNe4kBJahr0he8/BGZnnVI7 XKZ4dYvjn9peI76q3Ddr7XbgPvwrbCM= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IvXrhc8E; spf=pass (imf01.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1659723157; a=rsa-sha256; cv=none; b=Id88xLcZ39VLauv5DYdLAE1k7bWrIDlntOf69Tqn4/aFsEoVLpz/pHgcs7xFE8EIuSi2xz WomnHiuM+qlYjFdsO96LK5SCSX6qu5NP0AwjOsyHRUouAFqiqCA+/xXrYSCjca66HGUf3O T8Kqfk0hN1xtZjZFr3w0J7ZOU3zPh+I= Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IvXrhc8E; spf=pass (imf01.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8758D40012 X-Stat-Signature: 3t9drihbhuaujhpws36bembdajkbogbq X-Rspam-User: X-HE-Tag: 1659723157-381285 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 Fri, Aug 05, 2022 at 01:03:29PM +0200, David Hildenbrand wrote: > Let's add a safety net if we ever get (again) a write-fault on a R/O-mapped > page in a shared mapping, in which case we simply have to map the > page writable. > > VM_MAYSHARE handling in hugetlb_fault() for FAULT_FLAG_WRITE > indicates that this was at least envisioned, but could never have worked > as expected. This theoretically paves the way for softdirty tracking > support in hugetlb. > > Tested without the fix for softdirty tracking. > > Note that there is no need to do any kind of reservation in hugetlb_fault() > in this case ... because we already have a hugetlb page mapped R/O > that we will simply map writable and we are not dealing with COW/unsharing. > > Signed-off-by: David Hildenbrand > --- > mm/hugetlb.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index a18c071c294e..bbab7aa9d8f8 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -5233,6 +5233,16 @@ static vm_fault_t hugetlb_wp(struct mm_struct *mm, struct vm_area_struct *vma, > VM_BUG_ON(unshare && (flags & FOLL_WRITE)); > VM_BUG_ON(!unshare && !(flags & FOLL_WRITE)); > > + /* Let's take out shared mappings first, this should be a rare event. */ > + if (unlikely(vma->vm_flags & VM_MAYSHARE)) { Should we check VM_SHARED instead? > + if (unshare) > + return 0; Curious when will this happen especially if we switch to VM_SHARED above. Shouldn't "unshare" not happen at all on a shared region? > + if (WARN_ON_ONCE(!(vma->vm_flags & VM_WRITE))) > + return VM_FAULT_SIGSEGV; I had a feeling that you just want to double check we have write permission, but IIUC this should be checked far earlier or we'll have problem. No strong opinion if so, but I'd suggest dropping this one, otherwise we could add tons of WARN_ON_ONCE() in anywhere in the page fault stack and they mostly won't trigger at all. > + set_huge_ptep_writable(vma, haddr, ptep); Do we wanna set dirty bits too? > + return 0; > + } -- Peter Xu