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 X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0138C433E0 for ; Mon, 8 Feb 2021 18:19:03 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4B81364E7D for ; Mon, 8 Feb 2021 18:19:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4B81364E7D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 983F86B0006; Mon, 8 Feb 2021 13:19:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 933606B006C; Mon, 8 Feb 2021 13:19:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7ADF56B006E; Mon, 8 Feb 2021 13:19:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0153.hostedemail.com [216.40.44.153]) by kanga.kvack.org (Postfix) with ESMTP id 61C466B0006 for ; Mon, 8 Feb 2021 13:19:02 -0500 (EST) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 23E4A824999B for ; Mon, 8 Feb 2021 18:19:02 +0000 (UTC) X-FDA: 77795912124.24.toy39_5e03e4a27600 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin24.hostedemail.com (Postfix) with ESMTP id F14861A4A5 for ; Mon, 8 Feb 2021 18:19:01 +0000 (UTC) X-HE-Tag: toy39_5e03e4a27600 X-Filterd-Recvd-Size: 6310 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by imf43.hostedemail.com (Postfix) with ESMTP for ; Mon, 8 Feb 2021 18:19:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612808340; 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=HIoYvaPz6WOCEvbZt11C1gEQUT4M4c60EhE6OZiuqm8=; b=hC/bU7Sr+7Ry0Co6i/Zqg3IEBCIgfkofdNqXSpwP4WSoHw6GJF+2fQD8cdGqO/sHiWx/Qv IqVAyQ/h6d6eecu8ZUAsOgsWf4BT509Reu5L0guPPIaM2+S545k9n75lR9M+DCppoetIgv vzmMM9rVTj05G93Mw9JZ1dURzR3W2Uw= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-123-VRBUhoYVMVK7gcXa1Sfknw-1; Mon, 08 Feb 2021 13:18:59 -0500 X-MC-Unique: VRBUhoYVMVK7gcXa1Sfknw-1 Received: by mail-wm1-f69.google.com with SMTP id u15so17927wmm.6 for ; Mon, 08 Feb 2021 10:18:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:references:from:subject:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=HIoYvaPz6WOCEvbZt11C1gEQUT4M4c60EhE6OZiuqm8=; b=ObKc+SdFPHXCdTCno0+1lN1viIt7CKJ+ttfBCds8yF7Oedp+55YtBiIcuD+xPM7sD6 9s9raGNCt6gxIa9/6+ksHhJpaFKHlY6VxaxBPSZmtbM4A+/JMmz9qlZcEdxXVVAukW93 LfFqvkXV99RgQC60DAYGakamxAVklKjESyeUX/W7Vtz3O64QeJRZLijNFrJQHykTNOi4 nMQibVnptU6iDIniCe2SXIaKz5AHZXIh9bhBcgQeTXYt9+0tNmSfo7UGsdaLk2Aeiuzd H7WHSfNu8SWM9OYHGXupm9WqNVMImYb/zmbWjBbSd+GBL2qFj3KqOXJshcJRozzTtgyG pLBA== X-Gm-Message-State: AOAM5300bBpSlo4nh/QpIuhIZjQzBw2eLZVGdrUWKHC7iv1mi3fHKzzS WzBdTs2ZlG8X/6yTtjjzHcTbGzqnvSV8l43S7kjCJwMJpmjjXFyGrZEgc8ZTFpMeXsmZ/Ubnk/1 BplTJxit4ps4= X-Received: by 2002:a5d:4708:: with SMTP id y8mr12696790wrq.402.1612808338201; Mon, 08 Feb 2021 10:18:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJyx3sos0n8tHVOC1iptrkVQW4o0j1fKrwhhKnTVlDfzopi0rkSvYbUXaXRWtKNy7vPxFtXNIQ== X-Received: by 2002:a5d:4708:: with SMTP id y8mr12696762wrq.402.1612808337962; Mon, 08 Feb 2021 10:18:57 -0800 (PST) Received: from ?IPv6:2001:b07:6468:f312:c8dd:75d4:99ab:290a? ([2001:b07:6468:f312:c8dd:75d4:99ab:290a]) by smtp.gmail.com with ESMTPSA id y15sm11968095wrm.93.2021.02.08.10.18.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Feb 2021 10:18:57 -0800 (PST) To: Christoph Hellwig Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, jgg@ziepe.ca, linux-mm@kvack.org, Andrew Morton , dan.j.williams@intel.com References: <20210205103259.42866-1-pbonzini@redhat.com> <20210205103259.42866-2-pbonzini@redhat.com> <20210208173936.GA1496438@infradead.org> From: Paolo Bonzini Subject: Re: [PATCH 1/2] mm: provide a sane PTE walking API for modules Message-ID: <3b10057c-e117-89fa-1bd4-23fb5a4efb5f@redhat.com> Date: Mon, 8 Feb 2021 19:18:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <20210208173936.GA1496438@infradead.org> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=pbonzini@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable 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 08/02/21 18:39, Christoph Hellwig wrote: >> +int follow_pte(struct mm_struct *mm, unsigned long address, >> + pte_t **ptepp, spinlock_t **ptlp) >> +{ >> + return follow_invalidate_pte(mm, address, NULL, ptepp, NULL, ptlp); >> +} >> +EXPORT_SYMBOL_GPL(follow_pte); > > I still don't think this is good as a general API. Please document thi= s > as KVM only for now, and hopefully next merge window I'll finish an > export variant restricting us to specific modules. Fair enough. I would expect that pretty much everyone using follow_pfn=20 will at least want to switch to this one (as it's less bad and not=20 impossible to use correctly), but I'll squash this in: diff --git a/include/linux/mm.h b/include/linux/mm.h index 90b527260edf..24b292fce8e5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1659,8 +1659,8 @@ void free_pgd_range(struct mmu_gather *tlb,=20 unsigned long addr, int copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct=20 *src_vma); int follow_invalidate_pte(struct mm_struct *mm, unsigned long address, - struct mmu_notifier_range *range, pte_t **ptepp, pmd_t **pmdpp, - spinlock_t **ptlp); + struct mmu_notifier_range *range, pte_t **ptepp, + pmd_t **pmdpp, spinlock_t **ptlp); int follow_pte(struct mm_struct *mm, unsigned long address, pte_t **ptepp, spinlock_t **ptlp); int follow_pfn(struct vm_area_struct *vma, unsigned long address, diff --git a/mm/memory.c b/mm/memory.c index 3632f7416248..c8679b15c004 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -4792,6 +4792,9 @@ int follow_invalidate_pte(struct mm_struct *mm,=20 unsigned long address, * Only IO mappings and raw PFN mappings are allowed. The mmap semapho= re * should be taken for read. * + * KVM uses this function. While it is arguably less bad than + * ``follow_pfn``, it is not a good general-purpose API. + * * Return: zero on success, -ve otherwise. */ int follow_pte(struct mm_struct *mm, unsigned long address, @@ -4809,6 +4812,9 @@ EXPORT_SYMBOL_GPL(follow_pte); * * Only IO mappings and raw PFN mappings are allowed. * + * This function does not allow the caller to read the permissions + * of the PTE. Do not use it. + * * Return: zero and the pfn at @pfn on success, -ve otherwise. */ int follow_pfn(struct vm_area_struct *vma, unsigned long address, (apologies in advance if Thunderbird destroys the patch). Paolo