From 9dbaef437465ea33c5eab2cd25e430affd420898 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Tue, 5 Jan 2010 17:25:59 +0200 Subject: [PATCH] --- yaml --- r: 179949 b: refs/heads/master c: b531b55a7bde8aa2bdf7023b3afc6df1bf3dcb67 h: refs/heads/master i: 179947: 6644a16ac7c3752d7d6d8a9f6cab1cef8c054248 v: v3 --- [refs] | 2 +- trunk/drivers/mtd/ubi/kapi.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 245e6c649de0..c0869b708259 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff998793288b49a3b22d929bf8e56362320905ff +refs/heads/master: b531b55a7bde8aa2bdf7023b3afc6df1bf3dcb67 diff --git a/trunk/drivers/mtd/ubi/kapi.c b/trunk/drivers/mtd/ubi/kapi.c index 277786ebaa2c..1361574e2b00 100644 --- a/trunk/drivers/mtd/ubi/kapi.c +++ b/trunk/drivers/mtd/ubi/kapi.c @@ -291,8 +291,7 @@ EXPORT_SYMBOL_GPL(ubi_open_volume_nm); */ struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) { - int error, ubi_num, vol_id; - struct ubi_volume_desc *ret; + int error, ubi_num, vol_id, mod; struct inode *inode; struct path path; @@ -306,16 +305,16 @@ struct ubi_volume_desc *ubi_open_volume_path(const char *pathname, int mode) return ERR_PTR(error); inode = path.dentry->d_inode; + mod = inode->i_mode; ubi_num = ubi_major2num(imajor(inode)); vol_id = iminor(inode) - 1; + path_put(&path); + if (!S_ISCHR(mod)) + return ERR_PTR(-EINVAL); if (vol_id >= 0 && ubi_num >= 0) - ret = ubi_open_volume(ubi_num, vol_id, mode); - else - ret = ERR_PTR(-ENODEV); - - path_put(&path); - return ret; + return ubi_open_volume(ubi_num, vol_id, mode); + return ERR_PTR(-ENODEV); } EXPORT_SYMBOL_GPL(ubi_open_volume_path);