All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ipc/mqueue: fix dentry refcount imbalance in prepare_open()
@ 2025-11-30  9:27 Deepanshu Kartikey
  2025-11-30  9:57 ` Amir Goldstein
  0 siblings, 1 reply; 6+ messages in thread
From: Deepanshu Kartikey @ 2025-11-30  9:27 UTC (permalink / raw)
  To: brauner, viro, neil, amir73il, jlayton
  Cc: linux-kernel, Deepanshu Kartikey, syzbot+b74150fd2ef40e716ca2

When opening an existing message queue, prepare_open() does not increment
the dentry refcount, but end_creating() always calls dput(). This causes
a refcount imbalance that triggers a WARN_ON_ONCE in fast_dput() when the
file is later closed.

The creation path via vfs_mkobj() correctly increments the refcount, but
the "already exists" path was missing the corresponding dget().

Add the missing dget() call when opening an existing queue to balance the
dput() in end_creating().

Reported-by: syzbot+b74150fd2ef40e716ca2@syzkaller.appspot.com
Closes: https://syzkaller.appspot.com/bug?extid=b74150fd2ef40e716ca2
Signed-off-by: Deepanshu Kartikey <kartikey406@gmail.com>
---
 ipc/mqueue.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 328bcc3ee3ad..63ff2c322549 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -883,6 +883,7 @@ static int prepare_open(struct dentry *dentry, int oflag, int ro,
 	if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY))
 		return -EINVAL;
 	acc = oflag2acc[oflag & O_ACCMODE];
+	dget(dentry);
 	return inode_permission(&nop_mnt_idmap, d_inode(dentry), acc);
 }
 
-- 
2.43.0


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

end of thread, other threads:[~2025-12-01  8:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-30  9:27 [PATCH] ipc/mqueue: fix dentry refcount imbalance in prepare_open() Deepanshu Kartikey
2025-11-30  9:57 ` Amir Goldstein
2025-11-30 22:27   ` NeilBrown
2025-12-01  8:49     ` Amir Goldstein
2025-12-01  8:57       ` NeilBrown
2025-12-01  9:00         ` Al Viro

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.