Re: max symlink = 5? ?bug? ?feature deficit?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That limit should be a *recursion* limit only.
Symlinks in the last component of a path are looked up
iteratively (to save kernel stack space), but a symlink in
the middle of a path can't be done tail-recursively.

E.g. in your example

 > namei cpu/args.t
f: cpu/args.t
 d cpu
 l args.t -> ../op/args.t
   d ..
   l op -> ../t/op/
     d ..
     l t -> perldir/t
       l perldir -> perl-5.8.6
         l perl-5.8.6 -> ../build/perl-5.8.6
           d ..
           l build -> BUILD
             d BUILD
           d perl-5.8.6
       d t
     d op
   - args.t

Wow, what a symlink maze.  The args.t -> ../op/args.t
symlink is no problems, but it's the mess of directory links
that the system has to traverse:

cpu/args.t
cpu/../op/args.t		Tail-recursive expansion
cpu/../(../t/op)/args.t
cpu/../(../(perldir/t)/op)/args.t
cpu/../(../((perl-5.8.6)/t)/op)/args.t
cpu/../(../((../build/perl-5.8.6)/t)/op)/args.t
cpu/../(../((../(BUILD)/perl-5.8.6)/t)/op)/args.t

I'm supposing the initial level counts as 1, so 1+5 = 6 and blows the
limit.

There's also an iteration limit, to stop a -> b -> c -> a cycles,
but that's much higher.  The recursion limit is a stack space issue.
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux