--- x/fs/gfs2/ops_fstype.c +++ y/fs/gfs2/ops_fstype.c @@ -1137,6 +1137,7 @@ static int gfs2_fill_super(struct super_ struct gfs2_sbd *sdp; struct gfs2_holder mount_gh; int error; + int destroyed = 0; sdp = init_sbd(sb); if (!sdp) { @@ -1301,6 +1302,7 @@ fail_locking: fail_lm: complete_all(&sdp->sd_journal_ready); gfs2_gl_hash_clear(sdp); + destroyed = 1; gfs2_lm_unmount(sdp); fail_debug: gfs2_delete_debugfs_file(sdp); @@ -1308,7 +1310,8 @@ fail_debug: fail_delete_wq: destroy_workqueue(sdp->sd_delete_wq); fail_glock_wq: - destroy_workqueue(sdp->sd_glock_wq); + if (!destroyed) + destroy_workqueue(sdp->sd_glock_wq); fail_free: free_sbd(sdp); sb->s_fs_info = NULL;