• Zhang Xiaoxu's avatar
    jffs2: Fix list_del corruption if compressors initialized failed · 3432e574
    Zhang Xiaoxu authored
    There is a list_del corruption when remove the jffs2 module:
    
      list_del corruption, ffffffffa0623e60->next is NULL
      WARNING: CPU: 6 PID: 6332 at lib/list_debug.c:49 __list_del_entry_valid+0x98/0x130
      Modules linked in: jffs2(-) ]
      CPU: 6 PID: 6332 Comm: rmmod Tainted: G        W          6.1.0-rc2+ #5
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33 04/01/2014
      RIP: 0010:__list_del_entry_valid+0x98/0x130
      ...
      Call Trace:
       <TASK>
       jffs2_unregister_compressor+0x3e/0xe0 [jffs2]
       jffs2_zlib_exit+0x11/0x30 [jffs2]
       jffs2_compressors_exit+0x1e/0x30 [jffs2]
       exit_jffs2_fs+0x16/0x44f [jffs2]
       __do_sys_delete_module.constprop.0+0x244/0x370
       do_syscall_64+0x35/0x80
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    If one of the compressor initialize failed, the module always insert
    success since jffs2_compressors_init() always return success, then
    something bad may happen during remove the module.
    
    For this scenario, let's insmod failed.
    Signed-off-by: default avatarZhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    3432e574
compr.c 11.7 KB