diff options
author | Bryan O'Sullivan <bos@pathscale.com> | 2007-03-21 23:18:14 +0100 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-03-22 22:40:15 +0100 |
commit | fae8773b737d03f94ba83f0b78a891f385f35f98 (patch) | |
tree | 9bb514912587ed700d8a80ec75b3781ac658a93f /drivers/infiniband/hw/ipath/ipath_fs.c | |
parent | IPoIB: Fix race in detaching from mcast group before attaching (diff) | |
download | linux-fae8773b737d03f94ba83f0b78a891f385f35f98.tar.xz linux-fae8773b737d03f94ba83f0b78a891f385f35f98.zip |
IB/ipath: Check return value of lookup_one_len
This fixes kernel.org bug 8003.
Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_fs.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_fs.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index 5b40a846ff95..ed55979bfd34 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c @@ -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, |