All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serue@us.ibm.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>,
	Kay Sievers <kay.sievers@vrfy.org>,
	linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	linux-fsdevel@vger.kernel.org,
	Eric Dumazet <eric.dumazet@gmail.com>,
	Benjamin LaHaise <bcrl@lhnet.ca>,
	"Eric W. Biederman" <ebiederm@aristanetworks.com>
Subject: Re: [PATCH 1/7] sysfs: Serialize updates to the vfs inode
Date: Mon, 11 Jan 2010 23:41:41 -0600	[thread overview]
Message-ID: <20100112054141.GA10756@us.ibm.com> (raw)
In-Reply-To: <1263241315-19499-1-git-send-email-ebiederm@xmission.com>

Quoting Eric W. Biederman (ebiederm@xmission.com):
> From: Eric W. Biederman <ebiederm@aristanetworks.com>
> 
> The way the vfs is structured only calls to the filesystem
> methods actually update the vfs inode.  We add to the
> normal number of places where the vfs inode is updated by
> also updating the vfs inode in sysfs_refresh_inode.
> 
> Grabbing the inode mutex in sysfs_permission and sysfs_getattr
> causes deadlocks, because somtimes those operations are called
> with the inode mutex held, but not always.  Therefore we can
> not depend upon the inode mutex to serialize all updates
> to the vfs inode.
> 
> We take the sysfs_mutex in all of those places so we can
> also use it to protect the vfs inode.  To accomplish that
> we simply requires extending the vfs inode in sysfs_setattr
> over inode_change_ok (so we have an unchanging inode
> when we perform the check), and inode_setattr.
> 
> Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>

I'm a little confused about the patch intro:  it makes it sound
like this is preparatory for a followup, but in fact it is a bugfix,
right?  Hard to exploit i think, but should it go to -stable?

Acked-by: Serge Hallyn <serue@us.ibm.com>

> ---
>  fs/sysfs/inode.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
> index 220b758..104cbc1 100644
> --- a/fs/sysfs/inode.c
> +++ b/fs/sysfs/inode.c
> @@ -112,20 +112,20 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr)
>  	if (!sd)
>  		return -EINVAL;
> 
> +	mutex_lock(&sysfs_mutex);
>  	error = inode_change_ok(inode, iattr);
>  	if (error)
> -		return error;
> +		goto out;
> 
>  	iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */
> 
>  	error = inode_setattr(inode, iattr);
>  	if (error)
> -		return error;
> +		goto out;
> 
> -	mutex_lock(&sysfs_mutex);
>  	error = sysfs_sd_setattr(sd, iattr);
> +out:
>  	mutex_unlock(&sysfs_mutex);
> -
>  	return error;
>  }
> 
> -- 
> 1.6.5.2.143.g8cc62
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2010-01-12  5:41 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-11 20:16 [PATCH 0/7] General sysfs enhancements Eric W. Biederman
2010-01-11 20:21 ` [PATCH 1/7] sysfs: Serialize updates to the vfs inode Eric W. Biederman
2010-01-12  5:41   ` Serge E. Hallyn [this message]
2010-01-11 20:21 ` [PATCH 2/7] sysfs: Pack sysfs_dirent more tightly Eric W. Biederman
2010-01-12  0:41   ` Tejun Heo
2010-01-11 20:21 ` [PATCH 3/7] sysfs: Keep an nlink count on sysfs directories Eric W. Biederman
2010-01-12  0:46   ` Tejun Heo
2010-01-12  0:53     ` Benjamin LaHaise
2010-01-12  1:06       ` Eric W. Biederman
2010-01-12  1:12         ` Benjamin LaHaise
2010-01-12  1:23           ` Eric W. Biederman
2010-01-12  6:22         ` Tejun Heo
2010-01-12 15:49       ` Valdis.Kletnieks
2010-01-12  1:02     ` Eric W. Biederman
2010-01-12  5:56   ` Serge E. Hallyn
2010-01-12  8:30     ` Eric W. Biederman
2010-01-12 12:41   ` Cornelia Huck
2010-01-12 15:34     ` Eric W. Biederman
2010-01-11 20:21 ` [PATCH 4/7] sysfs: Implement sysfs_rename_link Eric W. Biederman
2010-01-12  6:24   ` Tejun Heo
2010-01-12 17:30   ` Serge E. Hallyn
2010-01-11 20:21 ` [PATCH 5/7] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2010-01-12  6:25   ` Tejun Heo
2010-01-12 17:34   ` Serge E. Hallyn
2010-01-11 20:21 ` [PATCH 6/7] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2010-01-12 17:43   ` Serge E. Hallyn
2010-01-11 20:21 ` [PATCH 7/7] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2010-01-12 17:43   ` Serge E. Hallyn
2010-01-15 21:37 ` [PATCH 0/7] General sysfs enhancements Greg KH
2010-02-13  3:20   ` [PATCH 0/6] " Eric W. Biederman
2010-02-13  3:22     ` [PATCH 1/6] sysfs: Serialize updates to the vfs inode Eric W. Biederman
2010-02-13  3:22     ` [PATCH 2/6] sysfs: Pack sysfs_dirent more tightly Eric W. Biederman
2010-02-13  3:22     ` [PATCH 3/6] sysfs: Implement sysfs_rename_link Eric W. Biederman
2010-02-13  3:22     ` [PATCH 4/6] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2010-02-13  3:22     ` [PATCH 5/6] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2010-02-13  3:22     ` [PATCH 6/6] sysfs: Kill unused sysfs_sb variable Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100112054141.GA10756@us.ibm.com \
    --to=serue@us.ibm.com \
    --cc=bcrl@lhnet.ca \
    --cc=cornelia.huck@de.ibm.com \
    --cc=ebiederm@aristanetworks.com \
    --cc=ebiederm@xmission.com \
    --cc=eric.dumazet@gmail.com \
    --cc=gregkh@suse.de \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.