summaryrefslogtreecommitdiff
path: root/ipc/mqueue.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-09-30 11:58:30 +0100
committerMark Brown <broonie@kernel.org>2026-09-30 11:58:30 +0100
commit5eb3fdca6ca7667a73d52adfd047d94e8b8b105e (patch)
treec935b3fa5b47c9d70e0e66c7cc7830e74988b13f /ipc/mqueue.c
parentf60deca1c3741ab8fcf318a7bb82a3d026ea7c49 (diff)
parent84086827932b58e7645d93d970bbc566c4ee408b (diff)
downloadlinux-next-5eb3fdca6ca7667a73d52adfd047d94e8b8b105e.tar.gz
linux-next-5eb3fdca6ca7667a73d52adfd047d94e8b8b105e.zip
Merge branch 'vfs.all' of https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
# Conflicts: # fs/smb/server/smb2pdu.c # fs/smb/server/vfs.c # fs/smb/server/vfs.h
Diffstat (limited to 'ipc/mqueue.c')
-rw-r--r--ipc/mqueue.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index d1dd36a651b0..322c3dd98c44 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -528,6 +528,13 @@ static void mqueue_evict_inode(struct inode *inode)
list_add_tail(&msg->m_list, &tmp_msg);
kfree(info->node_cache);
spin_unlock(&info->lock);
+ /*
+ * A shared file table can let the notification owner exit without
+ * running ->flush(). No users of the inode remain during eviction, so
+ * tear down any stale notification after dropping info->lock because
+ * netlink_sendskb() may release the final socket reference.
+ */
+ remove_notification(info);
list_for_each_entry_safe(msg, nmsg, &tmp_msg, m_list) {
list_del(&msg->m_list);
@@ -607,7 +614,7 @@ out_unlock:
return error;
}
-static int mqueue_create(struct mnt_idmap *idmap, struct inode *dir,
+static int mqueue_create(const struct mnt_idmap *idmap, struct inode *dir,
struct dentry *dentry, umode_t mode)
{
return mqueue_create_attr(dentry, mode, NULL);