Re: [PATCH 1/7] sysfs: fix locking in sysfs_lookup() and sysfs_rename_dir()

2007-08-01 Thread Eric W. Biederman
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()

2007-08-01 Thread Greg KH
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()

2007-08-01 Thread Greg KH
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()

2007-08-01 Thread Greg KH
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()

2007-08-01 Thread Eric W. Biederman
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()

2007-08-01 Thread Greg KH
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()

2007-07-31 Thread Cornelia Huck
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()

2007-07-31 Thread Tejun Heo
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()

2007-07-31 Thread Tejun Heo
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()

2007-07-31 Thread Cornelia Huck
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/