From patchwork Wed Jun 22 14:24:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1646568 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=bYBAdM8v; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4LSlz92BSrz9sG0 for ; Thu, 23 Jun 2022 00:25:24 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1o41ID-0003iI-9Z; Wed, 22 Jun 2022 14:25:17 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1o41I8-0003hA-Ev for kernel-team@lists.ubuntu.com; Wed, 22 Jun 2022 14:25:12 +0000 Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 388353F117 for ; Wed, 22 Jun 2022 14:25:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1655907911; bh=yrRqyVSQnNMXWve8QkzznsT6n20C5N+5aPAMZEomCsk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bYBAdM8vAPbR4HGVCk77td+2FB38MqqG4oidXGvi1D90Iny4K/RUhdPRnLVDzlAwI z8TUNpvQQkbbKPw+tslPl7t1g256g2huqWToj+BwbTEcGmjn0oeb6r2nAmku2Bd31Q j1fvm5IKc93djluYKw7pJHK0Z/IflR7HgC0vsMktdho2L5ucrmHiggD6zwRSQ1rtH2 5aGp+05B+HHCi+WSbPMp2ATcFlgfbr745HDLx5owfY6KJlC1HBN33LC9Z9bBgW1SuZ iXnEOGc2qBxc7WsthAimFJzlSdvq7qVaBE3ell5smNMadrYj8xOkgh84c4KzJ1FTXU aRaNp31/OKTfw== Received: by mail-pj1-f71.google.com with SMTP id on3-20020a17090b1d0300b001ecb964a6f0so916815pjb.1 for ; Wed, 22 Jun 2022 07:25:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yrRqyVSQnNMXWve8QkzznsT6n20C5N+5aPAMZEomCsk=; b=xnPk6c/OVokHKc3fhJsZoUg5s3aGd9tRMAGqsHa8WZSTrZnBvJrSC6yjvin/nlzlZz JA41+CKgdjtMSgCLm/IgUKD4tsvFDmECcDTw/tvAR3QQ7ZgLfjbxO18LUBhHe47X5usr kSAmh1peXNQmWTTJ3/tP0n2etxWb7zX2bkoZIMhb0C869C8P04UW0GjGIG9+rLHKmUr8 SmA/7EbnYC9OxrywE5gptIw+qruARlXOzh1tygOdD5iRFS3T+kIWKse7EQWsptFXMFHH HcKi06AGqT0ufoiym1Nppgjr7ZBVdDFRngESMP0zYAJg/JZHPJGjTiqRsKpZ5dAXynWF Edog== X-Gm-Message-State: AJIora9D+9OA+FzoSq486lfbnQEpWrJJgF2dvvOySf5s20qrWGpWSEbI NX/LsfMb8yO7aSbT4dMWdrw8Hg/2LKHI4zJNXZXVa6X3lmO0SPIN4GVCQ4pw5r5xOyFLdr9LMjD PpIPDFxlPHz2fRElFvd16TfQGKgBZFY8smXDbdpJWzA== X-Received: by 2002:a05:6a00:1a87:b0:51c:29f1:13a0 with SMTP id e7-20020a056a001a8700b0051c29f113a0mr35954878pfv.13.1655907910518; Wed, 22 Jun 2022 07:25:10 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uljZVKRjav1ry9mHciey6tiZjLXdvw32rldw6SwQsWdrrSydSS5eaVY2k6w1xF4jtOx4224Q== X-Received: by 2002:a05:6a00:1a87:b0:51c:29f1:13a0 with SMTP id e7-20020a056a001a8700b0051c29f113a0mr35954859pfv.13.1655907910217; Wed, 22 Jun 2022 07:25:10 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id h14-20020a170902f7ce00b0016909678e2csm8638694plw.292.2022.06.22.07.25.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jun 2022 07:25:09 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 2/5] x86/sgx: Mark PCMD page as dirty when modifying contents Date: Wed, 22 Jun 2022 08:24:58 -0600 Message-Id: <20220622142501.4339-3-tim.gardner@canonical.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220622142501.4339-1-tim.gardner@canonical.com> References: <20220622142501.4339-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Reinette Chatre BugLink: https://bugs.launchpad.net/bugs/1979541 Recent commit 08999b2489b4 ("x86/sgx: Free backing memory after faulting the enclave page") expanded __sgx_encl_eldu() to clear an enclave page's PCMD (Paging Crypto MetaData) from the PCMD page in the backing store after the enclave page is restored to the enclave. Since the PCMD page in the backing store is modified the page should be marked as dirty to ensure the modified data is retained. Cc: stable@vger.kernel.org Fixes: 08999b2489b4 ("x86/sgx: Free backing memory after faulting the enclave page") Signed-off-by: Reinette Chatre Signed-off-by: Dave Hansen Reviewed-by: Jarkko Sakkinen Tested-by: Haitao Huang Link: https://lkml.kernel.org/r/00cd2ac480db01058d112e347b32599c1a806bc4.1652389823.git.reinette.chatre@intel.com (cherry picked from commit 2154e1c11b7080aa19f47160bd26b6f39bbd7824) Signed-off-by: Tim Gardner --- arch/x86/kernel/cpu/sgx/encl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c index 398695a20605..5104a428b72c 100644 --- a/arch/x86/kernel/cpu/sgx/encl.c +++ b/arch/x86/kernel/cpu/sgx/encl.c @@ -84,6 +84,7 @@ static int __sgx_encl_eldu(struct sgx_encl_page *encl_page, } memset(pcmd_page + b.pcmd_offset, 0, sizeof(struct sgx_pcmd)); + set_page_dirty(b.pcmd); /* * The area for the PCMD in the page was zeroed above. Check if the