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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D855BC77B7E for ; Tue, 2 May 2023 12:48:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234181AbjEBMsc (ORCPT ); Tue, 2 May 2023 08:48:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229533AbjEBMsY (ORCPT ); Tue, 2 May 2023 08:48:24 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D8BF10FF for ; Tue, 2 May 2023 05:47:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1683031648; 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=noovJtisV3i3/mJ6ypDDQD/CpIY5Kq1JwfcpAQCR0K0=; b=f24/9+EW8TfpivyXYHYw7+4FosRT3YVIdb1qL7PeBu9fvxfB/gvFsuMeb/Ppyd6SL6heGi nCIki0zH6IT9aVQmbPGuS3Awvnx3hF5dqXpl7EA+oX+EFJARK8YYSoIR9vzEAuY9Lb0cXG xyzEUGaPcdAvqNOtIQT4SC1Hi54QoRk= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-338-5o49SPqBMOucQ6-RMcqr5g-1; Tue, 02 May 2023 08:47:27 -0400 X-MC-Unique: 5o49SPqBMOucQ6-RMcqr5g-1 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-3f1754de18cso23005935e9.1 for ; Tue, 02 May 2023 05:47:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683031646; x=1685623646; 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=noovJtisV3i3/mJ6ypDDQD/CpIY5Kq1JwfcpAQCR0K0=; b=bzPt6U7uRGo+y5TymIMfl3iSKusxP2QXvfj5YblcMZ1K0+F+GNMq05P4QHe/4vYsqK rvXLJU/Tq1hfP0/04owiEFVJFly9ERmFV/LjNa1yta92DBGEHKsB2A10TGHW+Nc8qVud tMUodmTn86738+iN2HAEq5oGEDTlmTPemBWd7ss7rvgI8+qI+aKqUpxx/cr6qKZriYLu ISFqHSZ1YPDsZBW6Itf0vIi0i0sbh5OeZ5z7ikitXUXwA0FSESctLIgBsAnci6l9TZ0M dRQnj41nMVxq4KgN2GfF1Fy6kRLTeeGd6h1XPwTtVTFmTc8CQhv6hNZa14pccu4dLBAv pzQg== X-Gm-Message-State: AC+VfDw+EioOTh+7ixfbE8SRN/42gF7ekg9b4/x3WjNcgNKPmcpebewg QL3nPF1EfyMSG4XAnJ4LMlGbbA2He5RXTMRTKMpOioc9uPuI+kgVg/r9v0WLFcIt7dXg1i+EGvR 8Z1+SUIw09pN9AA2ZWkM9U4mAJAZVNg== X-Received: by 2002:a05:600c:2248:b0:3f1:6fb4:44cf with SMTP id a8-20020a05600c224800b003f16fb444cfmr12040767wmm.28.1683031645999; Tue, 02 May 2023 05:47:25 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ78NzuiYve0rFZCzvbVf8NBNHLrbCADw3oH0ofO5ShJ4Vs4xjCq1x1GvDm/UPbam9KHLtRM0w== X-Received: by 2002:a05:600c:2248:b0:3f1:6fb4:44cf with SMTP id a8-20020a05600c224800b003f16fb444cfmr12040725wmm.28.1683031645619; Tue, 02 May 2023 05:47:25 -0700 (PDT) Received: from ?IPV6:2003:cb:c700:2400:6b79:2aa:9602:7016? (p200300cbc70024006b7902aa96027016.dip0.t-ipconnect.de. [2003:cb:c700:2400:6b79:2aa:9602:7016]) by smtp.gmail.com with ESMTPSA id e14-20020adfef0e000000b003063938bf7bsm1389765wro.86.2023.05.02.05.47.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 May 2023 05:47:25 -0700 (PDT) Message-ID: Date: Tue, 2 May 2023 14:47:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v6 3/3] mm/gup: disallow FOLL_LONGTERM GUP-fast writing to file-backed mappings Content-Language: en-US To: Peter Zijlstra , Lorenzo Stoakes Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Jason Gunthorpe , Jens Axboe , Matthew Wilcox , Dennis Dalessandro , Leon Romanovsky , Christian Benvenuti , Nelson Escobar , Bernard Metzler , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Bjorn Topel , Magnus Karlsson , Maciej Fijalkowski , Jonathan Lemon , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Christian Brauner , Richard Cochran , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , linux-fsdevel@vger.kernel.org, linux-perf-users@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org, Oleg Nesterov , Jason Gunthorpe , John Hubbard , Jan Kara , "Kirill A . Shutemov" , Pavel Begunkov , Mika Penttila , Dave Chinner , Theodore Ts'o , Peter Xu , Paul McKenney References: <20230502111334.GP1597476@hirez.programming.kicks-ass.net> <20230502120810.GD1597538@hirez.programming.kicks-ass.net> <20230502124058.GB1597602@hirez.programming.kicks-ass.net> From: David Hildenbrand Organization: Red Hat In-Reply-To: <20230502124058.GB1597602@hirez.programming.kicks-ass.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On 02.05.23 14:40, Peter Zijlstra wrote: > On Tue, May 02, 2023 at 02:08:10PM +0200, Peter Zijlstra wrote: > >>>> >>>> >>>> if (folio_test_anon(folio)) >>>> return true; >>> >>> This relies on the mapping so belongs below the lockdep assert imo. >> >> Oh, right you are. >> >>>> >>>> /* >>>> * Having IRQs disabled (as per GUP-fast) also inhibits RCU >>>> * grace periods from making progress, IOW. they imply >>>> * rcu_read_lock(). >>>> */ >>>> lockdep_assert_irqs_disabled(); >>>> >>>> /* >>>> * Inodes and thus address_space are RCU freed and thus safe to >>>> * access at this point. >>>> */ >>>> mapping = folio_mapping(folio); >>>> if (mapping && shmem_mapping(mapping)) >>>> return true; >>>> >>>> return false; >>>> >>>>> +} > > So arguably you should do *one* READ_ONCE() load of mapping and > consistently use that, this means open-coding both folio_test_anon() and > folio_mapping(). Open-coding folio_test_anon() should not be required. We only care about PAGE_MAPPING_FLAGS stored alongside folio->mapping, that will stick around until the anon page was freed. @Lorenzo, you might also want to special-case hugetlb directly using folio_test_hugetlb(). -- Thanks, David / dhildenb