How to fix the bug in "WARNING: kobject bug in erofs_unregister_sysfs"?

Gao Xiang hsiangkao at linux.alibaba.com
Thu Mar 10 23:39:47 AEDT 2022


Hi Dongliang,

(+ cc Jianan.)

On Thu, Mar 10, 2022 at 06:15:20PM +0800, Dongliang Mu wrote:
> Hi kernel developers,
> 
> I am writing to kindly ask for some suggestions on fixing "WARNING:
> kobject bug in erofs_unregister_sysfs".
> 
> The underlying issue is in the following,
> 
> erofs_fc_get_tree
> -> get_tree_bdev
>   -> fill_super
>     -> erofs_fc_fill_super
>

Thanks for the report!
 
> When erofs_register_sysfs fails in the calling kobject_init_and_add,
> it just returned an error code and the parent function will call
> deactivate_locked_super to do clean up.

Yes, in that way we don't need to rewrite another error path (actually
once we had another duplicated error path but Al suggested the current
shape...)

> 
> In the following stack trace, it finally calls erofs_unregister_sysfs
> without knowing the execution status of erofs_register_sysfs, which
> leads to the kobject bug.
> 
>  erofs_unregister_sysfs+0x46/0x60 fs/erofs/sysfs.c:225
>  erofs_put_super+0x37/0xb0 fs/erofs/super.c:771
>  generic_shutdown_super+0x14c/0x400 fs/super.c:465
>  kill_block_super+0x97/0xf0 fs/super.c:1397
>  erofs_kill_sb+0x60/0x190 fs/erofs/super.c:752
>  deactivate_locked_super+0x94/0x160 fs/super.c:335
>  get_tree_bdev+0x573/0x760 fs/super.c:1297
> 
> I am not sure how to fix this bug. Any suggestion is appreciated.

I think a simple way is to introduce a `sysfs_inited' boolean to
sbi to indicate that. Or some better suggestion is welcomed.

Thanks,
Gao Xiang

> 
> --
> My best regards to you.
> 
>      No System Is Safe!
>      Dongliang Mu


More information about the Linux-erofs mailing list