[PATCH] fix bd_claim_by_kobject error handling
[powerpc.git] / fs / block_dev.c
index bc8f27c..b54b0a1 100644 (file)
@@ -751,8 +751,11 @@ static int bd_claim_by_kobject(struct block_device *bdev, void *holder,
 
        mutex_lock_nested(&bdev->bd_mutex, BD_MUTEX_PARTITION);
        res = bd_claim(bdev, holder);
-       if (res == 0)
+       if (res == 0) {
                res = add_bd_holder(bdev, bo);
+               if (res)
+                       bd_release(bdev);
+       }
        if (res)
                free_bd_holder(bo);
        mutex_unlock(&bdev->bd_mutex);
@@ -1131,6 +1134,8 @@ static int blkdev_open(struct inode * inode, struct file * filp)
        filp->f_flags |= O_LARGEFILE;
 
        bdev = bd_acquire(inode);
+       if (bdev == NULL)
+               return -ENOMEM;
 
        res = do_open(bdev, filp, BD_MUTEX_NORMAL);
        if (res)