md: check the return of mddev_find()
authorYuanhan Liu <yuanhan.liu@linux.intel.com>
Tue, 22 May 2012 03:55:32 +0000 (13:55 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 22 May 2012 03:55:32 +0000 (13:55 +1000)
Check the return of mddev_find(), since it may fail due to out of
memeory or out of usable minor number.

The reason I chose -ENODEV instead of -ENOMEM or something else is
md_alloc() function chose that ;)

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c

index 4c98368..1c2f904 100644 (file)
@@ -6618,6 +6618,9 @@ static int md_open(struct block_device *bdev, fmode_t mode)
        struct mddev *mddev = mddev_find(bdev->bd_dev);
        int err;
 
+       if (!mddev)
+               return -ENODEV;
+
        if (mddev->gendisk != bdev->bd_disk) {
                /* we are racing with mddev_put which is discarding this
                 * bd_disk.