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: He Kuang <hekuang@huawei.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
He Kuang 2016-03-26 09:12:10 +00:00 committed by Al Viro
parent c074cefcc0
commit ae0a843c74
1 changed files with 3 additions and 4 deletions

View File

@ -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)
{
const unsigned char *cs;
/*
* 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
* 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
* early because the data cannot match (there can
* be no NUL in the ct/tcount data)
*/
cs = ACCESS_ONCE(dentry->d_name.name);
smp_read_barrier_depends();
const unsigned char *cs = lockless_dereference(dentry->d_name.name);
return dentry_string_cmp(cs, ct, tcount);
}