On Tue, Mar 19, 2024 at 05:24:44PM +0100, Christian Brauner wrote: > @@ -631,8 +631,8 @@ static void bd_end_claim(struct block_device *bdev, void *holder) > whole->bd_holder = NULL; > mutex_unlock(&bdev_lock); > > - if (hops && hops->put_holder) > - hops->put_holder(holder); > + if (mounted) > + fs_bdev_super_put(holder); I think you haven't gone quite far enough here. Call super_put() directly and make bd_end_claim() take a super_block pointer.