Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp2781703iog; Mon, 20 Jun 2022 04:49:30 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t/kd29/WD+gtBsZk0zNZt5DH+HcNibPsTXUQlkZAfJkIiReaG0xynGai0OYmBUWDG+FxOY X-Received: by 2002:aa7:c9d2:0:b0:42e:1776:63e0 with SMTP id i18-20020aa7c9d2000000b0042e177663e0mr28348569edt.185.1655725770244; Mon, 20 Jun 2022 04:49:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655725770; cv=none; d=google.com; s=arc-20160816; b=ktXe5aMX6L5vQy607rzZkDFWQ12kSRY0IuVFCz0MMX8HkNv/4AoBJFqPzVwGB5Q7cm rqFdWfw1iKs7C806P+6l/DMk4JrwFlq+nQrC1GOWlIaTPlJMg3dcT7A5V+wtiExMz9H2 5VzlNQ1f9QxcPXgDcFsl5rt5RUN/1q67StogyP0AZhoi/UoLeVQmhf52x7nqqH0sQloi Wua+5uy2e131mWhL8IBK58PKUFSv8XEys7aVd2/pTL10cmi6M7ut4YPRW4860VJtYEqS B/s1yxnXH24CE4cYpdGekCAea2uayMZEYfwAR8WXFo8xtn+egvd8Gz97Mkc3WP+cUI4e KDqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=JIMgUbT+sdDDCNglVtIeEpzvKHWn5FNbAyBHXWpSN1c=; b=cUwP4dzZkG+Irhb9GY3hsYAI7dbSOUz5sdqyZGYFc+Lyvm+uaS4Fandt67HieOCsFg K/z48qMwnc/Dps0NNUEM829kBFcNraAJvnUZZMqe0AfOuA1BkjdVp4/YkBxOYn0qRe/5 l82h6UXlh/RtDwhox+i9YPj2jJMqgGLIL1/3cVkVYm7OcIms3j3rviRPH6KglAjwRjpF N+QDKH1SoXIS7oceW/jFthcWpbaAlep+N4IlYT7m7vTx+wIBOS9KAlaz14uUBmCCvZa6 JhC9FJ3fBrHEpEUT8erXsU7OXzYrrfcebGAfiiv4EOVArMRTTXxmdW811x21yEzyrUMq P7jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="PLaJ/ay/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i7-20020a1709067a4700b00718dc0ca3b1si12422634ejo.901.2022.06.20.04.49.03; Mon, 20 Jun 2022 04:49:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="PLaJ/ay/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241866AbiFTLcs (ORCPT + 99 others); Mon, 20 Jun 2022 07:32:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241855AbiFTLcp (ORCPT ); Mon, 20 Jun 2022 07:32:45 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83895165B0 for ; Mon, 20 Jun 2022 04:32:44 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id f39so1148115lfv.3 for ; Mon, 20 Jun 2022 04:32:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=JIMgUbT+sdDDCNglVtIeEpzvKHWn5FNbAyBHXWpSN1c=; b=PLaJ/ay/YVqFpYPY2jfh6O1y+IIKjBmkQHUC5UeiT6DNhvyULiVcJ6r+KwY4WrG/Ci qq8+ZTHG2Y8zjtWSdGPW+grBbRTv+aE+3KI01rDtyDjtgo+HN9iVZzz1B3FdV5uBHppw iAJza80SEAUdWj5Hbiw8UfN6MmWGZr+rh9TXiPCYY82KkxjTNea2viH9ZCh6XhqXWLep yUOkRfBaQovrA9wObEEHJ/pg0BT7sSX+OTWHxMfC8WAYFTaY2ZzDH546o0yh4xvi7uqp waLvS70Mp7MZgx5OcEhVqIOXNX9GPcICgMXHTjWwFvwanesqylxLgKgrmwlGhZFjCNow c/fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=JIMgUbT+sdDDCNglVtIeEpzvKHWn5FNbAyBHXWpSN1c=; b=41sBg+M+2LJcGpr88IyLInSuvT2KGQ9kTR32/kBjq/vRkqyUTq+hhU/2PDMua5zMlF srflJ8aCs35WhdIR9F8U4RyKEi38FNbDlc0leKjJm3uq+MeyYHg4RRRvRZn3d1w0QOgR XDQSjoWs7Drzov+oG6eVzW04wppBeKDK/ZYSJBcoU4DqzB8t3HmWC4VYDxP1eHUHp97r DHHL5q7jW5JHooHpBB60UHW9QdYMeQb33PtbIeNPCCoXGiorwJxXVrS85yG8wU2s9UCB rzFdBfu2Lr3JcHX5/b/+0d6QIiCi0r49i0NWITXmRssA8Q59+n4hrlAfMwy0pc5LoQAN wMbg== X-Gm-Message-State: AJIora+7ZLXZbbDjg/1dPAj3zpypoaH+CIzCe7POHD1moA7Q72T2JKjf Z85vAWBgcucUwrde7e2l5j5QXPTC8PW/4iq6oDb82w== X-Received: by 2002:a05:6512:1317:b0:47f:528e:6a32 with SMTP id x23-20020a056512131700b0047f528e6a32mr9708569lfu.354.1655724762625; Mon, 20 Jun 2022 04:32:42 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jann Horn Date: Mon, 20 Jun 2022 13:32:06 +0200 Message-ID: Subject: Re: pgprot_encrypted macro is broken To: Federico Di Pierro Cc: Linux API , kernel list , Tom Lendacky , "the arch/x86 maintainers" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 20, 2022 at 9:39 AM Federico Di Pierro wrote: > > Why does your driver need to use that macro? pgprot_encrypted() is > > mostly only directly used by core kernel code, not by drivers... and > > if memory encryption is enabled, almost all memory mappings created by > > the kernel should be marked as encrypted automatically. > > This is interesting; i don't really know the history behind our piece > of code; as far as i understand, > we have a shared ring buffer with userspace, onto which we push tracing events, > and we must mark it as encrypted when > the kmod runs on an AMD SME enabled kernel to allow userspace to grab sane data. > > This is the commit that introduced the change (if you wish to give it a look): > https://github.com/falcosecurity/libs/commit/0333501cf429c045c61aaf5909812156f090786e > > Do you see any workaround not involving `pgprot_encrypted` ? If you do have to use remap_pfn_range() to map normal kernel memory, then you might want to use vma->vm_page_prot instead, like a few other places in the kernel do. (Alternatively you might want to use remap_vmalloc_range() to map vmalloc pages into userspace, but note that that has very different semantics - I believe that installs a normal page reference rather than a raw PFN reference, so that would permit get_user_pages() calls on the range.)