Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp2633391lqt; Mon, 22 Apr 2024 17:36:22 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXRG82KI1AKP2HTq4BP20HVQ5Qfy5zrRSWO6oHSDflGvNYOS03VHbGN9+uC5iaY/DvSvAH5OKLXvTjgz7U4kxodYuOkQ4jixLkLk0sByw== X-Google-Smtp-Source: AGHT+IH/EtS2qiq5fZZuDIWlMsWYmDdmwDeYVFLqYYPwh02pqXWQvq/LSuw6vRjHWHE0s6/WucGa X-Received: by 2002:a17:902:dac7:b0:1e5:2a20:2d68 with SMTP id q7-20020a170902dac700b001e52a202d68mr14614470plx.47.1713832582063; Mon, 22 Apr 2024 17:36:22 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713832582; cv=pass; d=google.com; s=arc-20160816; b=wTa0IH30JjCu2npkUM2Fb7c6og5XIO/niYx3RlmR5B/4nU3Xq4toqYEAJ2RYPLieKQ swnbFcB4Jn5NS/HyFG/zEsEMIMUELexjXKKjbKkHtV024WneYx4Fl0K4XTSS4DnVBXIm O87CGfbvldeod7jlvAg2qszev99yjexs3MXExyuCnvLdPgzrOZxBRwtdCSxXN+icGkAA 6U2mp4Mm+AHwcDAqjU8ZgfAcu9drzekKkYxM7prx19NG+52xAVJ1konpfUnk4b9+WW/U CO+q75jzI+ZjzjDYiYrAM/JqKrXRyolwQj1I80eSssGt2K7MflnJJX6TkbbvRX1AOR+t M07w== 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=YjfcatTsATvW2GbRldo0mAG0VWyuUI8gTMLkNxvqNmQ=; fh=Se8rYHx0zTS/M1+sePsafT7yeuDcYthIlk9ngy+lvxI=; b=KoR5PMaYg6jQnedNOMy3FPmbyqrz4AOViuDawvgBW5VCuNNemdy5mhQbHSXMdy1TjE 5ul+5mSCAStDBcbL9Lau7cv9JThA83dKEULaly2uJoesdJeAwuz2MK4HHYPCHOc+zE7I 9RhX6FZCo0ndXyV2qa7zChgzrL+jke1rywA241Mez83y+01sFCqEI6iAjSwRHvoS3vqu nQ4W3B8omN19LuKEsVA+6ibC7EYsE/rgTPq0Yi+K9yq9cgsYprzJXyMmLAMDURsofUMn 2Mp77c+vMOD0heqtR61vwL0Xxw2bA1EOMTYPAiXhSpZSXB0NNtAgLb+HTNLFCmtXUHEi fJuw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=U8Bplyve; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-154307-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-154307-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id e13-20020a17090301cd00b001dd67c1b4e8si8779041plh.310.2024.04.22.17.36.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 17:36:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-154307-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=U8Bplyve; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-154307-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-154307-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 sy.mirrors.kernel.org (Postfix) with ESMTPS id 92085B23D8A for ; Tue, 23 Apr 2024 00:15:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 562BF158855; Mon, 22 Apr 2024 23:58:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="U8Bplyve" 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 776FF181325; Mon, 22 Apr 2024 23:58:00 +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=1713830280; cv=none; b=s32rujAVwo4uSrE+abDkse9HDtVRhbUlOAJGir9JBDzqG309Ji+AVEuKrrJHFj+ViCXtIRg/QdFruq6xq//JwjKP8KkSWDuIm/iEkd7qNe5k7NZqTTMoVUsdPV8yay9QCvYh9AIYQKeMsEL9AoO30BmV/FczQGcnVR34SlEV7Vw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713830280; c=relaxed/simple; bh=K5EStZlXPC94lOCkAltlvbRFc2NgIMhrY1Z9hChs+qs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QHJ+yJJDmyLe6Qpxp+mL1X+1mJ2KAPDEK2uZquvnN1c/S7J6Ciw0JbPSCkR5HICtC0tqanAAcl9K79fY9uH+PjhDJsos4iqzl1eTOnnSFNSXgBITJwFOEg4a3W/+WXNf7OcCtZfZITSqKSrG9FxxCQZJxL9sqynOPYiI7o4z+QY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=U8Bplyve; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id F38A4C32786; Mon, 22 Apr 2024 23:57:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713830280; bh=K5EStZlXPC94lOCkAltlvbRFc2NgIMhrY1Z9hChs+qs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U8BplyveHxNH1jTsbgEA266CF6rYizfu/ia4gWBg5HCiQS+Ty79MPJhF04Ud+dga+ hSlbxFt+vwE4pFIayIfV0sFUM4zoEEaA1/uZkEq6fvySmyIyHeELfE9Po0210Wk1x7 6avYOqKKhwO++nw06Jys2fJHFhl/2f7kM/f+Uq54aNXkz4JkP7sroVz0JH97k85zrs /risj7o3d+LktBcOr5n1QQg0WAbDzx0c1aPsByBlwJU6rTU0cQc0uoUe+hPqVWGnsn STU7aV/94KpiZkPsjQJ3V9Zd+Hbo4qmEyVBw13KGIL9i3iIIgTg8A8WGe0cMnKNXNp pt0shcbv5icYg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Rick Edgecombe , Michael Kelley , Kuppuswamy Sathyanarayanan , "Kirill A . Shutemov" , Wei Liu , Sasha Levin , kys@microsoft.com, haiyangz@microsoft.com, decui@microsoft.com, gregkh@linuxfoundation.org, linux-hyperv@vger.kernel.org Subject: [PATCH AUTOSEL 6.1 17/19] uio_hv_generic: Don't free decrypted memory Date: Mon, 22 Apr 2024 19:18:31 -0400 Message-ID: <20240422231845.1607921-17-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240422231845.1607921-1-sashal@kernel.org> References: <20240422231845.1607921-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 X-stable-base: Linux 6.1.87 Content-Transfer-Encoding: 8bit From: Rick Edgecombe [ Upstream commit 3d788b2fbe6a1a1a9e3db09742b90809d51638b7 ] In CoCo VMs it is possible for the untrusted host to cause set_memory_encrypted() or set_memory_decrypted() to fail such that an error is returned and the resulting memory is shared. Callers need to take care to handle these errors to avoid returning decrypted (shared) memory to the page allocator, which could lead to functional or security issues. The VMBus device UIO driver could free decrypted/shared pages if set_memory_decrypted() fails. Check the decrypted field in the gpadl to decide whether to free the memory. Signed-off-by: Rick Edgecombe Signed-off-by: Michael Kelley Reviewed-by: Kuppuswamy Sathyanarayanan Acked-by: Kirill A. Shutemov Link: https://lore.kernel.org/r/20240311161558.1310-5-mhklinux@outlook.com Signed-off-by: Wei Liu Message-ID: <20240311161558.1310-5-mhklinux@outlook.com> Signed-off-by: Sasha Levin --- drivers/uio/uio_hv_generic.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c index c08a6cfd119f2..e5789dfcaff61 100644 --- a/drivers/uio/uio_hv_generic.c +++ b/drivers/uio/uio_hv_generic.c @@ -181,12 +181,14 @@ hv_uio_cleanup(struct hv_device *dev, struct hv_uio_private_data *pdata) { if (pdata->send_gpadl.gpadl_handle) { vmbus_teardown_gpadl(dev->channel, &pdata->send_gpadl); - vfree(pdata->send_buf); + if (!pdata->send_gpadl.decrypted) + vfree(pdata->send_buf); } if (pdata->recv_gpadl.gpadl_handle) { vmbus_teardown_gpadl(dev->channel, &pdata->recv_gpadl); - vfree(pdata->recv_buf); + if (!pdata->recv_gpadl.decrypted) + vfree(pdata->recv_buf); } } @@ -295,7 +297,8 @@ hv_uio_probe(struct hv_device *dev, ret = vmbus_establish_gpadl(channel, pdata->recv_buf, RECV_BUFFER_SIZE, &pdata->recv_gpadl); if (ret) { - vfree(pdata->recv_buf); + if (!pdata->recv_gpadl.decrypted) + vfree(pdata->recv_buf); goto fail_close; } @@ -317,7 +320,8 @@ hv_uio_probe(struct hv_device *dev, ret = vmbus_establish_gpadl(channel, pdata->send_buf, SEND_BUFFER_SIZE, &pdata->send_gpadl); if (ret) { - vfree(pdata->send_buf); + if (!pdata->send_gpadl.decrypted) + vfree(pdata->send_buf); goto fail_close; } -- 2.43.0