To prevent symbolic links linking back to themselves and causing an infinite loop in the kernel, the kernel stops after a certain number of symbolic links have been followed with ELOOP. This doesn't necessarily mean that there is a loop, but that there are too many symbolic links encountered.
The maximum number of symbolic links followed is currently 5 (with Linux 2.4.27). To match other operating systems with higher limits (e. g. Solaris 9 with 20, FreeBSD 5.3 with 32), there is ongoing work to increase that limit.
In linux kernel 2.6.9, fs/namei.h contains the following:
enum { MAX_NESTED_LINKS = 5 };
and fs/namei.c contains the following:
... static inline int do_follow_link(struct dentry *dentry, struct nameidata *nd) { int err = -ELOOP; if (current->link_count >= MAX_NESTED_LINKS) goto loop; if (current->total_link_count >= 40) goto loop; ...
error = -ELOOP; if (count++==32) { putname(nd->last.name); goto exit; }
20 pages link to ELOOP:
lib/plugin/WlugLicense.php:99: Warning: Invalid argument supplied for foreach()
lib/plugin/WlugLicense.php:111: Warning: in_array() [<a href='function.in-array'>function.in-array</a>]: Wrong datatype for second argument