summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorMing Lei <tom.leiming@gmail.com>2017-02-14 16:29:00 +0100
committerShaohua Li <shli@fb.com>2017-02-15 20:23:24 +0100
commit10273170fd5602d8090b1312e66ad4746ab02c94 (patch)
treefabf2633960f4fdbbc1a6963c3fe2011577c42b4 /drivers/md/md.c
parentblock: introduce bio_clone_bioset_partial() (diff)
downloadlinux-10273170fd5602d8090b1312e66ad4746ab02c94.tar.xz
linux-10273170fd5602d8090b1312e66ad4746ab02c94.zip
md: fail if mddev->bio_set can't be created
The current behaviour is to fall back to allocate bio from 'fs_bio_set', that isn't a correct way because it might cause deadlock. So this patch simply return failure if mddev->bio_set can't be created. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Ming Lei <tom.leiming@gmail.com> Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to '')
-rw-r--r--drivers/md/md.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 13020e5c8cc0..137a1fe124e8 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5228,8 +5228,11 @@ int md_run(struct mddev *mddev)
sysfs_notify_dirent_safe(rdev->sysfs_state);
}
- if (mddev->bio_set == NULL)
+ if (mddev->bio_set == NULL) {
mddev->bio_set = bioset_create(BIO_POOL_SIZE, 0);
+ if (!mddev->bio_set)
+ return -ENOMEM;
+ }
spin_lock(&pers_lock);
pers = find_pers(mddev->level, mddev->clevel);