fs: prefer kfree_rcu() in fasync_remove_entry()
authorDmitry Antipov <dmantipov@yandex.ru>
Fri, 9 Feb 2024 12:52:19 +0000 (15:52 +0300)
committerChristian Brauner <brauner@kernel.org>
Mon, 12 Feb 2024 10:00:10 +0000 (11:00 +0100)
commitd0089603fa7a22a940f808a7cbc49402fe02281e
treebe5ce0f7dd511f1b6f3bd31be9a1c9fc03a8edfb
parentef560389ca50e33bd0c4531236c187107fa81e1f
fs: prefer kfree_rcu() in fasync_remove_entry()

In 'fasync_remove_entry()', prefer 'kfree_rcu()' over 'call_rcu()' with dummy
'fasync_free_rcu()' callback. This is mostly intended in attempt to fix weird
https://syzkaller.appspot.com/bug?id=6a64ad907e361e49e92d1c4c114128a1bda2ed7f,
where kmemleak may consider 'fa' as unreferenced during RCU grace period. See
https://lore.kernel.org/stable/20230930174657.800551-1-joel@joelfernandes.org
as well. Comments are highly appreciated.

Ever since ae65a5211d90 ("mm/slab: document kfree() as allowed for
kmem_cache_alloc() objects") kfree() can be used for both kmalloc() and
kmem_cache_alloc() so this is no safe.

Do not backport this to stable, please.

Link ae65a5211d90 ("mm/slab: document kfree() as > allowed for kmem_cache_alloc() objects")
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Link: https://lore.kernel.org/r/20240209125220.330383-1-dmantipov@yandex.ru
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/fcntl.c