Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Nirmoy Das <nirmoyd@nvidia.com>, Jason Gunthorpe <jgg@nvidia.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.12.y] iommufd: Fix event queue release use-after-free
Date: Wed,  4 Nov 2026 10:57:56 -0500	[thread overview]
Message-ID: <20261104155730.3918848-1-sashal@kernel.org> (raw)
In-Reply-To: <2026110435-fastball-maroon-2fc3@gregkh>

From: Nirmoy Das <nirmoyd@nvidia.com>

[ Upstream commit 440ca8a4b69f40088065b9e05ef11373292a254e ]

iommufd_eventq_fops_release() drops the file's users reference before
reading eventq->ictx. Once that reference is dropped, IOMMU_DESTROY in
another thread can remove and free the event queue, so the later load
accesses freed memory.

Read ictx while the users reference still pins the event queue, then
drop the reference and put the saved context. The context reference
taken by iommufd_eventq_init() keeps ictx valid until the put. Fault and
vEVENTQ file descriptors share this release path.

Fixes: 07838f7fd529 ("iommufd: Add iommufd fault object")
Cc: stable@vger.kernel.org
Assisted-by: LLM, Specula
Signed-off-by: Nirmoy Das <nirmoyd@nvidia.com>
Link: https://patch.msgid.link/20261014133632.3440297-1-nirmoyd@nvidia.com
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
[ sashal: Adapted eventq identifiers to fault identifiers in the existing fault release callback. ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/iommu/iommufd/fault.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/iommufd/fault.c b/drivers/iommu/iommufd/fault.c
index bdaecb6e1f7a3..6e918eb0ffbf0 100644
--- a/drivers/iommu/iommufd/fault.c
+++ b/drivers/iommu/iommufd/fault.c
@@ -373,9 +373,11 @@ static __poll_t iommufd_fault_fops_poll(struct file *filep,
 static int iommufd_fault_fops_release(struct inode *inode, struct file *filep)
 {
 	struct iommufd_fault *fault = filep->private_data;
+	/* fault may be freed once the users reference is dropped. */
+	struct iommufd_ctx *ictx = fault->ictx;
 
 	refcount_dec(&fault->obj.users);
-	iommufd_ctx_put(fault->ictx);
+	iommufd_ctx_put(ictx);
 	return 0;
 }
 
-- 
2.53.0


      reply	other threads:[~2026-11-04 15:57 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-04 13:38 FAILED: patch "[PATCH] iommufd: Fix event queue release use-after-free" failed to apply to 6.12-stable tree gregkh
2026-11-04 15:57 ` Sasha Levin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261104155730.3918848-1-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=jgg@nvidia.com \
    --cc=nirmoyd@nvidia.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox