2009-04-14 11:10:56

by Nikanth Karthikesan

[permalink] [raw]
Subject: [PATCH 1/6] Handle possible bio_alloc failure in md

Handle possible bio_alloc failure in md.

Signed-off-by: Nikanth Karthikesan <[email protected]>

---


Index: linux-2.6/drivers/md/md.c
===================================================================
--- linux-2.6.orig/drivers/md/md.c
+++ linux-2.6/drivers/md/md.c
@@ -532,6 +532,9 @@ void md_super_write(mddev_t *mddev, mdk_
struct bio *bio = bio_alloc(GFP_NOIO, 1);
int rw = (1<<BIO_RW) | (1<<BIO_RW_SYNCIO) | (1<<BIO_RW_UNPLUG);

+ if (unlikely(!bio))
+ md_error(rdev->mddev, rdev);
+
bio->bi_bdev = rdev->bdev;
bio->bi_sector = sector;
bio_add_page(bio, page, size, 0);
@@ -587,6 +590,9 @@ int sync_page_io(struct block_device *bd
struct completion event;
int ret;

+ if (unlikely(!bio))
+ return 0;
+
rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);

bio->bi_bdev = bdev;