From nobody Sun Feb 8 16:32:05 2026 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.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 C2B8427381B for ; Tue, 7 Oct 2025 22:15:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759875303; cv=none; b=PTvukgjHfgslnHbg2lw/cA1P+MreadXzVonUu7vynZIG0BgFJkJyjKk9aBtN5UaU1Q/qlWWF1iJxWmqpTZ0RPzkw0kYoBa8L5YhHGx8mVnr93cogrLymJC+nntoOqoYpAOyTcOrcP6V9QqX7TZGPW2EwOcEEWCFcHeKmcUZR8ZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759875303; c=relaxed/simple; bh=ercJrCIZ2Uh4j1w9fwtjPtGjrYq3ynhNx8655WKwJ3E=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qqHcSdKMyzRm1ogsE+koc3XshMG8QJB+hX5zeL/coatRN7y1BuemWotwf3XYOkQer6MfvIqXuldRirWtTgWyWOtLILy3JQWeOCpS4emxhmVR5sxyjq4sLbKbTZ71aVkO1RjkXpGeX1VYp/YtYeK/D4CU/SN3FWM+rZI6FVS6va4= 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=v9BSHA4w; arc=none smtp.client-ip=209.85.214.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="v9BSHA4w" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-269af520712so74212105ad.2 for ; Tue, 07 Oct 2025 15:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1759875300; x=1760480100; 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=7fMZ7OhM8JOlJvnfA26tbvkth+uO96Z3bmtnJ/qhoYI=; b=v9BSHA4wm104IZvMDEZUSR6qTlukB4o9tl66BHKw1fgWMoMl4rVd0XT8u2UkiYOgId KKJlqnKJC+icJGrLcI3SjhH0gBmEJw4QNgsajBuk+sLHuhqk6uvdEXpobwhHCnebSc/j YTjA1uilfDt51KF5Q3eHQ6lMG7umrmXtL3RTFA/WdYTF9QcejgQpK1rZ5binrKoJtQcX lG+eJRReuKjF3KnsWEFE/MkREF9Hl2PDkJwUMPXzWqZVnTjd5WRgjMT5Afmp0n2wxd1M jrOqwhgqmMuZSeyix39DXtg0kuInQyyESyrtjvvBnxM6qQax2ih+4t3XVkzCbo2TKoSy Ne9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759875300; x=1760480100; 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=7fMZ7OhM8JOlJvnfA26tbvkth+uO96Z3bmtnJ/qhoYI=; b=IMHi24A2QVAoAkXgEJn7QtKpM3M4wEl7QKcAXa4lt+fsd3wTSOtPmCEw6VGpv/9fAo wZ3+/YaC33zuTOAX3/9TroHskaBJDoe6NFMsrEoi3vMe+6AupnXew8Jr4WSon+Ebh631 dDEEDSUbwG9VOhKaZToHUaiLQ9dknWHBaMgdmiMkKwUegLsAyiEcPdgvLoza+ab/QQ0j 8Vio07jVtgvAjV9i3UaN/c06/fSWTr9aQ8ZqhRMIDhvBp3VjdlQj5V36+iP/e3DAx56S hotf+T6Ov/eEZ+zN1Mym0V1s68BOvoVOmdki/IJt8WF3VNZnkOKbSzTyHx/O7kPyMUzU gB3w== X-Forwarded-Encrypted: i=1; AJvYcCVTAP7DzDOf+0D3sNwMzXfMB8MWg7/u9BsjBYcTq34060uyQxyWMaMSAVaoVVqdibsa37gCIGNUl+FsZdc=@vger.kernel.org X-Gm-Message-State: AOJu0YyxHwanDuDHqgZFK4TwSZlt3dlz3duxuHO3Nsp0hk6zNV2bG6nQ gh/J0FAv7SbMcBwSYrq2DnRiQqa1mAeLDHed3WEcy34DW3ykAeUXOusOqR7+VOtf2M0hYll60iG kvg1sxw== X-Google-Smtp-Source: AGHT+IECKNXtIHUW5N14ZiXdwr22UXg6a0qRVDT9HGhdqQLa/WqCTYC09KfmHy6MwiN8aQHU+fr/YvGCioI= X-Received: from plblb3.prod.google.com ([2002:a17:902:fa43:b0:269:a2bc:79bc]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:2c5:b0:27f:1c1a:ee57 with SMTP id d9443c01a7336-290273736d4mr15592295ad.16.1759875300207; Tue, 07 Oct 2025 15:15:00 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 7 Oct 2025 15:14:20 -0700 In-Reply-To: <20251007221420.344669-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: <20251007221420.344669-1-seanjc@google.com> X-Mailer: git-send-email 2.51.0.710.ga91ca5db03-goog Message-ID: <20251007221420.344669-13-seanjc@google.com> Subject: [PATCH v12 12/12] KVM: guest_memfd: Add gmem_inode.flags field instead of using i_private From: Sean Christopherson To: 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, David Hildenbrand , Fuad Tabba , Ackerley Tng , Shivank Garg , Ashish Kalra , Vlastimil Babka Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Track a guest_memfd instance's flags in gmem_inode instead of burying them in i_private. Burning an extra 8 bytes per inode is well worth the added clarity provided by explicit tracking. Signed-off-by: Sean Christopherson --- virt/kvm/guest_memfd.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c index 95267c92983b..10df35a9ffd4 100644 --- a/virt/kvm/guest_memfd.c +++ b/virt/kvm/guest_memfd.c @@ -30,6 +30,8 @@ struct gmem_file { struct gmem_inode { struct shared_policy policy; struct inode vfs_inode; + + u64 flags; }; =20 static __always_inline struct gmem_inode *GMEM_I(struct inode *inode) @@ -162,7 +164,7 @@ static struct folio *kvm_gmem_get_folio(struct inode *i= node, pgoff_t index) =20 static enum kvm_gfn_range_filter kvm_gmem_get_invalidate_filter(struct ino= de *inode) { - if ((u64)inode->i_private & GUEST_MEMFD_FLAG_INIT_SHARED) + if (GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED) return KVM_FILTER_SHARED; =20 return KVM_FILTER_PRIVATE; @@ -398,9 +400,7 @@ static pgoff_t kvm_gmem_get_index(struct kvm_memory_slo= t *slot, gfn_t gfn) =20 static bool kvm_gmem_supports_mmap(struct inode *inode) { - const u64 flags =3D (u64)inode->i_private; - - return flags & GUEST_MEMFD_FLAG_MMAP; + return GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_MMAP; } =20 static vm_fault_t kvm_gmem_fault_user_mapping(struct vm_fault *vmf) @@ -412,7 +412,7 @@ static vm_fault_t kvm_gmem_fault_user_mapping(struct vm= _fault *vmf) if (((loff_t)vmf->pgoff << PAGE_SHIFT) >=3D i_size_read(inode)) return VM_FAULT_SIGBUS; =20 - if (!((u64)inode->i_private & GUEST_MEMFD_FLAG_INIT_SHARED)) + if (!(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED)) return VM_FAULT_SIGBUS; =20 folio =3D kvm_gmem_get_folio(inode, vmf->pgoff); @@ -601,7 +601,6 @@ static int __kvm_gmem_create(struct kvm *kvm, loff_t si= ze, u64 flags) goto err_fops; } =20 - inode->i_private =3D (void *)(unsigned long)flags; inode->i_op =3D &kvm_gmem_iops; inode->i_mapping->a_ops =3D &kvm_gmem_aops; inode->i_mode |=3D S_IFREG; @@ -611,6 +610,8 @@ static int __kvm_gmem_create(struct kvm *kvm, loff_t si= ze, u64 flags) /* Unmovable mappings are supposed to be marked unevictable as well. */ WARN_ON_ONCE(!mapping_unevictable(inode->i_mapping)); =20 + GMEM_I(inode)->flags =3D flags; + file =3D alloc_file_pseudo(inode, kvm_gmem_mnt, name, O_RDWR, &kvm_gmem_f= ops); if (IS_ERR(file)) { err =3D PTR_ERR(file); @@ -931,6 +932,8 @@ static struct inode *kvm_gmem_alloc_inode(struct super_= block *sb) return NULL; =20 mpol_shared_policy_init(&gi->policy, NULL); + + gi->flags =3D 0; return &gi->vfs_inode; } =20 --=20 2.51.0.710.ga91ca5db03-goog