summaryrefslogtreecommitdiff
path: root/include/linux/types.h
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2026-06-16 16:08:19 +0200
committerChristian Brauner <brauner@kernel.org>2026-06-29 10:31:51 +0200
commit9c486f28994fdfc1a83f5f60129402cf4379957b (patch)
tree7e3d9006138aea6366c2dda4feccbe27f1d3433f /include/linux/types.h
parent3ec9800c2d33c783dd3b27d4cc3bb22b9385f828 (diff)
downloadlinux-next-9c486f28994fdfc1a83f5f60129402cf4379957b.tar.gz
linux-next-9c486f28994fdfc1a83f5f60129402cf4379957b.zip
super: take lock after last reference count
__put_super() required the caller to hold sb_lock, so put_super() wrapped it. The per-device superblock table introduced later drops its passive references from contexts that do not hold sb_lock, so make put_super() self-locking: drop the count first and take sb_lock only for the final list_del. With the count now dropped outside sb_lock a superblock can briefly sit on @super_blocks with s_passive == 0 before it is unlinked, so the list walkers (__iterate_supers(), iterate_supers_type(), user_get_super()) switch to refcount_inc_not_zero() and skip it. Link: https://patch.msgid.link/20260616-work-super-bdev_holder_global-v2-3-7df6b864028e@kernel.org Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'include/linux/types.h')
0 files changed, 0 insertions, 0 deletions