md-cluster: init suspend_list and suspend_lock early in join
authorGuoqing Jiang <gqjiang@suse.com>
Fri, 10 Jul 2015 09:01:18 +0000 (17:01 +0800)
committerNeilBrown <neilb@suse.com>
Mon, 31 Aug 2015 17:42:05 +0000 (19:42 +0200)
commitd3177fa8d7d800e8a2aa2103e1ea8360e30e8963
tree1d92f40dc5d45402363a7287a4dc86b28f0cad07
parent24a80e36b2d9fdb9801dce94c53f84f94e62d798
md-cluster: init suspend_list and suspend_lock early in join

If the node just join the cluster, and receive the msg from other nodes
before init suspend_list, it will cause kernel crash due to NULL pointer
dereference, so move the initializations early to fix the bug.

md-cluster: Joined cluster 3578507b-e0cb-6d4f-6322-696cd7b1b10c slot 3
BUG: unable to handle kernel NULL pointer dereference at           (null)
... ... ...
Call Trace:
[<ffffffffa0444924>] process_recvd_msg+0x2e4/0x330 [md_cluster]
[<ffffffffa0444a06>] recv_daemon+0x96/0x170 [md_cluster]
[<ffffffffa045189d>] md_thread+0x11d/0x170 [md_mod]
[<ffffffff810768c4>] kthread+0xb4/0xc0
[<ffffffff8151927c>] ret_from_fork+0x7c/0xb0
... ... ...
RIP  [<ffffffffa0443581>] __remove_suspend_info+0x11/0xa0 [md_cluster]

Reviewed-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: NeilBrown <neilb@suse.com>
drivers/md/md-cluster.c