Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
Greg KH <[EMAIL PROTECTED]> writes: > On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: >> sd children list walking in sysfs_lookup() and sd renaming in >> sysfs_rename_dir() were left out during i_mutex -> sysfs_mutex >> conversion. Fix them. >> >> Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> > > Ok, to apply this, it messes with Eric's further patches for the shadow > directory stuff. But since it looks like you and Eric seem to have > worked something else in that area, I'll drop Eric's patches for now, as > that's the safest thing. > > Eric, is that ok? Sounds good. With a little luck I should have something working in a couple of hours and then I can see about getting a tree with both my patches and Tejun. So I will probably rebase on top of Tejun's latest patches. Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Wed, Aug 01, 2007 at 05:29:00PM -0700, Greg KH wrote: > On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: > > sd children list walking in sysfs_lookup() and sd renaming in > > sysfs_rename_dir() were left out during i_mutex -> sysfs_mutex > > conversion. Fix them. > > > > Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> > > Ok, to apply this, it messes with Eric's further patches for the shadow > directory stuff. But since it looks like you and Eric seem to have > worked something else in that area, I'll drop Eric's patches for now, as > that's the safest thing. > > Eric, is that ok? Oh nevermind, it looks like you already took care of this with the later patches... thanks, greg k-h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: > sd children list walking in sysfs_lookup() and sd renaming in > sysfs_rename_dir() were left out during i_mutex -> sysfs_mutex > conversion. Fix them. > > Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> Ok, to apply this, it messes with Eric's further patches for the shadow directory stuff. But since it looks like you and Eric seem to have worked something else in that area, I'll drop Eric's patches for now, as that's the safest thing. Eric, is that ok? thanks, greg k-h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex - sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo [EMAIL PROTECTED] Ok, to apply this, it messes with Eric's further patches for the shadow directory stuff. But since it looks like you and Eric seem to have worked something else in that area, I'll drop Eric's patches for now, as that's the safest thing. Eric, is that ok? thanks, greg k-h - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
Greg KH [EMAIL PROTECTED] writes: On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex - sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo [EMAIL PROTECTED] Ok, to apply this, it messes with Eric's further patches for the shadow directory stuff. But since it looks like you and Eric seem to have worked something else in that area, I'll drop Eric's patches for now, as that's the safest thing. Eric, is that ok? Sounds good. With a little luck I should have something working in a couple of hours and then I can see about getting a tree with both my patches and Tejun. So I will probably rebase on top of Tejun's latest patches. Eric - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Wed, Aug 01, 2007 at 05:29:00PM -0700, Greg KH wrote: On Tue, Jul 31, 2007 at 07:15:08PM +0900, Tejun Heo wrote: sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex - sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo [EMAIL PROTECTED] Ok, to apply this, it messes with Eric's further patches for the shadow directory stuff. But since it looks like you and Eric seem to have worked something else in that area, I'll drop Eric's patches for now, as that's the safest thing. Eric, is that ok? Oh nevermind, it looks like you already took care of this with the later patches... thanks, greg k-h - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Tue, 31 Jul 2007 19:15:08 +0900, Tejun Heo <[EMAIL PROTECTED]> wrote: > sd children list walking in sysfs_lookup() and sd renaming in > sysfs_rename_dir() were left out during i_mutex -> sysfs_mutex > conversion. Fix them. > > Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> > --- > fs/sysfs/dir.c | 21 - > 1 files changed, 12 insertions(+), 9 deletions(-) Looks sane. Acked-by: Cornelia Huck <[EMAIL PROTECTED]> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex -> sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo <[EMAIL PROTECTED]> --- fs/sysfs/dir.c | 21 - 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 048e605..83e76b3 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -762,12 +762,15 @@ static int sysfs_count_nlink(struct sysfs_dirent *sd) static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { + struct dentry *ret = NULL; struct sysfs_dirent * parent_sd = dentry->d_parent->d_fsdata; struct sysfs_dirent * sd; struct bin_attribute *bin_attr; struct inode *inode; int found = 0; + mutex_lock(_mutex); + for (sd = parent_sd->s_children; sd; sd = sd->s_sibling) { if (sysfs_type(sd) && !strcmp(sd->s_name, dentry->d_name.name)) { @@ -778,14 +781,14 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, /* no such entry */ if (!found) - return NULL; + goto out_unlock; /* attach dentry and inode */ inode = sysfs_get_inode(sd); - if (!inode) - return ERR_PTR(-ENOMEM); - - mutex_lock(_mutex); + if (!inode) { + ret = ERR_PTR(-ENOMEM); + goto out_unlock; + } if (inode->i_state & I_NEW) { /* initialize inode according to type */ @@ -815,9 +818,9 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, sysfs_instantiate(dentry, inode); sysfs_attach_dentry(sd, dentry); + out_unlock: mutex_unlock(_mutex); - - return NULL; + return ret; } const struct inode_operations sysfs_dir_inode_operations = { @@ -942,6 +945,8 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, if (error) goto out_drop; + mutex_lock(_mutex); + dup_name = sd->s_name; sd->s_name = new_name; @@ -949,8 +954,6 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, d_add(new_dentry, NULL); d_move(sd->s_dentry, new_dentry); - mutex_lock(_mutex); - sysfs_unlink_sibling(sd); sysfs_get(new_parent_sd); sysfs_put(sd->s_parent); -- 1.5.0.3 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex - sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo [EMAIL PROTECTED] --- fs/sysfs/dir.c | 21 - 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c index 048e605..83e76b3 100644 --- a/fs/sysfs/dir.c +++ b/fs/sysfs/dir.c @@ -762,12 +762,15 @@ static int sysfs_count_nlink(struct sysfs_dirent *sd) static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { + struct dentry *ret = NULL; struct sysfs_dirent * parent_sd = dentry-d_parent-d_fsdata; struct sysfs_dirent * sd; struct bin_attribute *bin_attr; struct inode *inode; int found = 0; + mutex_lock(sysfs_mutex); + for (sd = parent_sd-s_children; sd; sd = sd-s_sibling) { if (sysfs_type(sd) !strcmp(sd-s_name, dentry-d_name.name)) { @@ -778,14 +781,14 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, /* no such entry */ if (!found) - return NULL; + goto out_unlock; /* attach dentry and inode */ inode = sysfs_get_inode(sd); - if (!inode) - return ERR_PTR(-ENOMEM); - - mutex_lock(sysfs_mutex); + if (!inode) { + ret = ERR_PTR(-ENOMEM); + goto out_unlock; + } if (inode-i_state I_NEW) { /* initialize inode according to type */ @@ -815,9 +818,9 @@ static struct dentry * sysfs_lookup(struct inode *dir, struct dentry *dentry, sysfs_instantiate(dentry, inode); sysfs_attach_dentry(sd, dentry); + out_unlock: mutex_unlock(sysfs_mutex); - - return NULL; + return ret; } const struct inode_operations sysfs_dir_inode_operations = { @@ -942,6 +945,8 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, if (error) goto out_drop; + mutex_lock(sysfs_mutex); + dup_name = sd-s_name; sd-s_name = new_name; @@ -949,8 +954,6 @@ int sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd, d_add(new_dentry, NULL); d_move(sd-s_dentry, new_dentry); - mutex_lock(sysfs_mutex); - sysfs_unlink_sibling(sd); sysfs_get(new_parent_sd); sysfs_put(sd-s_parent); -- 1.5.0.3 - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()
On Tue, 31 Jul 2007 19:15:08 +0900, Tejun Heo [EMAIL PROTECTED] wrote: sd children list walking in sysfs_lookup() and sd renaming in sysfs_rename_dir() were left out during i_mutex - sysfs_mutex conversion. Fix them. Signed-off-by: Tejun Heo [EMAIL PROTECTED] --- fs/sysfs/dir.c | 21 - 1 files changed, 12 insertions(+), 9 deletions(-) Looks sane. Acked-by: Cornelia Huck [EMAIL PROTECTED] - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/