Commit ae0a843c authored by He Kuang's avatar He Kuang Committed by Al Viro

dentry_cmp(): use lockless_dereference() instead of smp_read_barrier_depends()

lockless_dereference() was added which can be used in place of
hard-coding smp_read_barrier_depends().
Signed-off-by: default avatarHe Kuang <hekuang@huawei.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c074cefc
...@@ -226,10 +226,9 @@ static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char ...@@ -226,10 +226,9 @@ static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char
static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *ct, unsigned tcount) static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *ct, unsigned tcount)
{ {
const unsigned char *cs;
/* /*
* Be careful about RCU walk racing with rename: * Be careful about RCU walk racing with rename:
* use ACCESS_ONCE to fetch the name pointer. * use 'lockless_dereference' to fetch the name pointer.
* *
* NOTE! Even if a rename will mean that the length * NOTE! Even if a rename will mean that the length
* was not loaded atomically, we don't care. The * was not loaded atomically, we don't care. The
...@@ -243,8 +242,8 @@ static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *c ...@@ -243,8 +242,8 @@ static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *c
* early because the data cannot match (there can * early because the data cannot match (there can
* be no NUL in the ct/tcount data) * be no NUL in the ct/tcount data)
*/ */
cs = ACCESS_ONCE(dentry->d_name.name); const unsigned char *cs = lockless_dereference(dentry->d_name.name);
smp_read_barrier_depends();
return dentry_string_cmp(cs, ct, tcount); return dentry_string_cmp(cs, ct, tcount);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment