@@ -217,34 +217,17 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
kref_get(&dev->ref);
__module_get(dev->tr->owner);
- if (!dev->mtd)
- goto unlock;
-
- if (dev->tr->open) {
- ret = dev->tr->open(dev);
- if (ret)
- goto error_put;
+ if (dev->mtd) {
+ ret = dev->tr->open ? dev->tr->open(dev) : 0;
+ __get_mtd_device(dev->mtd);
}
- ret = __get_mtd_device(dev->mtd);
- if (ret)
- goto error_release;
dev->file_mode = mode;
unlock:
mutex_unlock(&dev->lock);
blktrans_dev_put(dev);
return ret;
-
-error_release:
- if (dev->tr->release)
- dev->tr->release(dev);
-error_put:
- module_put(dev->tr->owner);
- kref_put(&dev->ref, blktrans_dev_release);
- mutex_unlock(&dev->lock);
- blktrans_dev_put(dev);
- return ret;
}
static void blktrans_release(struct gendisk *disk, fmode_t mode)