From nobody Mon Feb 9 06:24:49 2026 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 44B1B22A7F2 for ; Thu, 16 Oct 2025 17:30:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760635815; cv=none; b=RUT7fnr0mrIGF3nWhRbyaO0+Oro4dICX8oZEygAQqkBzurdPm885lke4yy1TeNXBEGIAO8GfejUiHjuyX1PC9KzEUPKmrATU7Z/e6WgrkERwpnQcAF9OZJIOuEE7Qbg4bOna18/YOkZKyQcKckT6lPdk1pn2VDNG4mbsSg0bTy4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760635815; c=relaxed/simple; bh=Ru4m8I7GXDakLu5/QZ8fZL1qLohr4A91qPbj1pId4+Q=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=j8wff1FC7StdAW7cFblAD0wyxHE0iuot3Txd8llki/ArUMEFVR5v0zdk84XeUS7JGS6JmaagBjif3rNRWiGewMCQK0VbyZyELdvKsDzB6lbcHwk9kNf1Eom695wcY9ifYsxnKAlBv7cOOJwoWhNzQRlHIjxW2kJy4II1zS7bMJo= 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=UhtDXPhv; arc=none smtp.client-ip=209.85.216.73 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="UhtDXPhv" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-336b646768eso1200351a91.1 for ; Thu, 16 Oct 2025 10:30:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1760635812; x=1761240612; 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=6tAVv6b9fRDhntp0ml3AD/e15cFGLUttzwV4nvdq0R8=; b=UhtDXPhvqA06ZRnLxi/Omu72OTZydcByyk/lkS+e3IZe+2vGiGtbWLpSI6TSeZ7+hs cV+wRgcjWqYHms/wMtNU64f6YGGfVk+IPtXUwJJkmK3JBU306jm7ktto4QIJ7pI5Ora8 eh9mnZt4YEd8Gn9GMwNyR0XF0jM6VVJEK+LrotIfdhyLljVrVLPnRPJUgY6cc9CHl/Z7 ZJS3n29kkbflp00g864+mk1pJ1MbfVP+8SVLoSmsldy2o+4eQoYM96Kr//vmldCv8Ykc 0qlTnrzpYMdvNxae05ltqUEqZ6MZA7OGr5UOGdAG1BVtNX/fQL1ToGkF7sk+7vt3QVtc p3Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760635812; x=1761240612; 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=6tAVv6b9fRDhntp0ml3AD/e15cFGLUttzwV4nvdq0R8=; b=cHn25dvYptB4/bl2wpfnw/vHV3v25cCJrk4BPLqsEseEwlOGSaDt1UYBQcy2JZHeWD EW2z7/196YCyJhEHEy0Oi/8tDlQhKxO3iEXx+QrKEFeDK0f5Uq4/qG2gNq63tKBDYOlh H8mq3Gtff8W+97kwSpKvg9sHVJFmnbM6WK5kjOxP28BZSFcv1QTdo0Gdq7r/9BtjHQoF d+Kro9IQEg8pDdKbVXSBIfRiYe0uR4VVTmqE1oChlGfSLvYdLTLEuSIlI2xrgsi7XO3W ZO98Ns9q+dJmm7Mz93Ho8e/raoW8vNTa/mNmChlJWJ3ogmTFf0luZpc+9jj+701APzYl sWbw== X-Forwarded-Encrypted: i=1; AJvYcCVqTTS6FSHNVe1ytwPqy0cuD6sAIRZrOP+tPZSFyekWACZCexrAm2nYFPYOkrFo/tXf72NmY2U2zVmgwWo=@vger.kernel.org X-Gm-Message-State: AOJu0YwuavGXntq2BzIPkZuyyu04X+DkXe4J5tSeNwgHOqnCaA7i1k7H UOddGrKu5Edez1e8O6/2y7Hb1Ao3qe77IOyl8TJGTpwHGpMvhBarBwhuPm6X9SgTn7h6mk/xU+V Quzmslg== X-Google-Smtp-Source: AGHT+IFiziQxx4vN6XNlZpR7uI1Y1WkivFjq8+/qZ9wHBFeEPxqCLQgsLYXVUg11kld4O3lt/m0fng8h7Tw= X-Received: from pji6.prod.google.com ([2002:a17:90b:3fc6:b0:33b:ca21:e3e7]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3e43:b0:339:cece:a99 with SMTP id 98e67ed59e1d1-33bcf86c699mr779489a91.13.1760635812664; Thu, 16 Oct 2025 10:30:12 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 16 Oct 2025 10:28:43 -0700 In-Reply-To: <20251016172853.52451-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: <20251016172853.52451-1-seanjc@google.com> X-Mailer: git-send-email 2.51.0.858.gf9c4a03a3a-goog Message-ID: <20251016172853.52451-3-seanjc@google.com> Subject: [PATCH v13 02/12] KVM: guest_memfd: Add macro to iterate over gmem_files for a mapping/inode From: Sean Christopherson To: Miguel Ojeda , Marc Zyngier , Oliver Upton , Paolo Bonzini , Sean Christopherson Cc: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Ackerley Tng , Shivank Garg , David Hildenbrand , Fuad Tabba , Ashish Kalra , Vlastimil Babka Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a kvm_gmem_for_each_file() to make it more obvious that KVM is iterating over guest_memfd _files_, not guest_memfd instances, as could be assumed given the name "gmem_list". No functional change intended. Reviewed-by: Ackerley Tng Tested-by: Ackerley Tng Reviewed-by: Shivank Garg Signed-off-by: Sean Christopherson Tested-by: Shivank Garg --- .clang-format | 1 + virt/kvm/guest_memfd.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.clang-format b/.clang-format index f371a13b4d19..220cda77a8f1 100644 --- a/.clang-format +++ b/.clang-format @@ -540,6 +540,7 @@ ForEachMacros: - 'kvm_for_each_memslot' - 'kvm_for_each_memslot_in_gfn_range' - 'kvm_for_each_vcpu' + - 'kvm_gmem_for_each_file' - 'libbpf_nla_for_each_attr' - 'list_for_each' - 'list_for_each_codec' diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c index 2989c5fe426f..5cce20ff418d 100644 --- a/virt/kvm/guest_memfd.c +++ b/virt/kvm/guest_memfd.c @@ -22,6 +22,9 @@ struct gmem_file { struct list_head entry; }; =20 +#define kvm_gmem_for_each_file(f, mapping) \ + list_for_each_entry(f, &(mapping)->i_private_list, entry) + /** * folio_file_pfn - like folio_file_page, but return a pfn. * @folio: The folio which contains this index. @@ -164,13 +167,12 @@ static void __kvm_gmem_invalidate_begin(struct gmem_f= ile *f, pgoff_t start, static void kvm_gmem_invalidate_begin(struct inode *inode, pgoff_t start, pgoff_t end) { - struct list_head *gmem_list =3D &inode->i_mapping->i_private_list; enum kvm_gfn_range_filter attr_filter; struct gmem_file *f; =20 attr_filter =3D kvm_gmem_get_invalidate_filter(inode); =20 - list_for_each_entry(f, gmem_list, entry) + kvm_gmem_for_each_file(f, inode->i_mapping) __kvm_gmem_invalidate_begin(f, start, end, attr_filter); } =20 @@ -189,10 +191,9 @@ static void __kvm_gmem_invalidate_end(struct gmem_file= *f, pgoff_t start, static void kvm_gmem_invalidate_end(struct inode *inode, pgoff_t start, pgoff_t end) { - struct list_head *gmem_list =3D &inode->i_mapping->i_private_list; struct gmem_file *f; =20 - list_for_each_entry(f, gmem_list, entry) + kvm_gmem_for_each_file(f, inode->i_mapping) __kvm_gmem_invalidate_end(f, start, end); } =20 --=20 2.51.0.858.gf9c4a03a3a-goog