]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.6.1/md-md.c-fix-oops-in-mddev_suspend-for-raid0.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.6.1 / md-md.c-fix-oops-in-mddev_suspend-for-raid0.patch
1 From 092398dce8c2406bfb0c9eebc3e764ff2ddb62a8 Mon Sep 17 00:00:00 2001
2 From: Heinz Mauelshagen <heinzm@redhat.com>
3 Date: Tue, 3 May 2016 19:43:57 +0200
4 Subject: md: md.c: fix oops in mddev_suspend for raid0
5
6 From: Heinz Mauelshagen <heinzm@redhat.com>
7
8 commit 092398dce8c2406bfb0c9eebc3e764ff2ddb62a8 upstream.
9
10 Introduced by upstream commit 70d9798b95562abac005d4ba71d28820f9a201eb
11
12 The raid0 personality does not create mddev->thread as oposed to
13 other personalities leading to its unconditional access in
14 mddev_suspend() causing an oops.
15
16 Patch checks for mddev->thread in order to keep the
17 intention of aforementioned commit.
18
19 Fixes: 70d9798b9556 ("MD: warn for potential deadlock")
20 Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
21 Signed-off-by: Shaohua Li <shli@fb.com>
22 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23
24 ---
25 drivers/md/md.c | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
27
28 --- a/drivers/md/md.c
29 +++ b/drivers/md/md.c
30 @@ -307,7 +307,7 @@ static blk_qc_t md_make_request(struct r
31 */
32 void mddev_suspend(struct mddev *mddev)
33 {
34 - WARN_ON_ONCE(current == mddev->thread->tsk);
35 + WARN_ON_ONCE(mddev->thread && current == mddev->thread->tsk);
36 if (mddev->suspended++)
37 return;
38 synchronize_rcu();