Linux XFS filesystem development
 help / color / mirror / Atom feed
* [PATCH 1/2] xfs: don't allow UAF in xlog_recover_iget
@ 2026-03-19 17:09 Darrick J. Wong
  2026-03-19 17:10 ` [PATCH 2/2] xfs: don't irele after failing to iget in xfs_attri_recover_work Darrick J. Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Darrick J. Wong @ 2026-03-19 17:09 UTC (permalink / raw)
  To: Long Li; +Cc: cem, linux-xfs, david, yi.zhang, houtao1, yangerkun, lonuxli.64

From: Darrick J. Wong <djwong@kernel.org>

Fix this function to avoid touching the passed in ipp argument until
we're 100% certain that we're returning zero.  This avoids creating a
dangling pointer in the caller.  The xfs_irele call in
xfs_attri_recover_work was never correct and should go away.

Cc: <stable@vger.kernel.org> # v5.15
Fixes: 4bc619833f738f ("xfs: refactor xfs_iget calls from log intent recovery")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 fs/xfs/xfs_log_recover.c |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 09e6678ca4878e..0e91a62348eb79 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -1745,21 +1745,23 @@ xlog_recover_iget(
 	xfs_ino_t		ino,
 	struct xfs_inode	**ipp)
 {
+	struct xfs_inode	*ip;
 	int			error;
 
-	error = xfs_iget(mp, NULL, ino, 0, 0, ipp);
+	error = xfs_iget(mp, NULL, ino, 0, 0, &ip);
 	if (error)
 		return error;
 
-	error = xfs_qm_dqattach(*ipp);
+	error = xfs_qm_dqattach(ip);
 	if (error) {
-		xfs_irele(*ipp);
+		xfs_irele(ip);
 		return error;
 	}
 
-	if (VFS_I(*ipp)->i_nlink == 0)
-		xfs_iflags_set(*ipp, XFS_IRECOVERY);
+	if (VFS_I(ip)->i_nlink == 0)
+		xfs_iflags_set(ip, XFS_IRECOVERY);
 
+	*ipp = ip;
 	return 0;
 }
 

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-03-23  6:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-19 17:09 [PATCH 1/2] xfs: don't allow UAF in xlog_recover_iget Darrick J. Wong
2026-03-19 17:10 ` [PATCH 2/2] xfs: don't irele after failing to iget in xfs_attri_recover_work Darrick J. Wong
2026-03-20  2:02   ` Long Li
2026-03-20  7:19   ` Christoph Hellwig
2026-03-20  2:02 ` [PATCH 1/2] xfs: don't allow UAF in xlog_recover_iget Long Li
2026-03-20  7:19 ` Christoph Hellwig
2026-03-20 14:37   ` Darrick J. Wong
2026-03-23  6:07     ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox