Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2361722lqp; Sun, 24 Mar 2024 15:46:57 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWK2XKFeB1xr3AW4XJD/KAEmofId+iPMaHPYHDyVz7qdtWGeAu2A74fHxQ7kDJyLbB0U/67ubgbgrv2gSXGpbQY0n/1vKap0Au4qaIcog== X-Google-Smtp-Source: AGHT+IGmqSvieymii+JJYLEtBImfH1tRCd8hsio+D9ZpJmaNnl10kKN7ppezbUHIRstqBUzm83ya X-Received: by 2002:a05:620a:b0d:b0:789:dc81:3f35 with SMTP id t13-20020a05620a0b0d00b00789dc813f35mr5653885qkg.27.1711320417164; Sun, 24 Mar 2024 15:46:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711320417; cv=pass; d=google.com; s=arc-20160816; b=nYX2y+a0VV3W1AEuCxnqsAWkiupvdPpU0Xwfg2sjqz3mGSDxo5BC5PqpK8zghpd82E QIMPuJ0Z0AKILBsO1C9gZ/FidA+jIEs/SIq/SHN/JhydAMlngjtBpg+Qjt5pR2elDa1w LxIgxY7nUMSf7AM+fituFd1UxyGLCado23gnmZWivsJ1VTGUpFGVrptrnLA40GID5iRB TFqQV63U8Qi16Sx8VvSkLeuaMcea4s2y2Z8LefNO5QjJVFy32fi7jeacdOhJnHg8YQP1 NNrm1bWd3JA82LT0zybE80/HsOgicyjCbSPZeidmeRqyaAwl9ADb6fZjQuKVGzap6Q5f b/vw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=VK0TRFVmwE786Q3hfP0H3wKXIaYEkiz8mpx0rNoMyS8=; fh=2cgy0DrLY9cO3enh2txMTpS9d1VeK4LhMMk2HoOVEps=; b=AUtSynGHi1f9aYks6Rd9EpNa5euSGrpgdE4W34T3pcKqCL7kVJ+YQh4ZFrUOkRbsWR 1NMSxOYNjrAKxSFR+LPYD102jhjPK9N9rQhMT1v7zphePt5zwx4AUk7ib5AVnsTXTWn7 pU+SUVFzoLVnR9RpvY2ro3dxEu5pP9AEqA2rqDfm5NdQfA2O2imRsNeTkpcDPbv2dzpx mtLqNMXJtvrAlhJxB3AwKiMeTYTD6gkVtZx/gpklGfFOWbqnEaQE8T7/ivce6aFKk94P pIZV6WTldVMwaCcA6bjxT2DaqQ0LR1+Fxa08Eai5oXbw1msZbVhxEFOl6W4iJ6IvVhbJ P/vg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nEVTuLiG; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-112935-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-112935-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id m10-20020ae9e00a000000b0078a26803e27si4233254qkk.394.2024.03.24.15.46.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Mar 2024 15:46:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-112935-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nEVTuLiG; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-112935-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-112935-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id B8F7D1C21185 for ; Sun, 24 Mar 2024 22:46:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0C8C776049; Sun, 24 Mar 2024 22:35:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nEVTuLiG" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B34F7581D; Sun, 24 Mar 2024 22:35:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711319748; cv=none; b=u3f2hMwlFOeUh81isHedBem6pjg4IqYBFgspg436Chxv5NkYPSSgeFOdYfgQc5BARfa/aRh4ZIFSnQ9KpzCDBW7HentcTyaF6iVoKkK6SjUWIyBPINr7GxTnGl4iT44Ed66EPJXdBkwHl12Bpp7DXeWKgNHgw0769VWUDJ8ZHaQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711319748; c=relaxed/simple; bh=jdfu/KH7YL1zTK/NxSGJU5Hr4wSQlNuG4dX03k2hbfQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jmUOZpuAz/+jTGjQk2dkejoXvw79hT62mOiOde8voaOSmed+2Z+UdsgVYBr4Yew+hvOU5aZmw+U98LnXT5cjq3nzEGQbcHJYHw+ELjv29/vVIhAI3yz+OcC+kLMzjawSVtIxYQJZRZ496PXnVjiAodUzM08ONSx3Sy9X+d4zcMo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nEVTuLiG; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3111C43394; Sun, 24 Mar 2024 22:35:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711319747; bh=jdfu/KH7YL1zTK/NxSGJU5Hr4wSQlNuG4dX03k2hbfQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nEVTuLiGbR+vNSCr/CGK2srh6YoFhdlD94/9505MI7COig8Clzvt8Tt2rKgqN7dSv zKAcfKSkAquClJRstz+GUpkP6kiqKq1n4x2ybKP5N7FUDJ0LUOoyJTYPzQqokzLzA8 JT72elH8C5okPDtbKfBWj8lBvRq3RCy91ptPVSRCB85G0OnIaWmLwihN1gqo0+Ba2r a48c9EHig9+Tzd4AwZU9I+BebVW8dEWb2HyuI9yoMC2uenGxHHOC6VwfvvlbL8owbs pEtBzwElSYd2rUir4hr5PqUsatKCYsSaMfkH+e0vPl98u0VVcuYCcBfIib4P/6PA2G NReLoqJ8Wa4IQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Ard Biesheuvel , Borislav Petkov , Tom Lendacky , Sasha Levin Subject: [PATCH 6.8 048/715] x86/sme: Fix memory encryption setting if enabled by default and not overridden Date: Sun, 24 Mar 2024 18:23:47 -0400 Message-ID: <20240324223455.1342824-49-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324223455.1342824-1-sashal@kernel.org> References: <20240324223455.1342824-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Ard Biesheuvel [ Upstream commit e814b59e6c2b11f5a3d007b2e61f7d550c354c3a ] Commit cbebd68f59f0 ("x86/mm: Fix use of uninitialized buffer in sme_enable()") 'fixed' an issue in sme_enable() detected by static analysis, and broke the common case in the process. cmdline_find_option() will return < 0 on an error, or when the command line argument does not appear at all. In this particular case, the latter is not an error condition, and so the early exit is wrong. Instead, without mem_encrypt= on the command line, the compile time default should be honoured, which could be to enable memory encryption, and this is currently broken. Fix it by setting sme_me_mask to a preliminary value based on the compile time default, and only omitting the command line argument test when cmdline_find_option() returns an error. [ bp: Drop active_by_default while at it. ] Fixes: cbebd68f59f0 ("x86/mm: Fix use of uninitialized buffer in sme_enable()") Signed-off-by: Ard Biesheuvel Signed-off-by: Borislav Petkov (AMD) Reviewed-by: Tom Lendacky Link: https://lore.kernel.org/r/20240126163918.2908990-2-ardb+git@google.com Signed-off-by: Sasha Levin --- arch/x86/mm/mem_encrypt_identity.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/arch/x86/mm/mem_encrypt_identity.c b/arch/x86/mm/mem_encrypt_identity.c index d73aeb16417fc..7f72472a34d6d 100644 --- a/arch/x86/mm/mem_encrypt_identity.c +++ b/arch/x86/mm/mem_encrypt_identity.c @@ -507,7 +507,6 @@ void __init sme_enable(struct boot_params *bp) const char *cmdline_ptr, *cmdline_arg, *cmdline_on, *cmdline_off; unsigned int eax, ebx, ecx, edx; unsigned long feature_mask; - bool active_by_default; unsigned long me_mask; char buffer[16]; bool snp; @@ -593,22 +592,19 @@ void __init sme_enable(struct boot_params *bp) : "p" (sme_cmdline_off)); if (IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT)) - active_by_default = true; - else - active_by_default = false; + sme_me_mask = me_mask; cmdline_ptr = (const char *)((u64)bp->hdr.cmd_line_ptr | ((u64)bp->ext_cmd_line_ptr << 32)); if (cmdline_find_option(cmdline_ptr, cmdline_arg, buffer, sizeof(buffer)) < 0) - return; + goto out; if (!strncmp(buffer, cmdline_on, sizeof(buffer))) sme_me_mask = me_mask; else if (!strncmp(buffer, cmdline_off, sizeof(buffer))) sme_me_mask = 0; - else - sme_me_mask = active_by_default ? me_mask : 0; + out: if (sme_me_mask) { physical_mask &= ~sme_me_mask; -- 2.43.0