IB/ipath: Check return value of lookup_one_len
authorBryan O'Sullivan <bos@pathscale.com>
Wed, 21 Mar 2007 22:18:14 +0000 (15:18 -0700)
committerRoland Dreier <rolandd@cisco.com>
Thu, 22 Mar 2007 21:40:15 +0000 (14:40 -0700)
This fixes kernel.org bug 8003.

Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_fs.c

index 5b40a84..ed55979 100644 (file)
@@ -451,12 +451,18 @@ bail:
        return ret;
 }
 
-static void remove_file(struct dentry *parent, char *name)
+static int remove_file(struct dentry *parent, char *name)
 {
        struct dentry *tmp;
+       int ret;
 
        tmp = lookup_one_len(name, parent, strlen(name));
 
+       if (IS_ERR(tmp)) {
+               ret = PTR_ERR(tmp);
+               goto bail;
+       }
+
        spin_lock(&dcache_lock);
        spin_lock(&tmp->d_lock);
        if (!(d_unhashed(tmp) && tmp->d_inode)) {
@@ -469,6 +475,14 @@ static void remove_file(struct dentry *parent, char *name)
                spin_unlock(&tmp->d_lock);
                spin_unlock(&dcache_lock);
        }
+
+       ret = 0;
+bail:
+       /*
+        * We don't expect clients to care about the return value, but
+        * it's there if they need it.
+        */
+       return ret;
 }
 
 static int remove_device_files(struct super_block *sb,