• X
    ocfs2: fix umount hang while shutting down truncate log · a9e9acae
    Xue jiufei 提交于
    Revert commit 75f82eaa ("ocfs2: fix NULL pointer dereference when
    dismount and ocfs2rec simultaneously") because it may cause a umount
    hang while shutting down the truncate log.
    
    fix NULL pointer dereference when dismount and ocfs2rec simultaneously
    
    The situation is as followes:
    ocfs2_dismout_volume
    -> ocfs2_recovery_exit
      -> free osb->recovery_map
    -> ocfs2_truncate_shutdown
      -> lock global bitmap inode
        -> ocfs2_wait_for_recovery
    	  -> check whether osb->recovery_map->rm_used is zero
    
    Because osb->recovery_map is already freed, rm_used can be any other
    values, so it may yield umount hang.
    
    To prevent NULL pointer dereference while getting sys_root_inode, we use
    a osb_tl_disable flag to disable schedule osb_truncate_log_wq after
    truncate log shutdown.
    Signed-off-by: Njoyce.xue <xuejiufei@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    a9e9acae
alloc.c 188.0 KB