aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid10.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-10-26 02:33:54 -0400
committerNeilBrown <neilb@suse.de>2010-10-28 02:36:06 -0400
commit6746557f0325a66f57d179126426e38a8ea66945 (patch)
tree3b1db04c854b6ccc4752560f0d30c85e6cbbda6a /drivers/md/raid10.c
parent4e78064f42ad474ce9c31760861f7fb0cfc22532 (diff)
md: use bio_kmalloc rather than bio_alloc when failure is acceptable.
bio_alloc can never fail (as it uses a mempool) but an block indefinitely, especially if the caller is holding a reference to a previously allocated bio. So these to places which both handle failure and hold multiple bios should not use bio_alloc, they should use bio_kmalloc. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r--drivers/md/raid10.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 8f5543a62416..6709cb255200 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -120,7 +120,7 @@ static void * r10buf_pool_alloc(gfp_t gfp_flags, void *data)
120 * Allocate bios. 120 * Allocate bios.
121 */ 121 */
122 for (j = nalloc ; j-- ; ) { 122 for (j = nalloc ; j-- ; ) {
123 bio = bio_alloc(gfp_flags, RESYNC_PAGES); 123 bio = bio_kmalloc(gfp_flags, RESYNC_PAGES);
124 if (!bio) 124 if (!bio)
125 goto out_free_bio; 125 goto out_free_bio;
126 r10_bio->devs[j].bio = bio; 126 r10_bio->devs[j].bio = bio;