From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933398AbXJLWud (ORCPT ); Fri, 12 Oct 2007 18:50:33 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932626AbXJLWVw (ORCPT ); Fri, 12 Oct 2007 18:21:52 -0400 Received: from ns.suse.de ([195.135.220.2]:53465 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932804AbXJLWVv (ORCPT ); Fri, 12 Oct 2007 18:21:51 -0400 From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Tejun Heo , Greg Kroah-Hartman Subject: [PATCH 54/75] sysfs: fix sysfs_chmod_file() such that it updates sd->s_mode too Date: Fri, 12 Oct 2007 15:16:58 -0700 Message-Id: <1192227695547-git-send-email-gregkh@suse.de> X-Mailer: git-send-email 1.5.3.4 In-Reply-To: <11922276913288-git-send-email-gregkh@suse.de> References: \<20071012221251.GB4559@kroah.com\> <11922274393667-git-send-email-gregkh@suse.de> <11922274441634-git-send-email-gregkh@suse.de> <11922274503271-git-send-email-gregkh@suse.de> <11922274543490-git-send-email-gregkh@suse.de> <11922274643370-git-send-email-gregkh@suse.de> <11922274682487-git-send-email-gregkh@suse.de> <11922274732211-git-send-email-gregkh@suse.de> <11922274772578-git-send-email-gregkh@suse.de> <1192227481691-git-send-email-gregkh@suse.de> <11922274853108-git-send-email-gregkh@suse.de> <11922274901810-git-send-email-gregkh@suse.de> <11922274941588-git-send-email-gregkh@suse.de> <11922274993462-git-send-email-gregkh@suse.de> <11922275031518-git-send-email-gregkh@suse.de> <11922275074080-git-send-email-gregkh@suse.de> <11922275121763-git-send-email-gregkh@suse.de> <11922275181138-git-send-email-gregkh@suse.de> <11922275221643-git-send-email-gregkh@suse.de> <1192227527856-git-send-email-gregkh@suse.de> <11922275312531-git-send-email-gregkh@suse.de> <11922275371856-git-send-email-gregkh@suse.de> <11922275413548-git-send-email-gregkh@suse.de> <11922275462233-git-send-email-gregkh@suse.de> <1192227551156-git-send-email-gregkh@suse.de> <11922275552558-git-send-email-gregkh@suse.de> <119222756066-git-send-email-gregkh@suse.de> <11922275642378-git-send-email-gregkh@suse.de> <11922275693989-git-send-email-gregkh@suse.de> <1192227574129-git-send-email-gregkh@suse.de> <11922275781508-git-send-email-gregkh@suse.de> <11922275843236-git-send-email-gregkh@suse.de> <1192227589276-git-send-email-gregkh@suse.de> <1192227593813-git-send-email-gregkh@suse.de> <1192227598106-git-send-email-gregkh@suse.de> <1192227603335-git-send-email-gregkh@suse.de> <1192227611369-git-send-email-gregkh@suse.de> <11922276163147-git-send-email-gregkh@suse.de> <11922276201219-git-send-email-gregkh@suse.de> <11922276254051-git-send-email-gregkh@suse.de> <11922276302338-git-send-email-gregkh@suse.de> <1192227634772-git-send-email-gregkh@suse.de> <11922276392200-git-send-email-gregkh@suse.de> <11922276433594-git-send-email-gregkh@suse.de> <11922276471365-git-send-email-gregkh@suse.de> <1192227653165-git-send-email-gregkh@suse.de> <11922276572176-git-send-email-gregkh@suse.de> <11922276622731-git-send-email-gregkh@suse.de> <11922276672660-git-send-email-gregkh@suse.de> <1192227671143-git-send-email-gregkh@suse.de> <11922276763650-git-send-email-gregkh@suse.de> <1192227681926-git-send-email-gregkh@suse.de> <11922276862914-git-send-email-gregkh@suse.de> <11922276913288-git-send-email-gregkh@suse.de> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org From: Tejun Heo 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 Acked-by: Cornelia Huck Signed-off-by: Greg Kroah-Hartman --- 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); -- 1.5.3.4