projects
/
GitHub
/
mt8127
/
android_kernel_alcatel_ttab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
headers: kobject.h redux
[GitHub/mt8127/android_kernel_alcatel_ttab.git]
/
fs
/
sysfs
/
dir.c
diff --git
a/fs/sysfs/dir.c
b/fs/sysfs/dir.c
index 7e54bac8c4b00a6c9fbe86828f0f2c4aca8222c8..ea9120a830d824feb798db501a4b61fbd98f6071 100644
(file)
--- a/
fs/sysfs/dir.c
+++ b/
fs/sysfs/dir.c
@@
-231,7
+231,7
@@
void release_sysfs_dirent(struct sysfs_dirent * sd)
goto repeat;
}
goto repeat;
}
-static int sysfs_dentry_delete(struct dentry *dentry)
+static int sysfs_dentry_delete(
const
struct dentry *dentry)
{
struct sysfs_dirent *sd = dentry->d_fsdata;
return !!(sd->s_flags & SYSFS_FLAG_REMOVED);
{
struct sysfs_dirent *sd = dentry->d_fsdata;
return !!(sd->s_flags & SYSFS_FLAG_REMOVED);
@@
-239,9
+239,13
@@
static int sysfs_dentry_delete(struct dentry *dentry)
static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
{
static int sysfs_dentry_revalidate(struct dentry *dentry, struct nameidata *nd)
{
- struct sysfs_dirent *sd
= dentry->d_fsdata
;
+ struct sysfs_dirent *sd;
int is_dir;
int is_dir;
+ if (nd->flags & LOOKUP_RCU)
+ return -ECHILD;
+
+ sd = dentry->d_fsdata;
mutex_lock(&sysfs_mutex);
/* The sysfs dirent has been deleted */
mutex_lock(&sysfs_mutex);
/* The sysfs dirent has been deleted */
@@
-701,7
+705,7
@@
static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry,
/* instantiate and hash dentry */
ret = d_find_alias(inode);
if (!ret) {
/* instantiate and hash dentry */
ret = d_find_alias(inode);
if (!ret) {
- d
entry->d_op = &sysfs_dentry_ops
;
+ d
_set_d_op(dentry, &sysfs_dentry_ops)
;
dentry->d_fsdata = sysfs_get(sd);
d_add(dentry, inode);
} else {
dentry->d_fsdata = sysfs_get(sd);
d_add(dentry, inode);
} else {