From 478afd4774fb6992fb35238fa98a96b3130d0aa5 Mon Sep 17 00:00:00 2001 From: Ming Lei Date: Thu, 4 Apr 2013 22:22:37 +0800 Subject: [PATCH] --- yaml --- r: 363249 b: refs/heads/master c: bb2b0051d7b0772ea9d0b4be900c2d965093f5d7 h: refs/heads/master i: 363247: f76142a8eef546c8e4623fb6930472466ea2458d v: v3 --- [refs] | 2 +- trunk/fs/sysfs/dir.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 5ddb16da8537..f691a361701f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bcfb87fb75fa3a9b96c8a73d19166897d167fe3f +refs/heads/master: bb2b0051d7b0772ea9d0b4be900c2d965093f5d7 diff --git a/trunk/fs/sysfs/dir.c b/trunk/fs/sysfs/dir.c index 1bf016b5e88f..e8e0e71b29d5 100644 --- a/trunk/fs/sysfs/dir.c +++ b/trunk/fs/sysfs/dir.c @@ -268,6 +268,10 @@ void release_sysfs_dirent(struct sysfs_dirent * sd) */ parent_sd = sd->s_parent; + WARN(!(sd->s_flags & SYSFS_FLAG_REMOVED), + "sysfs: free using entry: %s/%s\n", + parent_sd ? parent_sd->s_name : "", sd->s_name); + if (sysfs_type(sd) == SYSFS_KOBJ_LINK) sysfs_put(sd->s_symlink.target_sd); if (sysfs_type(sd) & SYSFS_COPY_NAME) @@ -386,7 +390,7 @@ struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type) sd->s_name = name; sd->s_mode = mode; - sd->s_flags = type; + sd->s_flags = type | SYSFS_FLAG_REMOVED; return sd; @@ -466,6 +470,9 @@ int __sysfs_add_one(struct sysfs_addrm_cxt *acxt, struct sysfs_dirent *sd) ps_iattrs->ia_ctime = ps_iattrs->ia_mtime = CURRENT_TIME; } + /* Mark the entry added into directory tree */ + sd->s_flags &= ~SYSFS_FLAG_REMOVED; + return 0; }