aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dcache.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/dcache.c')
-rw-r--r--fs/dcache.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 5c09ad7b4a15..e6707a1f72c6 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -192,9 +192,6 @@ static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char
192 192
193static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *ct, unsigned tcount) 193static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *ct, unsigned tcount)
194{ 194{
195 if (dentry->d_name.len != tcount)
196 return 1;
197
198 /* 195 /*
199 * Be careful about RCU walk racing with rename: 196 * Be careful about RCU walk racing with rename:
200 * use ACCESS_ONCE to fetch the name pointer. 197 * use ACCESS_ONCE to fetch the name pointer.
@@ -1464,6 +1461,8 @@ static struct dentry *__d_instantiate_unique(struct dentry *entry,
1464 continue; 1461 continue;
1465 if (alias->d_parent != entry->d_parent) 1462 if (alias->d_parent != entry->d_parent)
1466 continue; 1463 continue;
1464 if (alias->d_name.len != len)
1465 continue;
1467 if (dentry_cmp(alias, name, len)) 1466 if (dentry_cmp(alias, name, len))
1468 continue; 1467 continue;
1469 __dget(alias); 1468 __dget(alias);
@@ -1882,6 +1881,8 @@ seqretry:
1882 } 1881 }
1883 } 1882 }
1884 1883
1884 if (dentry->d_name.len != len)
1885 continue;
1885 if (!dentry_cmp(dentry, str, len)) 1886 if (!dentry_cmp(dentry, str, len))
1886 return dentry; 1887 return dentry;
1887 } 1888 }
@@ -1984,6 +1985,8 @@ struct dentry *__d_lookup(struct dentry *parent, struct qstr *name)
1984 tlen, tname, name)) 1985 tlen, tname, name))
1985 goto next; 1986 goto next;
1986 } else { 1987 } else {
1988 if (dentry->d_name.len != len)
1989 goto next;
1987 if (dentry_cmp(dentry, str, len)) 1990 if (dentry_cmp(dentry, str, len))
1988 goto next; 1991 goto next;
1989 } 1992 }