From: Heinz Mauelshagen Date: Tue, 3 May 2016 17:43:57 +0000 (+0200) Subject: md: md.c: fix oops in mddev_suspend for raid0 X-Git-Tag: v4.6.1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5269fcd77a7ec9a5ba26b47423d79eafba0210ff;p=thirdparty%2Fkernel%2Fstable.git md: md.c: fix oops in mddev_suspend for raid0 commit 092398dce8c2406bfb0c9eebc3e764ff2ddb62a8 upstream. Introduced by upstream commit 70d9798b95562abac005d4ba71d28820f9a201eb The raid0 personality does not create mddev->thread as oposed to other personalities leading to its unconditional access in mddev_suspend() causing an oops. Patch checks for mddev->thread in order to keep the intention of aforementioned commit. Fixes: 70d9798b9556 ("MD: warn for potential deadlock") Signed-off-by: Heinz Mauelshagen Signed-off-by: Shaohua Li Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 14d3b37944df0..85b16aadd459b 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -307,7 +307,7 @@ static blk_qc_t md_make_request(struct request_queue *q, struct bio *bio) */ void mddev_suspend(struct mddev *mddev) { - WARN_ON_ONCE(current == mddev->thread->tsk); + WARN_ON_ONCE(mddev->thread && current == mddev->thread->tsk); if (mddev->suspended++) return; synchronize_rcu();