Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8022c13c authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by David Woodhouse
Browse files

mtd: blkdevs: do not forget to get MTD devices



Nowadays MTD devices have to be "get" before they can be
used. This has to be done with 'get_mtd_device()'. The
'blktrans_open()' function did not do this and instead
used 'try_module_get()'. Fix this.

Since 'get_mtd_device()' already gets the module, extra
'try_module_get()' is not needed.

This fixes oops when one tries to use mtdblock on top of
gluebi.

Reported-by: default avatarHolger Brunck <holger.brunck@keymile.com>
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent 6afc4fdb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
	struct mtd_blktrans_ops *tr = dev->tr;
	int ret = -ENODEV;

	if (!try_module_get(dev->mtd->owner))
	if (!get_mtd_device(NULL, dev->mtd->index))
		goto out;

	if (!try_module_get(tr->owner))
@@ -158,7 +158,7 @@ static int blktrans_open(struct block_device *bdev, fmode_t mode)
	ret = 0;
	if (tr->open && (ret = tr->open(dev))) {
		dev->mtd->usecount--;
		module_put(dev->mtd->owner);
		put_mtd_device(dev->mtd);
	out_tr:
		module_put(tr->owner);
	}
@@ -177,7 +177,7 @@ static int blktrans_release(struct gendisk *disk, fmode_t mode)

	if (!ret) {
		dev->mtd->usecount--;
		module_put(dev->mtd->owner);
		put_mtd_device(dev->mtd);
		module_put(tr->owner);
	}