Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f88123eaf953f13a0c597dde54745d28f81236de
Commit:     f88123eaf953f13a0c597dde54745d28f81236de
Parent:     181b2e4be1603ce3ccace8322047a548f29f4b20
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Thu Sep 20 16:05:10 2007 +0900
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Oct 12 14:51:09 2007 -0700

    sysfs: fix sysfs_chmod_file() such that it updates sd->s_mode too
    
    sysfs_chmod_file() looked and updated only inode of the target file.
    Dentry and inode are reclaimable and the update mode data will go away
    when the inode is reclaimed.  This patch makes sysfs_chmod_file()
    update sd->s_mode too such that the change is permanent.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Acked-by: Cornelia Huck <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 fs/sysfs/file.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index ff93c92..9fdf8da 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -521,10 +521,19 @@ int sysfs_chmod_file(struct kobject *kobj, struct 
attribute *attr, mode_t mode)
        }
 
        inode = victim->d_inode;
+
        mutex_lock(&inode->i_mutex);
+
        newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
        newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
        rc = notify_change(victim, &newattrs);
+
+       if (rc == 0) {
+               mutex_lock(&sysfs_mutex);
+               victim_sd->s_mode = newattrs.ia_mode;
+               mutex_unlock(&sysfs_mutex);
+       }
+
        mutex_unlock(&inode->i_mutex);
  out:
        dput(victim);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to