• Chao Yu's avatar
    f2fs: fix to avoid discard command leak · 04f9287a
    Chao Yu authored
     =============================================================================
     BUG discard_cmd (Tainted: G    B      OE  ): Objects remaining in discard_cmd on __kmem_cache_shutdown()
     -----------------------------------------------------------------------------
    
     INFO: Slab 0xffffe1ac481d22c0 objects=36 used=2 fp=0xffff936b4748bf50 flags=0x2ffff0000000100
     Call Trace:
      dump_stack+0x63/0x87
      slab_err+0xa1/0xb0
      __kmem_cache_shutdown+0x183/0x390
      shutdown_cache+0x14/0x110
      kmem_cache_destroy+0x195/0x1c0
      f2fs_destroy_segment_manager_caches+0x21/0x40 [f2fs]
      exit_f2fs_fs+0x35/0x641 [f2fs]
      SyS_delete_module+0x155/0x230
      ? vtime_user_exit+0x29/0x70
      do_syscall_64+0x6e/0x160
      entry_SYSCALL64_slow_path+0x25/0x25
    
     INFO: Object 0xffff936b4748b000 @offset=0
     INFO: Object 0xffff936b4748b070 @offset=112
     kmem_cache_destroy discard_cmd: Slab cache still has objects
     Call Trace:
      dump_stack+0x63/0x87
      kmem_cache_destroy+0x1b4/0x1c0
      f2fs_destroy_segment_manager_caches+0x21/0x40 [f2fs]
      exit_f2fs_fs+0x35/0x641 [f2fs]
      SyS_delete_module+0x155/0x230
      do_syscall_64+0x6e/0x160
      entry_SYSCALL64_slow_path+0x25/0x25
    
    Recovery can cache discard commands, so in error path of fill_super(),
    we need give a chance to handle them, otherwise it will lead to leak
    of discard_cmd slab cache.
    Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    04f9287a
segment.c 116 KB