On Fri, Mar 28, 2025 at 02:58:29PM -0400, James Bottomley wrote: > On Fri, 2025-03-28 at 17:15 +0100, Christian Brauner wrote: > [...] > > +static inline void super_cb_grabbed(struct super_block *sb, > > + void (*f)(struct super_block *, > > void *), > > + void *arg) > > +{ > > + if (super_lock_excl(sb)) { > > + bool active = atomic_inc_not_zero(&sb->s_active); > > + super_unlock_excl(sb); > > + if (active) > > + f(sb, arg); > > + deactivate_super(sb); > > I don't think this can be right: if we fail to increment s_active > because it's zero, we shouldn't call deactivate_super(), should we? Fixed in-tree. Thanks.