From nobody Sun Feb 8 04:58:30 2026 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 827E458ABF for ; Fri, 2 Aug 2024 20:50:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631809; cv=none; b=OmUhEfQrcq89RJCL5bOe+6K9LWg7l2TFjtuISB/j8JvODyKCpmGMZDF0a1SekKD43AT1mv+cdl3Rb8Qy9q29sTZ06gw8Iqev9T+FMcUookrz1gijqsiC30QjEcCnPMxIEmlUPHxNtB6xnkZnjE4oQaZeGOxE3iugeYWz+/F9hUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631809; c=relaxed/simple; bh=sBOo69kX0YSryhxxIcP7p5qc/h2v/Z1JZ3udeP11lhk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=YZCUMRmBXy486sqZbCX3Ot8lnFK3tpGX+VaaHxm4/QWGXWhtiZv+MVtGCxets07AeRvAYtfxl7eh6CQQV9x4sn1cJEBC78hnGWK/Mx+ll3TVDf+IQrdDHtZy8NSDG3oMTaMa+vVvpMWAQ9fxHs7JV6QcmcOIlfs1nH2rwOuVXbM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Q2vQpciJ; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Q2vQpciJ" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-79d95667cfaso8806248a12.2 for ; Fri, 02 Aug 2024 13:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631808; x=1723236608; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=O9gMVDnHqOtk8HQWACGShA2WLrj6CrVEJQ1Rnn6+n04=; b=Q2vQpciJXWKeda903RP1ApRBHHnwXCeZMC0TnkqRpsPVO7XOGehAlGOYqEXCO+ReaJ 5/ofGa0ihuARQPbJoRNYAVdr9HDaJSq6Od5jkNayPu1sRqOGtIMZSFcEMai+Qt2uRnJb 9n7usvWB5NXdavwFQBAh84iBQBS8UQY3351a2oyK9SKB4Wft6Hp+7CRjAKDs5klHYUn1 zceg95trXDojyAZf7L3DY8qmBFzpMJxYng9FHe5ZEnrypbP2Z8BmE4XA/UVyaqJd3OpI imTRGj1Q2sDf20jLYvhGpec82BAieRXjq5/TnzqBnQJG8G2g6AvaXmoq9BHtW4MBNw0F Uh8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631808; x=1723236608; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=O9gMVDnHqOtk8HQWACGShA2WLrj6CrVEJQ1Rnn6+n04=; b=O7wW9HDo7A7rYJK663UxI4Ic8FeD0ahr89M2oWb+f9HrK9eCj6MW73EWjhYYrHC99v 3QD/7MfTLNSDJL+uY6C/S5TLJtp+B2qP6PqCdYKuZ8dcPJXpG/do1WczOWqKhe4bB0fI R/sXDAZ8nJF1WFTUGJOAI2iGTq/3mksP+L6168+Wj6GHhECbSEDKQODvkOMWPc0ClhOl HTUJLmjnpN4mjibDtYxQFmeCfPgelo2N5Q8lla+3HmHuCUhAt+8A1alO7PV4R4EsxvlC WYmpPi9nXQ6HOBvJPbMwcApjZ2NlR3x1VJad1RitJ9VdGrU2XsQ4DgJzkp2zruz6J3al cJnQ== X-Forwarded-Encrypted: i=1; AJvYcCUMRE/nxiS3RAL/CqjhsXrbNLaesXKbBz4rLOj1XW56wsIvD+9yi3qwC4+KBOVSKwasKwSthkGmJA9HFvi/wt/Nre8oSnBZ9jz3/vrX X-Gm-Message-State: AOJu0YwRttWcf3GtKckN99SNRjfhI4UBGUiYNXK3/0KpScE9zVeBIJX0 IcEtlC7JylfzS2t+whp2mNA/25/7/oydBqW5Zza6wfJb0ejP8jY9aT5w4WW719MFHzryD+Z4sac Thg== X-Google-Smtp-Source: AGHT+IFIO4UD2Q8xM+v/fcdA/e1KXIqTtO1/9sFBl4VhJt9M8ln8Nh08MMSytma4Tf1IuwJIQtRi3c99cHA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:798f:0:b0:7a1:4462:412e with SMTP id 41be03b00d2f7-7b749235e63mr8632a12.9.1722631807730; Fri, 02 Aug 2024 13:50:07 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:49:58 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-2-seanjc@google.com> Subject: [PATCH 1/6] KVM: Open code kvm_set_memory_region() into its sole caller (ioctl() API) From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Open code kvm_set_memory_region() into its sole caller in preparation for adding a dedicated API for setting internal memslots. Oppurtunistically use the fancy new guard(mutex) to avoid a local 'r' variable. Signed-off-by: Sean Christopherson --- include/linux/kvm_host.h | 2 -- virt/kvm/kvm_main.c | 15 ++------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 689e8be873a7..b341d00aae37 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1179,8 +1179,6 @@ enum kvm_mr_change { KVM_MR_FLAGS_ONLY, }; =20 -int kvm_set_memory_region(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem); int __kvm_set_memory_region(struct kvm *kvm, const struct kvm_userspace_memory_region2 *mem); void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *slot); diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index d0788d0a72cc..0557d663b69b 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2105,25 +2105,14 @@ int __kvm_set_memory_region(struct kvm *kvm, } EXPORT_SYMBOL_GPL(__kvm_set_memory_region); =20 -int kvm_set_memory_region(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem) -{ - int r; - - mutex_lock(&kvm->slots_lock); - r =3D __kvm_set_memory_region(kvm, mem); - mutex_unlock(&kvm->slots_lock); - return r; -} -EXPORT_SYMBOL_GPL(kvm_set_memory_region); - static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, struct kvm_userspace_memory_region2 *mem) { if ((u16)mem->slot >=3D KVM_USER_MEM_SLOTS) return -EINVAL; =20 - return kvm_set_memory_region(kvm, mem); + guard(mutex)(&kvm->slots_lock); + return __kvm_set_memory_region(kvm, mem); } =20 #ifndef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT --=20 2.46.0.rc2.264.g509ed76dc8-goog From nobody Sun Feb 8 04:58:30 2026 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5838A770F9 for ; Fri, 2 Aug 2024 20:50:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631811; cv=none; b=nRcVwleNY2yK53h4mPA4fCvFjsWytvI6Y1O5MbMV3MfXvQkz+nThtH27gUWa7+ik3AGohd+JEMifdlLaw0B3TFVdjDTOA9cWkYjxWhXMOMlAbRUkPY671sDbuZKJbB6hw+12vaXBBhVps667BtUgB2VtN6xppHQKshvCDlTu5dU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631811; c=relaxed/simple; bh=+/UuIDHcRQ8bBgQBKufiTQ6/NBfl7hp7XC+v3gwl3TA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=P1Y/573H/DX/t/+7l+LuGJq/nnJEy1monFF0lMT55u1yJAao5UnAaL83+dNUdQuEmlidvxYcjvjMVpQDru2j4/laV+xqhZQhQXL5XD0v0lorOybBB/FB2sbILb50Itd/KALNXB3f/h7QMsLSwOnf20t4LOsc01BLZE1R4GhqMfU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=xx0tKsh8; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="xx0tKsh8" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-e035f7b5976so9622905276.0 for ; Fri, 02 Aug 2024 13:50:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631809; x=1723236609; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=vhgy4am0UvUSmvRzeDG6pp/0Zly8gx1T1Ec+frofWT0=; b=xx0tKsh8e+50cNuu6P6wuUE/Ded+CesEjVmTUyuWnSnPhGAXRUKY1TktSE+pagsYjo NM2ZFW5CB7criwjQMDMjsmP3NWJneMwhvBTTglGrwudMQbx8LsLVlcpd/OhTEJyXaQZD 2JCflIkZ6i9QJCAwApZzrBSqR/byxVO+0aq0DW6+ieLYqwpNKlZpGkFBeByGofw7Je72 XIhks/TazxLoMJJcJp8ne1H5heW2X+OQDXg+V3W0guIbuEp41JFgn7dbhJdFJtqd1DpL VD4EPFPwx8pvNjHJR2EbNByqfuEzlq1VOhKTd3mKgaWMhL0mOry8EQj98OSo3UjAd1zr Fw+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631809; x=1723236609; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vhgy4am0UvUSmvRzeDG6pp/0Zly8gx1T1Ec+frofWT0=; b=WE866HaDvbLtpiIz8Hs2wVK8x24c8w1lQitbC36HeRdqbnyU0viTFwgkkX9anrGpfQ 3kp+5B4axxGdWDifRYpUnWV6/J5mezIFyUUklMlFDHyaj4FedN1MhBNthE+BwHvfwg4g WbhtnwBQMHBiXtHA4dbscQWEm4hTZvZeKuaQ+s6kY/X1LQCEAAcKXX+sz2F8TbDFy06U 7C9+IFeEY81tYV+50+GudCfC/p0OvCbyN8MQkmL7yGfFGcNN6hBVL8STOQhFSyGxcxjF LEGCW/p6tK460J8JqjZwQeorh9/IVIzYDHoulzukrizOJY3VaURvZqRuq3zij8TizrQp IXQA== X-Forwarded-Encrypted: i=1; AJvYcCWgLrRjoW4m6gwjChDgcyYpb4Ce8fB8xP/Q1yRQMx2Pl2RvzB4PP0hvtHY7cimQh6c8EVkSbTMrOOtJVHfMSRyOz/FHlK7Nstoq0pML X-Gm-Message-State: AOJu0YxnGqHXvxMjn+U+O5dFS663pEmJzCG9uFkycQEY+wxKn3WGY/tu ZbMBfQTuQWSIihHoLALyl/3lgznvqzq6SoIzPSBqAT6zoDwk/DYzATCMT60t7dgb/J65QVfOIeR oPA== X-Google-Smtp-Source: AGHT+IFaG/omRB7AizNm6kEMBOCZAmcvGUoqJ2zKlTWS8jxj1A+cn3Aj6JsUZ4pDJBVCXzSy0rcuzzTc+Cc= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:86:0:b0:e0b:a34d:f223 with SMTP id 3f1490d57ef6-e0bd5b96ecemr44386276.5.1722631809493; Fri, 02 Aug 2024 13:50:09 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:49:59 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-3-seanjc@google.com> Subject: [PATCH 2/6] KVM: Assert slots_lock is held in __kvm_set_memory_region() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a proper lockdep assertion in __kvm_set_memory_region() instead of relying on a function comment. Opportunistically delete the entire function comment as the API doesn't allocate memory or select a gfn, and the "mostly for framebuffers" comment hasn't been true for a very long time. Signed-off-by: Sean Christopherson --- virt/kvm/kvm_main.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 0557d663b69b..f202bdbfca9e 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1973,14 +1973,6 @@ static bool kvm_check_memslot_overlap(struct kvm_mem= slots *slots, int id, return false; } =20 -/* - * Allocate some memory and give it an address in the guest physical addre= ss - * space. - * - * Discontiguous memory is allowed, mostly for framebuffers. - * - * Must be called holding kvm->slots_lock for write. - */ int __kvm_set_memory_region(struct kvm *kvm, const struct kvm_userspace_memory_region2 *mem) { @@ -1992,6 +1984,8 @@ int __kvm_set_memory_region(struct kvm *kvm, int as_id, id; int r; =20 + lockdep_assert_held(&kvm->slots_lock); + r =3D check_memory_region_flags(kvm, mem); if (r) return r; --=20 2.46.0.rc2.264.g509ed76dc8-goog From nobody Sun Feb 8 04:58:30 2026 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F91D1ABEBA for ; Fri, 2 Aug 2024 20:50:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631813; cv=none; b=QRXK12RZctBIUVH2KjY7bh/ZnQ49KEiWuQ35tAUAoVb7x0tUlol+2NzEhgg2ZOsEwcVDToa754J5rM/UyoJ3Q8MlCZXAlk++BDCHz/UAo4UebAlneSJLPSpWBa1w2GM2RC+sqnWpJmrQ4rre/0/Nz2TUgTBfJMxglC/R9wTOKjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631813; c=relaxed/simple; bh=ryVUMI2g0m5dQwWIHvd3/K7VFFhleb/XIi+fC2p2RwQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=udEv7gtZDXeALpYBBwHmoxGU7LT9nvAUCSMEReJ21xOIeye2yhiH26rWfXhLf3PUQlB3BNNFAM1UDS011A6jihhpGwq9WKaw1QrgAx725E5QJsEPY7ihCGQorLOmqlkZnBwmX2s8SH+n8R2jqj9D46y2d9LNqr+Z1WJ66v+GUXA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=eTt1onKw; arc=none smtp.client-ip=209.85.128.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="eTt1onKw" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-66619cb2d3eso185997517b3.2 for ; Fri, 02 Aug 2024 13:50:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631811; x=1723236611; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=cNufUBVkEFtXyyJFRWhFP/HQuDK1gq9WLgQ7TUopaSE=; b=eTt1onKwprdYca0HS/2aoQgL1qcZHnLaADOYW31SCv1QRWhyqXAsOhVFnScDPoV0/y EEelP2CqjJbFlpDq0ywyW29rgkjnjWpZdlavEFPeb2RRrh6O22sLV00cqvT7KicxCYwv sWdJeSbaS51zFbyexNYRcWUuDsHWSVE+koaDiThmYZBR54b35GB6ocBm6ca0++2L4LCl VxTxl+9K1QQfl+xMnzFHaJFiNJX3/EZ/L7ydSN5zLha44GQntOj9BICEdKkigmsHJq6w 7oahG+preuaNXGUlV93UaDiyFP6XfQ7SW9YDD4+5DSiszCFWGE9vHSUbV+qzc3uHj2XX 4y+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631811; x=1723236611; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cNufUBVkEFtXyyJFRWhFP/HQuDK1gq9WLgQ7TUopaSE=; b=aLIdqGdmmgZFA9b5iwYGW7gDZkhxrTstAXTTQYDDRYCkmUK+FfTmfTHDqw2hQuRAD1 V7WSv9/k70iHgdM3FEK6dFBfSbJA00AnFZ+yom0HPHiDqYWI77gG13paT9OxfknomF9V IFjpVJFKhRKgL2Z8XViv2SRKr0ApaMexDKPLGF62j4/C+JInj3ZNQGKx0hzkkc9ttWF4 0Z8CgebPNLXVYq9a+3IsTPS92Qc7JePFTM46rtBAT8hXkrKgNhxwEA7v+h7VOBKoOMkE vI3N9CgFrt1iSk/X1MBKbqFHgXENtMdSHWrLHWB/92wF9nS4zFiTTF1EzPuQuY+gMyjq HDvQ== X-Forwarded-Encrypted: i=1; AJvYcCVzgPsdUVoMac6znEUQ/HLCkJFbhv3xaypeyqiMk44vgLfdB5k34+L76tGTWfdYkUnNw/8zvJRoRSXx9DZb63EpX3+B4tYYliEcmlBj X-Gm-Message-State: AOJu0Yw99BQwest1bfJCtDlaKjO5eXEnAmWyacx/pxj8OhamzUlHRm0S gMfHZdIhLaXRPuUVXWezrCBE0KIk93ACna/c6hIhEnwWWBYphG60bOpaG/L90RuoA796ZUjQ/vK TCQ== X-Google-Smtp-Source: AGHT+IEVd++gjv5JjjXYdrIQrBE6X+Wf+379il6l16mOh+D6tVdPpj/zSVq1nLbIYd7hetKBqRUwhCVXO90= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:690c:112:b0:62c:fb55:aeab with SMTP id 00721157ae682-6896458f799mr3223987b3.8.1722631811375; Fri, 02 Aug 2024 13:50:11 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:50:00 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-4-seanjc@google.com> Subject: [PATCH 3/6] KVM: Add a dedicated API for setting KVM-internal memslots From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a dedicated API for setting internal memslots, and have it explicitly disallow setting userspace memslots. Setting a userspace memslots without a direct command from userspace would result in all manner of issues. No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/kvm/x86.c | 2 +- include/linux/kvm_host.h | 4 ++-- virt/kvm/kvm_main.c | 15 ++++++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index af6c8cf6a37a..77949fee13f7 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -12794,7 +12794,7 @@ void __user * __x86_set_memory_region(struct kvm *k= vm, int id, gpa_t gpa, m.guest_phys_addr =3D gpa; m.userspace_addr =3D hva; m.memory_size =3D size; - r =3D __kvm_set_memory_region(kvm, &m); + r =3D kvm_set_internal_memslot(kvm, &m); if (r < 0) return ERR_PTR_USR(r); } diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index b341d00aae37..cefa274c0852 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1179,8 +1179,8 @@ enum kvm_mr_change { KVM_MR_FLAGS_ONLY, }; =20 -int __kvm_set_memory_region(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem); +int kvm_set_internal_memslot(struct kvm *kvm, + const struct kvm_userspace_memory_region2 *mem); void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *slot); void kvm_arch_memslots_updated(struct kvm *kvm, u64 gen); int kvm_arch_prepare_memory_region(struct kvm *kvm, diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index f202bdbfca9e..63b43644ed9f 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1973,8 +1973,8 @@ static bool kvm_check_memslot_overlap(struct kvm_mems= lots *slots, int id, return false; } =20 -int __kvm_set_memory_region(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem) +static int __kvm_set_memory_region(struct kvm *kvm, + const struct kvm_userspace_memory_region2 *mem) { struct kvm_memory_slot *old, *new; struct kvm_memslots *slots; @@ -2097,7 +2097,16 @@ int __kvm_set_memory_region(struct kvm *kvm, kfree(new); return r; } -EXPORT_SYMBOL_GPL(__kvm_set_memory_region); + +int kvm_set_internal_memslot(struct kvm *kvm, + const struct kvm_userspace_memory_region2 *mem) +{ + if (WARN_ON_ONCE(mem->slot < KVM_USER_MEM_SLOTS)) + return -EINVAL; + + return __kvm_set_memory_region(kvm, mem); +} +EXPORT_SYMBOL_GPL(kvm_set_internal_memslot); =20 static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, struct kvm_userspace_memory_region2 *mem) --=20 2.46.0.rc2.264.g509ed76dc8-goog From nobody Sun Feb 8 04:58:30 2026 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D53C51339A2 for ; Fri, 2 Aug 2024 20:50:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631815; cv=none; b=n0vwVui1UpKPTwlU6vVunLLLDu2hxPmAJHTpT1LbnsDWBl1irXa6SuroqFpNVEnD2FUwlF+gOTZ6RLNYo6en+GmrLHM0DiT3Ea2LSVzEXTuSzgq3/hI43elMAkJsPTu0VIiGBtpgux2ixnsNR6191NeAWHzp+TwpQLB5sv61Ipk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631815; c=relaxed/simple; bh=gCqaKijnA/XXSCKJJY3H14sUdvU41wCk5WOtCSYXq78=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Bk8xonw4Rn/5G0AaTPWwVJMgH25gFNQ1DZuN048+Irt7zCyfXkPrOtDsHVx9z0zIU+sMOu0Hh9GxVOeyTh17qmOrubExJ071YiR93qxjTG0oaHQG3Q935KtIjdp4lN0mnXnwnQkuzLJ51Flp7LK4kBRvchaIqpz6UVTaOwpIsxY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=WXiTJZE9; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="WXiTJZE9" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-7a2a04c79b6so3519969a12.0 for ; Fri, 02 Aug 2024 13:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631813; x=1723236613; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=c5Nq/OFr3yVwVK6otXPmP+p3Am8dAjZp5v9yRhPUjYo=; b=WXiTJZE9B7GKNKQc/dtGTvDxiROqAkt3qJFVuM3EitWEs8TW3mwQbBcQaVQp22ah55 XIDH5jZWugny4n9kftF9iUZ8GZYOoGs9I4UH8OuLikx9tukjFZPPRneV/Z9bDd79KfGA 7ylVmvulze1fHy1N+xmfaogsNpgIo6pNDR6EzdBY6gdRHo3KJYns63TRA/Riqrb0ziYz WSieyEFvgnXbBDQSKkffmXV7o5Jq3kZUMp23WFqg3O3aAqRRzVNNRnsH96I01q/T7qe/ r7IHzNeNvLX8o6BIGNMqDPMG/TZarnjMj/FAxic6cXNCzdRWtiBm2dGEEGyTDkm35qGt cI/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631813; x=1723236613; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=c5Nq/OFr3yVwVK6otXPmP+p3Am8dAjZp5v9yRhPUjYo=; b=Mz54V4rSGuqdJHASkG6w1KtVeuxMmSqeVuLxiTMBESFcBHaQaEqr+VI4M+pHXbPNjw SMvdxhQQSzmA3rxkHrlU+bS0KmKi/bVzhFn5sQ0/J0xfVx/RfdPZrC+WQ3SuJFoWcPiN 8N9sgHRktEABLWq2DhPhm3mVUixo17H+y49r7437x0aiB2by7fp0EZGgPLm5aFGGSEHa 9EH9+z+10udTHrJ8kU7GeTEnFZgH0S0IEGgmfcgkhI5F411QJCTOcvSKfaLkjm7Cj2Su goYtwYvmrVOV5J8OC6YxM6YWJVEYOVZKAo3MP3JgtHjiqUZM9WpeCaNNi+0AIdxxpS9V EPiQ== X-Forwarded-Encrypted: i=1; AJvYcCV1CW+0uIa6INSQ2e/G6nTCk+jUBm6b/VdKlehNaJus12CT7CbVpdjnNzmh9HcstgRHUykIIEv34z1fcUn2pcr15olySPJ+ZsFnAmPp X-Gm-Message-State: AOJu0Yzg6i6r6MBNsBgA+TwnwAethHc5krTPLwIq9ET6HsszOnJtzhR6 EcFAzuWJSgmKY9RK9zgA6O0+aEya1LxRBG22RnKJGeI01SE+Ot19rzQ77NWn1vpOyeHPYXIkcu5 Meg== X-Google-Smtp-Source: AGHT+IFCCb4cjN7vw4l+DdM80k46FcB95ke4PJ/4aZuNN0SLLSK30zfFovXw2fZA2crCh5pBwalD0Ra5Fa8= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90a:a617:b0:2c5:2b19:4218 with SMTP id 98e67ed59e1d1-2cffa2728a2mr37588a91.3.1722631813176; Fri, 02 Aug 2024 13:50:13 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:50:01 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-5-seanjc@google.com> Subject: [PATCH 4/6] KVM: x86: Drop double-underscores from __kvm_set_memory_region() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that there's no outer wrapper for __kvm_set_memory_region() and it's static, drop its double-underscore prefix. No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/kvm/x86.c | 2 +- include/linux/kvm_host.h | 2 +- virt/kvm/kvm_main.c | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 77949fee13f7..bd365fb8ab6e 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -12895,7 +12895,7 @@ static int kvm_alloc_memslot_metadata(struct kvm *k= vm, =20 /* * Clear out the previous array pointers for the KVM_MR_MOVE case. The - * old arrays will be freed by __kvm_set_memory_region() if installing + * old arrays will be freed by kvm_set_memory_region() if installing * the new memslot is successful. */ memset(&slot->arch, 0, sizeof(slot->arch)); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index cefa274c0852..b5c048858fc4 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1170,7 +1170,7 @@ static inline bool kvm_memslot_iter_is_valid(struct k= vm_memslot_iter *iter, gfn_ * -- just change its flags * * Since flags can be changed by some of these operations, the following - * differentiation is the best we can do for __kvm_set_memory_region(): + * differentiation is the best we can do for kvm_set_memory_region(): */ enum kvm_mr_change { KVM_MR_CREATE, diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 63b43644ed9f..42ec817d6a7e 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1973,8 +1973,8 @@ static bool kvm_check_memslot_overlap(struct kvm_mems= lots *slots, int id, return false; } =20 -static int __kvm_set_memory_region(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem) +static int kvm_set_memory_region(struct kvm *kvm, + const struct kvm_userspace_memory_region2 *mem) { struct kvm_memory_slot *old, *new; struct kvm_memslots *slots; @@ -2104,7 +2104,7 @@ int kvm_set_internal_memslot(struct kvm *kvm, if (WARN_ON_ONCE(mem->slot < KVM_USER_MEM_SLOTS)) return -EINVAL; =20 - return __kvm_set_memory_region(kvm, mem); + return kvm_set_memory_region(kvm, mem); } EXPORT_SYMBOL_GPL(kvm_set_internal_memslot); =20 @@ -2115,7 +2115,7 @@ static int kvm_vm_ioctl_set_memory_region(struct kvm = *kvm, return -EINVAL; =20 guard(mutex)(&kvm->slots_lock); - return __kvm_set_memory_region(kvm, mem); + return kvm_set_memory_region(kvm, mem); } =20 #ifndef CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT --=20 2.46.0.rc2.264.g509ed76dc8-goog From nobody Sun Feb 8 04:58:30 2026 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA4AA139584 for ; Fri, 2 Aug 2024 20:50:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631817; cv=none; b=rIv0RYeRt0yWR9RhwT2e2TaKycVPMi9mHtAGh9F3vQzCrfd5Ye68TcbiUy45Ir3e85uVYchab1Z97ngrJAzgykos6WkmHfhIXvsJF9b/eohSTCa3yNTWH5+oa4bcoKxmZQcRm10hSQxyhsw4htJ4L/MAlqPYWcMVFbOG7J1TAco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631817; c=relaxed/simple; bh=96WKGVZv6MYMzFgE5HIqk4A3cYSg0BZ1Uq2YbSu01Vc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=slb/ElnhNpIkoovKZy0DB5+UT3RAbbzgAwpys8WJmq06oFO8khpYReSF//exlSBDnOOLdRRJrIafVR4POy8DLA5jQNToRK8J5Rs6Tu62yB51+fJbtcF6GWqKs4HJQHXMBT0n7KeEnY8++T5zk2JcYQR0rHHJ1wNvAT2vXytloaA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=tbEXVM5M; arc=none smtp.client-ip=209.85.210.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="tbEXVM5M" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-70d14fc3317so7666990b3a.1 for ; Fri, 02 Aug 2024 13:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631815; x=1723236615; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=9TDEuE7b7M7Fc+GA7/BL6fAQx5gD/oVWr+JWhTN6LC8=; b=tbEXVM5MUJ/l0SizyJmWvJysjPUAHEPogxkJjnLn39aznWnN3dbfn2lwwC145tQrkL EDIu4yyEyGZk/Fm8XUXlqpoiieN1jl05x/u2YxdBWD5VEOVOmstxTET7XvaJhFfyP+KJ nJ0LRJToFlNK8k5Yu2orl1MQ+FATmQLR64uhyo7B2D4Mhci8fy7A1HQI5Mj8+fGq1gAU hk+GBYAQLwrTjb+6O4cs6qkXtbax7a5aF0xZ9uPM8neRSARc/cAm1zskEuEFCyKDTmN9 nA69N14E9U2WWp643we01/D0yckIarwS5jCu+Vviza39hfKZeTNl8p1iboVnW9yliKK4 Iqqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631815; x=1723236615; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=9TDEuE7b7M7Fc+GA7/BL6fAQx5gD/oVWr+JWhTN6LC8=; b=VYubO9RpiDmu5olmhGe/Q4sm51pqJlYnT5b3GfFiv+ofQRMhTXJiEEUFmCoVglXYjQ MmAhVy9yvivT/iqpbcfCAU+udQIRrVcuj0RTsL08FRFZ8Wi7ja+uYczyFd3fSWU2gF0b 4TYIg6aKR6Qjq3l2GahuCklczvV/FIyxPgUhrIFXd4B1YqfNoj+kniaTl/YKkvk9IUSN UsnKj8t64KPpisfmIusM3hIFk1EE4p912UlZw5lnC6pcf+lWTKzupUgX21MNT186pwf9 sLP/pCnDsD7z9IoBwOT560yMtQAagvT41+7tPp1/X9sdNY5XUvEJflxp9OS261KEuWfN 296Q== X-Forwarded-Encrypted: i=1; AJvYcCWQOsygRVhD1Lw8j6XRbHm9HsITNeZgyLkCrX61BER8CSIYDCDRq4i3t35QAwYAkOrpyOoXxNibggxSR36tQuDbfP0aEiKvQY3YYJol X-Gm-Message-State: AOJu0YyDARqGwyBWR7y39vnoSoy4ewSqsWU5ao5i8ITwQiVmbMT+MhSW guv5RS2cYX2i+NbvkCExx+QLzJC/zkZr49KdaQAkeOic2XDB/dqvBPwcMFPEg0Rex9CSfQ2zl0I csg== X-Google-Smtp-Source: AGHT+IGmstI5tuapD/d9fVDrQq8mrfrk57GkjBrOBNxVboWhlaf2L+9JkUsv0iGblKu/0wbgzPE1ESYXn7U= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6a00:914c:b0:710:4d3a:6bc9 with SMTP id d2e1a72fcca58-7106d04604dmr86509b3a.3.1722631815035; Fri, 02 Aug 2024 13:50:15 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:50:02 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-6-seanjc@google.com> Subject: [PATCH 5/6] KVM: Disallow all flags for KVM-internal memslots From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Disallow all flags for KVM-internal memslots as all existing flags require some amount of userspace interaction to have any meaning. This will allow moving the flags checking from __kvm_set_memory_region() to kvm_vm_ioctl_set_memory_region() without creating a hole where a KVM bug could silently succeed and create a bogus memslot. Signed-off-by: Sean Christopherson --- virt/kvm/kvm_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 42ec817d6a7e..84fcb20e3e1c 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -2104,6 +2104,9 @@ int kvm_set_internal_memslot(struct kvm *kvm, if (WARN_ON_ONCE(mem->slot < KVM_USER_MEM_SLOTS)) return -EINVAL; =20 + if (WARN_ON_ONCE(mem->flags)) + return -EINVAL; + return kvm_set_memory_region(kvm, mem); } EXPORT_SYMBOL_GPL(kvm_set_internal_memslot); --=20 2.46.0.rc2.264.g509ed76dc8-goog From nobody Sun Feb 8 04:58:30 2026 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0522F13A406 for ; Fri, 2 Aug 2024 20:50:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631820; cv=none; b=Sk5+5kP7fQizbcD+nxL+BxKKNYG1tYeqreGxKA8ARNd+4CZWy0bYFcwyoeVkvIhQzcjBY1Uz0OPUuHCeHRFvPf5kvu6Uw2/nSlozs3p6vGB7kOcZDbQo3jwRzecqtTNN75Je9R1mLS6QhD5YXnn1enJprCBJnVPYNLvZX+N54uE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722631820; c=relaxed/simple; bh=KEGZdr470mbN39TUkKhvxHtOKwGWSbX3eH+Pxhz6IxE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=uweh/Sz6DxTr9ZM5wNWgrbRJRf2LMABGm+fzvNicRW7SF+sSfKY3Ezz/UGetMLeCnblCZLNChbjnFIVxaICjwM3Ou3tm5ouz6IbIbF+QyZ3MnG50A1cYkOiewLMx003B4mp/ulUKhAD00sp99vI+Z3IC19gYJk0+IuwbbwHxKwY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Nmr/ypcQ; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Nmr/ypcQ" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-5e4df21f22dso3535876a12.0 for ; Fri, 02 Aug 2024 13:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722631817; x=1723236617; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=sjrf6LZp0RLJx3l68AWkRp+t7dxqDnRfk/l7MG9GSDc=; b=Nmr/ypcQRV8rLYJ2ynANvyYB3nrBPYJCMtYzatnQVi+njMFTluNJkFnxCsfI5fmkDs HHTwa10ArAfBE1qNBf2LfzuLYP8bJGqdzl1XtTi3cICZVk+C4cNkoASl7qZz+eVTaBCg /me7rE21Yay+LEepOPlqvPiQojNXvXtzU1dg2Og9p6O0vAOsfRJkfwWO8MlZFhQV6iC+ uug3LdVIQdF8rtIOYR3d3DSZfcXBphBCuB4sUYVoSekou7RM1dfuzICCHsjv5UHco8nC hmLTRtjPHrxr77IYvK+T/DqFXC6OO27AljzI5QbhbQoQlpUq058DYiekEgrLdOCkv/mA e79g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722631817; x=1723236617; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=sjrf6LZp0RLJx3l68AWkRp+t7dxqDnRfk/l7MG9GSDc=; b=vQ0HBy68ag4tEVNWqW6O4KV5aD5tnq7WYV30c9eeci8aCLddadDvRhbyauSkpMqNJN 07kBbm2IZV5CseKMt+Yp99MVbZVIUFZrrPYyfFnSWSkllezR+vXn8gsTjIl3E0qbi1ig vKe7oUJRyygafxs+5Zb/00dpl+hESRJ73auIXCd9uD8FwrCu/Q1MyHxOr3cSEtJkF/7+ 0Fkj3jUmIuaRh1daFrssd+wMQuOhQXNpqRtzu456uIfc7i30Gyv0w49niXVoYOK0D/aK wYM5sRl7hbFIYRzc5v+FGQQtb5K2z/3t/xw6zdTzxVJYfFIczP+abwYmda7sNojZ1Q6H 4vOA== X-Forwarded-Encrypted: i=1; AJvYcCX+Ueo05hiE3g5zX0BJlPMUi/MRiKZOMsH/g64YA+/wy9pN2kY32wK7rSASAxEzDROnTAoeRNsGIRdGehVtZaFxy+KqmEWO/uCZPiPQ X-Gm-Message-State: AOJu0Yz7yrQFfq97G2NX8xih7Rsif+kS7hmMPD0FijppG0NCMbiR4Ixm AcEJwaaaInCXUtCae2Gp/eTfzbf6iYdeqn3HYvPSy6u6WFsjV362zbm/YDHbLZVTmhKKqOEmTP3 eUA== X-Google-Smtp-Source: AGHT+IF6C7pZ4NUGocFOOu/UQeiI5UJqzb1YswLOQBQxbJtWu5WEPTvztRxCrWwXOvBTc4lrrFA0biwyW7Q= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:6704:0:b0:7b8:b174:3200 with SMTP id 41be03b00d2f7-7b8b1743d58mr2218a12.5.1722631817192; Fri, 02 Aug 2024 13:50:17 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 2 Aug 2024 13:50:03 -0700 In-Reply-To: <20240802205003.353672-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240802205003.353672-1-seanjc@google.com> X-Mailer: git-send-email 2.46.0.rc2.264.g509ed76dc8-goog Message-ID: <20240802205003.353672-7-seanjc@google.com> Subject: [PATCH 6/6] KVM: Move flags check for user memory regions to the ioctl() specific API From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the check on memory region flags to kvm_vm_ioctl_set_memory_region() now that the internal API, kvm_set_internal_memslot(), disallows any and all flags. No functional change intended. Signed-off-by: Sean Christopherson --- virt/kvm/kvm_main.c | 54 ++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 84fcb20e3e1c..09cc261b080a 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1566,34 +1566,6 @@ static void kvm_replace_memslot(struct kvm *kvm, #define KVM_SET_USER_MEMORY_REGION_V1_FLAGS \ (KVM_MEM_LOG_DIRTY_PAGES | KVM_MEM_READONLY) =20 -static int check_memory_region_flags(struct kvm *kvm, - const struct kvm_userspace_memory_region2 *mem) -{ - u32 valid_flags =3D KVM_MEM_LOG_DIRTY_PAGES; - - if (kvm_arch_has_private_mem(kvm)) - valid_flags |=3D KVM_MEM_GUEST_MEMFD; - - /* Dirty logging private memory is not currently supported. */ - if (mem->flags & KVM_MEM_GUEST_MEMFD) - valid_flags &=3D ~KVM_MEM_LOG_DIRTY_PAGES; - -#ifdef CONFIG_HAVE_KVM_READONLY_MEM - /* - * GUEST_MEMFD is incompatible with read-only memslots, as writes to - * read-only memslots have emulated MMIO, not page fault, semantics, - * and KVM doesn't allow emulated MMIO for private memory. - */ - if (!(mem->flags & KVM_MEM_GUEST_MEMFD)) - valid_flags |=3D KVM_MEM_READONLY; -#endif - - if (mem->flags & ~valid_flags) - return -EINVAL; - - return 0; -} - static void kvm_swap_active_memslots(struct kvm *kvm, int as_id) { struct kvm_memslots *slots =3D kvm_get_inactive_memslots(kvm, as_id); @@ -1986,10 +1958,6 @@ static int kvm_set_memory_region(struct kvm *kvm, =20 lockdep_assert_held(&kvm->slots_lock); =20 - r =3D check_memory_region_flags(kvm, mem); - if (r) - return r; - as_id =3D mem->slot >> 16; id =3D (u16)mem->slot; =20 @@ -2114,6 +2082,28 @@ EXPORT_SYMBOL_GPL(kvm_set_internal_memslot); static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm, struct kvm_userspace_memory_region2 *mem) { + u32 valid_flags =3D KVM_MEM_LOG_DIRTY_PAGES; + + if (kvm_arch_has_private_mem(kvm)) + valid_flags |=3D KVM_MEM_GUEST_MEMFD; + + /* Dirty logging private memory is not currently supported. */ + if (mem->flags & KVM_MEM_GUEST_MEMFD) + valid_flags &=3D ~KVM_MEM_LOG_DIRTY_PAGES; + +#ifdef CONFIG_HAVE_KVM_READONLY_MEM + /* + * GUEST_MEMFD is incompatible with read-only memslots, as writes to + * read-only memslots have emulated MMIO, not page fault, semantics, + * and KVM doesn't allow emulated MMIO for private memory. + */ + if (!(mem->flags & KVM_MEM_GUEST_MEMFD)) + valid_flags |=3D KVM_MEM_READONLY; +#endif + + if (mem->flags & ~valid_flags) + return -EINVAL; + if ((u16)mem->slot >=3D KVM_USER_MEM_SLOTS) return -EINVAL; =20 --=20 2.46.0.rc2.264.g509ed76dc8-goog