Skip to content

Commit

Permalink
mtd: blkdevs: do not forget to get MTD devices
Browse files Browse the repository at this point in the history
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: Holger Brunck <holger.brunck@keymile.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
  • Loading branch information
Artem Bityutskiy authored and David Woodhouse committed Aug 3, 2009
1 parent 6afc4fd commit 8022c13
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/mtd/mtd_blkdevs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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);
}
Expand All @@ -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);
}

Expand Down

0 comments on commit 8022c13

Please sign in to comment.