2003-05-06 09:52:16

by Alex Riesen

[permalink] [raw]
Subject: Fwd: allow rename to "--bind"-mounted filesystem

Hi,
i just came over this patch, and wondered why is it missing
in both 2.4 and 2.5 (the code in do_rename is identical in both
kernels).

Are such renames really not allowed, or was it just fixed differently?

-alex

----- Forwarded message from Eric Lammerts <[email protected]> -----

Date: Sun, 19 Jan 2003 00:34:59 +0100
Subject: [PATCH] allow rename to "--bind"-mounted filesystem
From: Eric Lammerts <[email protected]>
To: [email protected]
Message-ID: <[email protected]>
X-Mailing-List: [email protected]


Hi,
I just discovered that rename(2) does not allow you to rename a file within
the same filesystem if there is a "--bind" in the way. For example:

# mkdir mydir
# mount --bind . mydir
# touch myfile
# strace -erename perl -e 'rename "myfile", "mydir/myfile2"'
rename("myfile", "mydir/myfile2") = -1 EXDEV (Invalid cross-device link)

IMHO it should be possible to do a rename in this situation.

I propose to remove the check in do_rename() altogether. It shouldn't be
necessary, since there's also a check for a cross-device rename in
vfs_rename_dir() and vfs_rename_other().

Patch below has been tested.

Eric


--- linux-2.4.21-pre3/fs/namei.c.orig 2003-01-18 23:56:46.000000000 +0100
+++ linux-2.4.21-pre3/fs/namei.c 2003-01-18 23:57:30.000000000 +0100
@@ -1860,10 +1860,6 @@
if (error)
goto exit1;

- error = -EXDEV;
- if (oldnd.mnt != newnd.mnt)
- goto exit2;
-
old_dir = oldnd.dentry;
error = -EBUSY;
if (oldnd.last_type != LAST_NORM)


2003-05-06 14:22:39

by Alex Riesen

[permalink] [raw]
Subject: Re: Fwd: allow rename to "--bind"-mounted filesystem

[email protected], Tue, May 06, 2003 16:30:26 +0200:
> On Tue, May 06, 2003 at 12:04:35PM +0200, Alex Riesen wrote:
> > Hi,
> > i just came over this patch, and wondered why is it missing
> > in both 2.4 and 2.5 (the code in do_rename is identical in both
> > kernels).
> >
> > Are such renames really not allowed, or was it just fixed differently?
>
> Such remames are _deliberately_ not allowed.
>

because that would be against semantics of a mounted filesystem?
(which, in turn, would break something)


2003-05-06 14:18:35

by Al Viro

[permalink] [raw]
Subject: Re: Fwd: allow rename to "--bind"-mounted filesystem

On Tue, May 06, 2003 at 12:04:35PM +0200, Alex Riesen wrote:
> Hi,
> i just came over this patch, and wondered why is it missing
> in both 2.4 and 2.5 (the code in do_rename is identical in both
> kernels).
>
> Are such renames really not allowed, or was it just fixed differently?

Such remames are _deliberately_ not allowed.

2003-05-06 14:49:56

by Al Viro

[permalink] [raw]
Subject: Re: Fwd: allow rename to "--bind"-mounted filesystem

On Tue, May 06, 2003 at 04:34:59PM +0200, Alex Riesen wrote:
> [email protected], Tue, May 06, 2003 16:30:26 +0200:
> > On Tue, May 06, 2003 at 12:04:35PM +0200, Alex Riesen wrote:
> > > Hi,
> > > i just came over this patch, and wondered why is it missing
> > > in both 2.4 and 2.5 (the code in do_rename is identical in both
> > > kernels).
> > >
> > > Are such renames really not allowed, or was it just fixed differently?
> >
> > Such remames are _deliberately_ not allowed.
> >
>
> because that would be against semantics of a mounted filesystem?
> (which, in turn, would break something)

Binding a subtree creates a sandbox of sorts. You can bind a bunch of
subtrees of the same fs into namespace and have normal protection
against rename and link between them.

2003-05-06 14:57:00

by Alex Riesen

[permalink] [raw]
Subject: Re: Fwd: allow rename to "--bind"-mounted filesystem

[email protected], Tue, May 06, 2003 17:02:19 +0200:
> On Tue, May 06, 2003 at 04:34:59PM +0200, Alex Riesen wrote:
> > [email protected], Tue, May 06, 2003 16:30:26 +0200:
> > > On Tue, May 06, 2003 at 12:04:35PM +0200, Alex Riesen wrote:
> > > > i just came over this patch, and wondered why is it missing in
> > > > both 2.4 and 2.5 (the code in do_rename is identical in both
> > > > kernels).
> > > >
> > > > Are such renames really not allowed, or was it just fixed
> > > > differently?
> > >
> > > Such remames are _deliberately_ not allowed.
> >
> > because that would be against semantics of a mounted filesystem?
> > (which, in turn, would break something)
>
> Binding a subtree creates a sandbox of sorts. You can bind a bunch of
> subtrees of the same fs into namespace and have normal protection
> against rename and link between them.

sounds useful, even though i can't think of real example of such a use :)

Thank you, that clarifies the behaviour, at least to me.

2003-05-06 16:01:38

by Carl-Daniel Hailfinger

[permalink] [raw]
Subject: Re: Fwd: allow rename to "--bind"-mounted filesystem

Alex Riesen wrote:
> [email protected], Tue, May 06, 2003 17:02:19 +0200:

>>Binding a subtree creates a sandbox of sorts. You can bind a bunch of
>>subtrees of the same fs into namespace and have normal protection
>>against rename and link between them.
>
> sounds useful, even though i can't think of real example of such a use :)

chroot? As Al said, you create a sandbox this way. Saved me more than
once from stupid mistakes.

Carl-Daniel