diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 08502d967e71..b60d65d96f24 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c @@ -67,6 +67,8 @@ void free_sbd(struct gfs2_sbd *sdp) { struct super_block *sb = sdp->sd_vfs; + flush_work(&sdp->sd_withdraw_work); + free_percpu(sdp->sd_lkstats); sb->s_fs_info = NULL; kfree(sdp); @@ -132,7 +134,8 @@ static struct gfs2_sbd *init_sbd(struct super_block *sb) return sdp; fail: - free_sbd(sdp); + free_percpu(sdp->sd_lkstats); + kfree(sdp); return NULL; }