All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Roman Borisov <ext-roman.borisov@nokia.com>
Cc: viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org,
	vda.linux@googlemail.com, cebbert@redhat.com, virtuoso@slind.org
Subject: Re: [PATCH] fs: bound mount propagation fix
Date: Tue, 19 Apr 2011 14:04:00 -0700	[thread overview]
Message-ID: <20110419140400.23367a16.akpm@linux-foundation.org> (raw)
In-Reply-To: <7b9aa806294aadd47704d56ae3e7c757bf0ce6db.1301667509.git.ext-roman.borisov@nokia.com>

On Fri,  1 Apr 2011 18:48:20 +0400
Roman Borisov <ext-roman.borisov@nokia.com> wrote:

> I think MS_SILENT shouldn't be cleared anywhere. I suppose the bug is in 
> MS_SHARED options checking. Please see the patch below.
> 
> Fixed MS_SHARED, MS_SLAVE, MS_UNBINDABLE option handling; 
> Existing options check doesn't allow to have any options combinations 
> because of integer comparison (not bitwise).
> 

(when fixing a bug, please include a *complete* description of that bug
in the changelog.  It should include a description of the user-visible
misbehaviour and a description of the coding error).


The vfs code is pretty confusing about whether `type' is supposed to be
a scalar or a bitfield.

flags_to_propagation_type() has that is_power_of-two() check in there
to reject more-than-one-bit-set.

>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/namespace.c b/fs/namespace.c
> index 2beb0fb..e0cf263 100644
> --- a/fs/namespace.c
> +++ b/fs/namespace.c
> @@ -1434,7 +1434,7 @@ static int do_change_type(struct path *path, int flag)
>  		return -EINVAL;
>  
>  	down_write(&namespace_sem);
> -	if (type == MS_SHARED) {
> +	if (type & MS_SHARED) {

So this change won't do anything, because do_change_type() has used
flags_to_propagation_type().

>  		err = invent_group_ids(mnt, recurse);
>  		if (err)
>  			goto out_unlock;
> diff --git a/fs/pnode.c b/fs/pnode.c
> index 8d5f392..0c9dc54 100644
> --- a/fs/pnode.c
> +++ b/fs/pnode.c
> @@ -128,15 +128,15 @@ static int do_make_slave(struct vfsmount *mnt)
>  
>  void change_mnt_propagation(struct vfsmount *mnt, int type)
>  {
> -	if (type == MS_SHARED) {
> +	if (type & MS_SHARED) {
>  		set_mnt_shared(mnt);
>  		return;
>  	}
>  	do_make_slave(mnt);
> -	if (type != MS_SLAVE) {
> +	if (!(type & MS_SLAVE)) {
>  		list_del_init(&mnt->mnt_slave);
>  		mnt->mnt_master = NULL;
> -		if (type == MS_UNBINDABLE)
> +		if (type & MS_UNBINDABLE)
>  			mnt->mnt_flags |= MNT_UNBINDABLE;
>  		else
>  			mnt->mnt_flags &= ~MNT_UNBINDABLE;

And afaict, no caller of change_mnt_propagation() will pass in a `type'
with more than a single bit set.  umount_tree() passed MS_PRIVATE and
do_change_type() uses flags_to_propagation_type().

So as far as I can tell, this patch won't fix anything??

  parent reply	other threads:[~2011-04-19 21:04 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-14  4:20 2.6.35-rc4: mount results with and without MS_SILENT differ Denys Vlasenko
2011-03-25  3:47 ` Chuck Ebbert
2011-03-26 21:43   ` Denys Vlasenko
2011-04-01 14:48     ` [PATCH] fs: bound mount propagation fix Roman Borisov
2011-04-12 10:28       ` Roman Borisov
2011-04-19 21:04       ` Andrew Morton [this message]
2011-04-20 11:51         ` Roman Borisov
     [not found] <cover.1303304011.git.ext-roman.borisov@nokia.com>
2011-04-20 14:11 ` [PATCH v2] " Roman Borisov
2011-04-21 20:04   ` [PATCH v3] " Andrew Morton
2011-04-22  9:02     ` Roman Borisov
2011-04-22 11:05     ` [PATCH v4] fs: namespacec " Roman Borisov

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=20110419140400.23367a16.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=cebbert@redhat.com \
    --cc=ext-roman.borisov@nokia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vda.linux@googlemail.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=virtuoso@slind.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.