linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [git pull] VFS - the first pile
@ 2011-03-15 21:32 Al Viro
  2011-03-15 22:02 ` Sam Ravnborg
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Al Viro @ 2011-03-15 21:32 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-fsdevel

	Let's try to start pushing early in the window this time...
There are several big ones in that:
	* pathname resolution rewrite: trailing symlink resolution is
iterative in all cases, overall structure simplified a _lot_, do_lookup()
turned into something readable, knowledge of RCU stuff localized, do_last()
returned to handling non-create cases as well, NEED_REVAL_DOT got a lot
saner.
	* open-by-fhandle series by Aneesh
	* O_PATH descriptors (basically, "location in namespace, not actually
opened from fs POV, can be dup'ed/passed around/etc. and used as starting
points in ...at(2) kind of syscalls, but not used for any IO; that stuff
allows to do sane pathname resolution in userland and avoids the need to
add fsckloads of extra syscalls in open-by-fhandle series).

There will be more pull requests; this is just taking care of really
heavy-weight stuff.

Please, pull from
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6.git/ for-linus

Shortlog:
Al Viro (45):
      compat breakage in preadv() and pwritev()
      fix race in audit_get_nd()
      kill path_lookup()
      take RCU-dependent stuff around exec_permission() into a new helper
      sanitize path_walk() mess
      merge path_init and path_init_rcu
      merge component type recognition
      untangle the "need_reval_dot" mess
      pull dropping RCU on success of link_path_walk() into path_lookupat()
      pull security_inode_follow_link() into __do_follow_link()
      clean up the failure exits after __do_follow_link() in do_filp_open()
      Collect "operation mode" arguments of do_last() into a structure
      switch do_filp_open() to struct open_flags
      separate -ESTALE/-ECHILD retries in do_filp_open() from real work
      kill out_dput: in link_path_walk()
      pull handling of . and .. into inlined helper
      clear RCU on all failure exits from link_path_walk()
      make handle_dots() leave RCU mode on error
      make nameidata_dentry_drop_rcu_maybe() always leave RCU mode
      get rid of the last LOOKUP_RCU dependencies in link_path_walk()
      get rid of nd->file
      switch non-create side of open() to use of do_last()
      kill __lookup_one_len()
      sanitize pathname component hash calculation
      expand finish_open() in its only caller
      move may_open() from __open_name_create() to do_last()
      do_last: unify may_open() call and everyting after it
      fold __open_namei_create() and open_will_truncate() into do_last()
      do_last: kill a rudiment of old ->d_revalidate() workaround
      path_openat: clean ELOOP handling a bit
      untangle do_lookup()
      reduce vfs_path_lookup() to do_path_lookup()
      open-style analog of vfs_path_lookup()
      clean statfs-like syscalls up
      New AT_... flag: AT_EMPTY_PATH
      New kind of open files - "location only".
      Allow O_PATH for symlinks
      readlinkat(), fchownat() and fstatat() with empty relative pathnames
      Allow passing O_PATH descriptors via SCM_RIGHTS datagrams
      pull handling of one pathname component into a helper
      update nd->inode in __do_follow_link() instead of after do_follow_link()
      Make trailing symlink resolution in path_lookupat() iterative
      simplify link_path_walk() tail
      Turn resolution of trailing symlinks iterative everywhere
      tidy the trailing symlinks traversal up

Aneesh Kumar K.V (12):
      exportfs: Return the minimum required handle size
      vfs: Add name to file handle conversion support
      vfs: Add open by file handle support
      fs: Don't allow to create hardlink for deleted file
      fs: Remove i_nlink check from file system link callback
      x86: Add new syscalls for x86_32
      x86: Add new syscalls for x86_64
      unistd.h: Add new syscalls numbers to asm-generic
      vfs: Export file system uuid via /proc/<pid>/mountinfo
      ext3: Copy fs UUID to superblock.
      ext4: Copy fs UUID to superblock
      fs: allow AT_EMPTY_PATH in linkat(), limit that to CAP_DAC_READ_SEARCH

Diffstat:
 arch/alpha/kernel/osf_sys.c                  |   36 +-
 arch/parisc/hpux/sys_hpux.c                  |   65 +-
 arch/powerpc/platforms/cell/spufs/syscalls.c |    2 +-
 arch/um/drivers/mconsole_kern.c              |   21 +-
 arch/x86/ia32/ia32entry.S                    |    2 +
 arch/x86/include/asm/unistd_32.h             |    4 +-
 arch/x86/include/asm/unistd_64.h             |    4 +
 arch/x86/kernel/syscall_table_32.S           |    2 +
 fs/Kconfig                                   |    2 +-
 fs/Makefile                                  |    2 +
 fs/btrfs/export.c                            |    8 +-
 fs/btrfs/inode.c                             |    3 -
 fs/compat.c                                  |   69 +-
 fs/exec.c                                    |   18 +-
 fs/exportfs/expfs.c                          |   11 +-
 fs/ext3/namei.c                              |    7 -
 fs/ext3/super.c                              |    1 +
 fs/ext4/namei.c                              |    7 -
 fs/ext4/super.c                              |    2 +
 fs/fat/inode.c                               |    4 +-
 fs/fcntl.c                                   |   37 +-
 fs/fhandle.c                                 |  265 +++++
 fs/file_table.c                              |   55 +-
 fs/fuse/inode.c                              |    4 +-
 fs/gfs2/export.c                             |    8 +-
 fs/internal.h                                |   13 +
 fs/isofs/export.c                            |    8 +-
 fs/jfs/namei.c                               |    3 -
 fs/namei.c                                   | 1498 +++++++++++---------------
 fs/namespace.c                               |   16 +
 fs/nfsctl.c                                  |   21 +-
 fs/ocfs2/export.c                            |    8 +-
 fs/ocfs2/refcounttree.c                      |    2 +-
 fs/open.c                                    |  126 ++-
 fs/reiserfs/inode.c                          |    7 +-
 fs/reiserfs/namei.c                          |    4 -
 fs/stat.c                                    |    7 +-
 fs/statfs.c                                  |  176 ++--
 fs/ubifs/dir.c                               |   18 -
 fs/udf/namei.c                               |    7 +-
 fs/xfs/linux-2.6/xfs_export.c                |    4 +-
 include/asm-generic/fcntl.h                  |    4 +
 include/asm-generic/unistd.h                 |    6 +-
 include/linux/exportfs.h                     |    9 +-
 include/linux/fcntl.h                        |    1 +
 include/linux/file.h                         |    2 +
 include/linux/fs.h                           |   19 +-
 include/linux/namei.h                        |    7 +-
 include/linux/syscalls.h                     |    8 +-
 init/Kconfig                                 |   12 +
 kernel/audit_watch.c                         |   85 +-
 kernel/sys_ni.c                              |    5 +
 kernel/sysctl_binary.c                       |   19 +-
 mm/shmem.c                                   |    4 +-
 net/core/scm.c                               |    2 +-
 net/unix/af_unix.c                           |    2 +-
 net/unix/garbage.c                           |    2 +-
 57 files changed, 1489 insertions(+), 1255 deletions(-)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 21:32 [git pull] VFS - the first pile Al Viro
@ 2011-03-15 22:02 ` Sam Ravnborg
  2011-03-15 22:18 ` Al Viro
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 14+ messages in thread
From: Sam Ravnborg @ 2011-03-15 22:02 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

Hi Al.

> Shortlog:
> Al Viro (45):
>       compat breakage in preadv() and pwritev()
>       fix race in audit_get_nd()
>       kill path_lookup()
....

It would be nice if you could start to prefix your
changelog message with the sub-system they touch.

In an attempt to try to use the language you understand...

Why the hell do you continue making it so freaking difficult
to see what sub-system your patchs touches.
All sane thinking persons has long since learned to prefix their
changelogs with for example "vfs: bla bla" so sane humans
has a chance to realize what they touches.
You could probarly do better than this :-)

	Sam

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 21:32 [git pull] VFS - the first pile Al Viro
  2011-03-15 22:02 ` Sam Ravnborg
@ 2011-03-15 22:18 ` Al Viro
  2011-03-15 22:47   ` Linus Torvalds
  2011-03-16  6:19 ` Dave Chinner
  2011-03-16 13:05 ` Christoph Hellwig
  3 siblings, 1 reply; 14+ messages in thread
From: Al Viro @ 2011-03-15 22:18 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-fsdevel

On Tue, Mar 15, 2011 at 09:32:48PM +0000, Al Viro wrote:
> Shortlog:
> Al Viro (45):
>       compat breakage in preadv() and pwritev()

BTW, a question about rebases: is that kind of situation worth doing
a rebase of the queue/backmerge/etc.?

This commit sits in the base of that branch, with branchpoint at Mar 10;
the same thing had been applied in mainline at Mar 13.  git merge does,
of course, handle it just fine; I guess I should've posted a pull request
back then instead of posting the patch - to be honest, I hadn't thought
about that.

What's the prefered way of dealing with such situations?  Leave as is?
Rebase at the point where the patch went into mainline?  Something else?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 22:18 ` Al Viro
@ 2011-03-15 22:47   ` Linus Torvalds
  2011-03-15 23:02     ` Al Viro
  0 siblings, 1 reply; 14+ messages in thread
From: Linus Torvalds @ 2011-03-15 22:47 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-kernel, linux-fsdevel

On Tue, Mar 15, 2011 at 3:18 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
>
> BTW, a question about rebases: is that kind of situation worth doing
> a rebase of the queue/backmerge/etc.?

No. If it's the same patch I already applied, it will generally merge
cleanly, it's better to leave in the history than to rewrite things
just to avoid some trivial duplication.

                   Linus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 22:47   ` Linus Torvalds
@ 2011-03-15 23:02     ` Al Viro
  0 siblings, 0 replies; 14+ messages in thread
From: Al Viro @ 2011-03-15 23:02 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-fsdevel

On Tue, Mar 15, 2011 at 03:47:55PM -0700, Linus Torvalds wrote:
> On Tue, Mar 15, 2011 at 3:18 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> >
> > BTW, a question about rebases: is that kind of situation worth doing
> > a rebase of the queue/backmerge/etc.?
> 
> No. If it's the same patch I already applied, it will generally merge
> cleanly, it's better to leave in the history than to rewrite things
> just to avoid some trivial duplication.

It is and it does.  OK, then...

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 21:32 [git pull] VFS - the first pile Al Viro
  2011-03-15 22:02 ` Sam Ravnborg
  2011-03-15 22:18 ` Al Viro
@ 2011-03-16  6:19 ` Dave Chinner
  2011-03-16  6:51   ` Al Viro
  2011-03-16 13:05 ` Christoph Hellwig
  3 siblings, 1 reply; 14+ messages in thread
From: Dave Chinner @ 2011-03-16  6:19 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

On Tue, Mar 15, 2011 at 09:32:48PM +0000, Al Viro wrote:
> 	Let's try to start pushing early in the window this time...
> There are several big ones in that:
> 	* pathname resolution rewrite: trailing symlink resolution is
> iterative in all cases, overall structure simplified a _lot_, do_lookup()
> turned into something readable, knowledge of RCU stuff localized, do_last()
> returned to handling non-create cases as well, NEED_REVAL_DOT got a lot
> saner.
> 	* open-by-fhandle series by Aneesh
> 	* O_PATH descriptors (basically, "location in namespace, not actually
> opened from fs POV, can be dup'ed/passed around/etc. and used as starting
> points in ...at(2) kind of syscalls, but not used for any IO; that stuff
> allows to do sane pathname resolution in userland and avoids the need to
> add fsckloads of extra syscalls in open-by-fhandle series).
> 
> There will be more pull requests; this is just taking care of really
> heavy-weight stuff.
> 
> Please, pull from
> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6.git/ for-linus

I think there's something not quite right in this tree. xfstests 005
(nested symlink test) fails on both ext4 and XFS with the following:

[   47.457457] EXT4-fs (vda): mounted filesystem with ordered data mode. Opts: acl,user_xattr
[   48.694685] ------------[ cut here ]------------
[   48.695168] kernel BUG at fs/dcache.c:436!
[   48.695568] invalid opcode: 0000 [#1] SMP 
[   48.695997] last sysfs file: /sys/devices/pci0000:00/0000:00:05.0/virtio2/block/vdb/removable
[   48.696835] CPU 0 
[   48.697021] Modules linked in:
[   48.697332] 
[   48.697332] Pid: 5851, comm: ln Not tainted 2.6.38-dgc+ #1096 Bochs Bochs
[   48.697332] RIP: 0010:[<ffffffff8118141a>]  [<ffffffff8118141a>] dput+0x28a/0x290
[   48.697332] RSP: 0018:ffff880079cf9ca8  EFLAGS: 00010246
[   48.697332] RAX: 0000000000000000 RBX: ffff8800710c38b0 RCX: 0000000000000000
[   48.697332] RDX: ffff88007f20ed20 RSI: ffff8800710c3928 RDI: 0000000000000246
[   48.697332] RBP: ffff880079cf9cd8 R08: 0000000000000000 R09: 0000000000000000
[   48.697332] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffffffffd8
[   48.697332] R13: ffff880079cde4c0 R14: ffff8800710c3910 R15: 0000000000000001
[   48.697332] FS:  00007fba3bcaf700(0000) GS:ffff88007f200000(0000) knlGS:0000000000000000
[   48.697332] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   48.697332] CR2: 00007fba3b8047d0 CR3: 0000000078415000 CR4: 00000000000006f0
[   48.697332] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[   48.697332] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[   48.697332] Process ln (pid: 5851, threadinfo ffff880079cf8000, task ffff880079cde4c0)
[   48.697332] Stack:
[   48.697332]  ffff880079cf9dd8 ffff880079cf9d38 ffffffffffffffd8 ffff880079cde4c0
[   48.697332]  ffffffffffffffd8 0000000000000001 ffff880079cf9cf8 ffffffff8117352a
[   48.697332]  ffff880079cf9dd8 ffff880079cf9dd8 ffff880079cf9d98 ffffffff8117796b
[   48.697332] Call Trace:
[   48.697332]  [<ffffffff8117352a>] path_put+0x1a/0x30
[   48.697332]  [<ffffffff8117796b>] path_lookupat+0x2cb/0x770
[   48.697332]  [<ffffffff81177e43>] do_path_lookup+0x33/0x80
[   48.697332]  [<ffffffff81178ac9>] user_path_at+0x59/0xb0
[   48.697332]  [<ffffffff81b434a0>] ? do_page_fault+0x230/0x4e0
[   48.697332]  [<ffffffff8116d83c>] vfs_fstatat+0x4c/0x90
[   48.697332]  [<ffffffff8116d9ab>] vfs_stat+0x1b/0x20
[   48.697332]  [<ffffffff8116d9d4>] sys_newstat+0x24/0x50
[   48.697332]  [<ffffffff81b3eb09>] ? trace_hardirqs_on_thunk+0x3a/0x3f
[   48.697332]  [<ffffffff8103cf42>] system_call_fastpath+0x16/0x1b
[   48.697332] Code: 48 89 93 d0 00 00 00 4c 89 a0 d8 01 00 00 48 8b 83 b0 00 00 00 ff 80 e8 01 00 00 ff 05 54 4a df 00 e8 6b e4 9b 00 e9 77 fe ff ff <0f> 0b eb fe 66  
[   48.697332] RIP  [<ffffffff8118141a>] dput+0x28a/0x290
[   48.697332]  RSP <ffff880079cf9ca8>
[   48.719193] ---[ end trace bdba6e6dd185beb8 ]---

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16  6:19 ` Dave Chinner
@ 2011-03-16  6:51   ` Al Viro
  2011-03-16  7:21     ` Al Viro
  0 siblings, 1 reply; 14+ messages in thread
From: Al Viro @ 2011-03-16  6:51 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

On Wed, Mar 16, 2011 at 05:19:17PM +1100, Dave Chinner wrote:
> I think there's something not quite right in this tree. xfstests 005
> (nested symlink test) fails on both ext4 and XFS with the following:

Yeah...  Brown paperbag time - it's actually a missing piece that
got glued with a commit a bit later in queue ;-/  I've dropped it
into for-linus for the morning push; in the meanwhile, the patch is
below.

diff --git a/fs/namei.c b/fs/namei.c
index 0a601ca..b912b7a 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -753,9 +753,11 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
 
 	BUG_ON(nd->flags & LOOKUP_RCU);
 
+	if (link->mnt == nd->path.mnt)
+		mntget(link->mnt);
+
 	if (unlikely(current->total_link_count >= 40)) {
 		*p = ERR_PTR(-ELOOP); /* no ->put_link(), please */
-		path_put_conditional(link, nd);
 		path_put(&nd->path);
 		return -ELOOP;
 	}
@@ -765,9 +767,6 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
 	touch_atime(link->mnt, dentry);
 	nd_set_link(nd, NULL);
 
-	if (link->mnt == nd->path.mnt)
-		mntget(link->mnt);
-
 	error = security_inode_follow_link(link->dentry, nd);
 	if (error) {
 		*p = ERR_PTR(error); /* no ->put_link(), please */

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16  6:51   ` Al Viro
@ 2011-03-16  7:21     ` Al Viro
  2011-03-16 11:46       ` Theodore Tso
  0 siblings, 1 reply; 14+ messages in thread
From: Al Viro @ 2011-03-16  7:21 UTC (permalink / raw)
  To: Dave Chinner; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

On Wed, Mar 16, 2011 at 06:51:03AM +0000, Al Viro wrote:
> On Wed, Mar 16, 2011 at 05:19:17PM +1100, Dave Chinner wrote:
> > I think there's something not quite right in this tree. xfstests 005
> > (nested symlink test) fails on both ext4 and XFS with the following:
> 
> Yeah...  Brown paperbag time - it's actually a missing piece that
> got glued with a commit a bit later in queue ;-/  I've dropped it
> into for-linus for the morning push; in the meanwhile, the patch is
> below.

BTW, you want to update 005 in there - we are back to correct "maximum
is 40 symlinks total, 8 levels on nesting" for all syscalls.  Add the
41st symlink to your chain in testcase ;-)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16  7:21     ` Al Viro
@ 2011-03-16 11:46       ` Theodore Tso
  2011-03-16 13:07         ` Christoph Hellwig
  0 siblings, 1 reply; 14+ messages in thread
From: Theodore Tso @ 2011-03-16 11:46 UTC (permalink / raw)
  To: Al Viro; +Cc: Dave Chinner, Linus Torvalds, linux-kernel, linux-fsdevel


On Mar 16, 2011, at 3:21 AM, Al Viro wrote:

> BTW, you want to update 005 in there - we are back to correct "maximum
> is 40 symlinks total, 8 levels on nesting" for all syscalls.  Add the
> 41st symlink to your chain in testcase ;-)

Unless there's a way to read out these limits, I'm not sure it's a good idea
to add a test like that to xfstests --- it's too fragile since at some point
we might change what those limits might be.

Also, xfstests is primarily intended to be a file system level stress tester
testing for correctness, and issues of whether we blow up on the 40th, 
41st, or 42nd symlink seems more like an ABI issue --- and even there I'm
not sure the ABI specification should be quite that detailed over what's
allowed and not allowed.

-- Ted


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-15 21:32 [git pull] VFS - the first pile Al Viro
                   ` (2 preceding siblings ...)
  2011-03-16  6:19 ` Dave Chinner
@ 2011-03-16 13:05 ` Christoph Hellwig
  2011-03-16 13:10   ` Christoph Hellwig
  3 siblings, 1 reply; 14+ messages in thread
From: Christoph Hellwig @ 2011-03-16 13:05 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

This blows up on xfstests 005 for me:

005 0s ...
[   25.075985] ------------[ cut here ]------------
[   25.076043] kernel BUG at /home/hch/work/linux-2.6/fs/dcache.c:440!
[   25.076043] invalid opcode: 0000 [#1] SMP 
[   25.076043] last sysfs file: /sys/devices/pci0000:00/0000:00:05.0/virtio1/block/vdb/removable
[   25.076043] Modules linked in:
[   25.076043] 
[   25.076043] Pid: 6263, comm: touch Not tainted 2.6.38+ #77 Bochs Bochs
[   25.076043] EIP: 0060:[<c021d36e>] EFLAGS: 00010246 CPU: 0
[   25.076043] EIP is at dput+0x22e/0x240
[   25.076043] EAX: 00000000 EBX: f54b9f14 ECX: 00000000 EDX: 00005959
[   25.076043] ESI: ffffffd8 EDI: ffffffd8 EBP: f5361e84 ESP: f5361e68
[   25.076043]  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[   25.076043] Process touch (pid: 6263, ti=f5360000 task=f59c23f0 task.ti=f5360000)
[   25.076043] Stack:
[   25.076043]  0000000c f54b9f14 f5361eec f54b9f60 f5361eb8 ffffffd8 ffffffd8 f5361e90
[   25.076043]  c02129ce f5361eec f5361ed8 c0215702 f644d000 f5361ec8 f5361f78 f644d000
[   25.076043]  f59c23f0 f5361f00 f59c23f0 c04c0aa0 f5a18180 f54b9f14 f5a18180 f54b9f14
[   25.076043] Call Trace:
[   25.076043]  [<c02129ce>] path_put+0xe/0x20
[   25.076043]  [<c0215702>] path_openat+0x1d2/0x310
[   25.076043]  [<c04c0aa0>] ? xfs_vn_put_link+0x0/0x20
[   25.076043]  [<c0215920>] do_filp_open+0x30/0x80
[   25.076043]  [<c02205cc>] ? alloc_fd+0x6c/0xf0
[   25.076043]  [<c0213171>] ? getname_flags+0x61/0xe0
[   25.076043]  [<c020915b>] do_sys_open+0xeb/0x1c0
[   25.076043]  [<c0209299>] sys_open+0x29/0x40
[   25.076043]  [<c08f62b9>] syscall_call+0x7/0xb
[   25.076043] Code: 89 72 04 89 53 60 8d 50 7c 89 53 64 89 70 7c 8b 43 54 83 80 84 00 00 00 01 83 05 a8 32 c4 c0 01 fe 05 00 4c c3 c0 e9 8b fe ff ff <0f> 0b eb fe 8d b4 26 00 00 00 00 8d bc 27 00 00 00 00 55 89 e5 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16 11:46       ` Theodore Tso
@ 2011-03-16 13:07         ` Christoph Hellwig
  2011-03-16 13:15           ` Al Viro
  0 siblings, 1 reply; 14+ messages in thread
From: Christoph Hellwig @ 2011-03-16 13:07 UTC (permalink / raw)
  To: Theodore Tso
  Cc: Al Viro, Dave Chinner, Linus Torvalds, linux-kernel,
	linux-fsdevel

On Wed, Mar 16, 2011 at 07:46:40AM -0400, Theodore Tso wrote:
> 
> On Mar 16, 2011, at 3:21 AM, Al Viro wrote:
> 
> > BTW, you want to update 005 in there - we are back to correct "maximum
> > is 40 symlinks total, 8 levels on nesting" for all syscalls.  Add the
> > 41st symlink to your chain in testcase ;-)
> 
> Unless there's a way to read out these limits, I'm not sure it's a good idea
> to add a test like that to xfstests --- it's too fragile since at some point
> we might change what those limits might be.
> 
> Also, xfstests is primarily intended to be a file system level stress tester
> testing for correctness, and issues of whether we blow up on the 40th, 
> 41st, or 42nd symlink seems more like an ABI issue --- and even there I'm
> not sure the ABI specification should be quite that detailed over what's
> allowed and not allowed.

That's not what it tests anyway.  It tests that we get ELOOP at some
point, and do not blow the stack.  Which is someting that older Linux
code used to do.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16 13:05 ` Christoph Hellwig
@ 2011-03-16 13:10   ` Christoph Hellwig
  0 siblings, 0 replies; 14+ messages in thread
From: Christoph Hellwig @ 2011-03-16 13:10 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-kernel, linux-fsdevel

On Wed, Mar 16, 2011 at 09:05:04AM -0400, Christoph Hellwig wrote:
> This blows up on xfstests 005 for me:

Discard it - I saw Dave already posted it.


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16 13:07         ` Christoph Hellwig
@ 2011-03-16 13:15           ` Al Viro
  2011-03-16 13:18             ` Christoph Hellwig
  0 siblings, 1 reply; 14+ messages in thread
From: Al Viro @ 2011-03-16 13:15 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Theodore Tso, Dave Chinner, Linus Torvalds, linux-kernel,
	linux-fsdevel

On Wed, Mar 16, 2011 at 09:07:28AM -0400, Christoph Hellwig wrote:
> On Wed, Mar 16, 2011 at 07:46:40AM -0400, Theodore Tso wrote:
> > 
> > On Mar 16, 2011, at 3:21 AM, Al Viro wrote:
> > 
> > > BTW, you want to update 005 in there - we are back to correct "maximum
> > > is 40 symlinks total, 8 levels on nesting" for all syscalls.  Add the
> > > 41st symlink to your chain in testcase ;-)
> > 
> > Unless there's a way to read out these limits, I'm not sure it's a good idea
> > to add a test like that to xfstests --- it's too fragile since at some point
> > we might change what those limits might be.
> > 
> > Also, xfstests is primarily intended to be a file system level stress tester
> > testing for correctness, and issues of whether we blow up on the 40th, 
> > 41st, or 42nd symlink seems more like an ABI issue --- and even there I'm
> > not sure the ABI specification should be quite that detailed over what's
> > allowed and not allowed.
> 
> That's not what it tests anyway.  It tests that we get ELOOP at some
> point, and do not blow the stack.  Which is someting that older Linux
> code used to do.

Yes.  See patch upthread (or in for-linus).  There are two parts in that
test; *both* would actually trigger the b0rkage in the last commit of
what got merged - the only reason why the first one (long chain) did not
was that the limit got fixed and -ELOOP was no longer triggered.  Symlink
to itself did, of course, trigger it - complete with oops.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [git pull] VFS - the first pile
  2011-03-16 13:15           ` Al Viro
@ 2011-03-16 13:18             ` Christoph Hellwig
  0 siblings, 0 replies; 14+ messages in thread
From: Christoph Hellwig @ 2011-03-16 13:18 UTC (permalink / raw)
  To: Al Viro
  Cc: Christoph Hellwig, Theodore Tso, Dave Chinner, Linus Torvalds,
	linux-kernel, linux-fsdevel

On Wed, Mar 16, 2011 at 01:15:02PM +0000, Al Viro wrote:
> Yes.  See patch upthread (or in for-linus).  There are two parts in that
> test; *both* would actually trigger the b0rkage in the last commit of
> what got merged - the only reason why the first one (long chain) did not
> was that the limit got fixed and -ELOOP was no longer triggered.  Symlink
> to itself did, of course, trigger it - complete with oops.

Yes.  I have a patch to increase the limit tested in 005 and it now
passes fine.


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-03-16 13:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-15 21:32 [git pull] VFS - the first pile Al Viro
2011-03-15 22:02 ` Sam Ravnborg
2011-03-15 22:18 ` Al Viro
2011-03-15 22:47   ` Linus Torvalds
2011-03-15 23:02     ` Al Viro
2011-03-16  6:19 ` Dave Chinner
2011-03-16  6:51   ` Al Viro
2011-03-16  7:21     ` Al Viro
2011-03-16 11:46       ` Theodore Tso
2011-03-16 13:07         ` Christoph Hellwig
2011-03-16 13:15           ` Al Viro
2011-03-16 13:18             ` Christoph Hellwig
2011-03-16 13:05 ` Christoph Hellwig
2011-03-16 13:10   ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).