Loading drivers/md/dm-table.c +6 −23 Original line number Original line Diff line number Diff line Loading @@ -316,29 +316,12 @@ static inline int check_space(struct dm_table *t) */ */ static int lookup_device(const char *path, dev_t *dev) static int lookup_device(const char *path, dev_t *dev) { { int r; struct block_device *bdev = lookup_bdev(path); struct nameidata nd; if (IS_ERR(bdev)) struct inode *inode; return PTR_ERR(bdev); *dev = bdev->bd_dev; if ((r = path_lookup(path, LOOKUP_FOLLOW, &nd))) bdput(bdev); return r; return 0; inode = nd.path.dentry->d_inode; if (!inode) { r = -ENOENT; goto out; } if (!S_ISBLK(inode->i_mode)) { r = -ENOTBLK; goto out; } *dev = inode->i_rdev; out: path_put(&nd.path); return r; } } /* /* Loading drivers/mtd/mtdsuper.c +11 −22 Original line number Original line Diff line number Diff line Loading @@ -125,7 +125,7 @@ int get_sb_mtd(struct file_system_type *fs_type, int flags, int (*fill_super)(struct super_block *, void *, int), int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt) struct vfsmount *mnt) { { struct nameidata nd; struct block_device *bdev; int mtdnr, ret; int mtdnr, ret; if (!dev_name) if (!dev_name) Loading Loading @@ -181,29 +181,20 @@ int get_sb_mtd(struct file_system_type *fs_type, int flags, /* try the old way - the hack where we allowed users to mount /* try the old way - the hack where we allowed users to mount * /dev/mtdblock$(n) but didn't actually _use_ the blockdev * /dev/mtdblock$(n) but didn't actually _use_ the blockdev */ */ ret = path_lookup(dev_name, LOOKUP_FOLLOW, &nd); bdev = lookup_bdev(dev_name); if (IS_ERR(bdev)) { DEBUG(1, "MTDSB: path_lookup() returned %d, inode %p\n", ret = PTR_ERR(bdev); ret, nd.path.dentry ? nd.path.dentry->d_inode : NULL); DEBUG(1, "MTDSB: lookup_bdev() returned %d\n", ret); if (ret) return ret; return ret; ret = -EINVAL; if (!S_ISBLK(nd.path.dentry->d_inode->i_mode)) goto out; if (nd.path.mnt->mnt_flags & MNT_NODEV) { ret = -EACCES; goto out; } } DEBUG(1, "MTDSB: lookup_bdev() returned 0\n"); if (imajor(nd.path.dentry->d_inode) != MTD_BLOCK_MAJOR) ret = -EINVAL; if (MAJOR(bdev->bd_dev) != MTD_BLOCK_MAJOR) goto not_an_MTD_device; goto not_an_MTD_device; mtdnr = iminor(nd.path.dentry->d_inode); mtdnr = MINOR(bdev->bd_dev); path_put(&nd.path); bdput(bdev); return get_sb_mtd_nr(fs_type, flags, dev_name, data, mtdnr, fill_super, return get_sb_mtd_nr(fs_type, flags, dev_name, data, mtdnr, fill_super, mnt); mnt); Loading @@ -213,10 +204,8 @@ not_an_MTD_device: printk(KERN_NOTICE printk(KERN_NOTICE "MTD: Attempt to mount non-MTD device \"%s\"\n", "MTD: Attempt to mount non-MTD device \"%s\"\n", dev_name); dev_name); out: bdput(bdev); path_put(&nd.path); return ret; return ret; } } EXPORT_SYMBOL_GPL(get_sb_mtd); EXPORT_SYMBOL_GPL(get_sb_mtd); Loading fs/block_dev.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1236,6 +1236,7 @@ fail: bdev = ERR_PTR(error); bdev = ERR_PTR(error); goto out; goto out; } } EXPORT_SYMBOL(lookup_bdev); /** /** * open_bdev_excl - open a block device by name and set it up for use * open_bdev_excl - open a block device by name and set it up for use Loading Loading
drivers/md/dm-table.c +6 −23 Original line number Original line Diff line number Diff line Loading @@ -316,29 +316,12 @@ static inline int check_space(struct dm_table *t) */ */ static int lookup_device(const char *path, dev_t *dev) static int lookup_device(const char *path, dev_t *dev) { { int r; struct block_device *bdev = lookup_bdev(path); struct nameidata nd; if (IS_ERR(bdev)) struct inode *inode; return PTR_ERR(bdev); *dev = bdev->bd_dev; if ((r = path_lookup(path, LOOKUP_FOLLOW, &nd))) bdput(bdev); return r; return 0; inode = nd.path.dentry->d_inode; if (!inode) { r = -ENOENT; goto out; } if (!S_ISBLK(inode->i_mode)) { r = -ENOTBLK; goto out; } *dev = inode->i_rdev; out: path_put(&nd.path); return r; } } /* /* Loading
drivers/mtd/mtdsuper.c +11 −22 Original line number Original line Diff line number Diff line Loading @@ -125,7 +125,7 @@ int get_sb_mtd(struct file_system_type *fs_type, int flags, int (*fill_super)(struct super_block *, void *, int), int (*fill_super)(struct super_block *, void *, int), struct vfsmount *mnt) struct vfsmount *mnt) { { struct nameidata nd; struct block_device *bdev; int mtdnr, ret; int mtdnr, ret; if (!dev_name) if (!dev_name) Loading Loading @@ -181,29 +181,20 @@ int get_sb_mtd(struct file_system_type *fs_type, int flags, /* try the old way - the hack where we allowed users to mount /* try the old way - the hack where we allowed users to mount * /dev/mtdblock$(n) but didn't actually _use_ the blockdev * /dev/mtdblock$(n) but didn't actually _use_ the blockdev */ */ ret = path_lookup(dev_name, LOOKUP_FOLLOW, &nd); bdev = lookup_bdev(dev_name); if (IS_ERR(bdev)) { DEBUG(1, "MTDSB: path_lookup() returned %d, inode %p\n", ret = PTR_ERR(bdev); ret, nd.path.dentry ? nd.path.dentry->d_inode : NULL); DEBUG(1, "MTDSB: lookup_bdev() returned %d\n", ret); if (ret) return ret; return ret; ret = -EINVAL; if (!S_ISBLK(nd.path.dentry->d_inode->i_mode)) goto out; if (nd.path.mnt->mnt_flags & MNT_NODEV) { ret = -EACCES; goto out; } } DEBUG(1, "MTDSB: lookup_bdev() returned 0\n"); if (imajor(nd.path.dentry->d_inode) != MTD_BLOCK_MAJOR) ret = -EINVAL; if (MAJOR(bdev->bd_dev) != MTD_BLOCK_MAJOR) goto not_an_MTD_device; goto not_an_MTD_device; mtdnr = iminor(nd.path.dentry->d_inode); mtdnr = MINOR(bdev->bd_dev); path_put(&nd.path); bdput(bdev); return get_sb_mtd_nr(fs_type, flags, dev_name, data, mtdnr, fill_super, return get_sb_mtd_nr(fs_type, flags, dev_name, data, mtdnr, fill_super, mnt); mnt); Loading @@ -213,10 +204,8 @@ not_an_MTD_device: printk(KERN_NOTICE printk(KERN_NOTICE "MTD: Attempt to mount non-MTD device \"%s\"\n", "MTD: Attempt to mount non-MTD device \"%s\"\n", dev_name); dev_name); out: bdput(bdev); path_put(&nd.path); return ret; return ret; } } EXPORT_SYMBOL_GPL(get_sb_mtd); EXPORT_SYMBOL_GPL(get_sb_mtd); Loading
fs/block_dev.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1236,6 +1236,7 @@ fail: bdev = ERR_PTR(error); bdev = ERR_PTR(error); goto out; goto out; } } EXPORT_SYMBOL(lookup_bdev); /** /** * open_bdev_excl - open a block device by name and set it up for use * open_bdev_excl - open a block device by name and set it up for use Loading