*** namei-current.c	Mon Aug 14 12:04:35 2000
--- namei.c	Mon Aug 14 11:38:42 2000
***************
*** 31,36 ****
--- 31,37 ----
  #include <asm/namei.h>
  
  #define ACC_MODE(x) ("\000\004\002\006"[(x)&O_ACCMODE])
+ #define MAX_LINK_DEPTH 8
  
  /* [Feb-1997 T. Schoebel-Theuer]
   * Fundamental changes in the pathname lookup mechanisms (namei)
***************
*** 307,313 ****
  static inline int do_follow_link(struct dentry *dentry, struct nameidata *nd)
  {
  	int err;
! 	if (current->link_count >= 8)
  		goto loop;
  	current->link_count++;
  	UPDATE_ATIME(dentry->d_inode);
--- 308,314 ----
  static inline int do_follow_link(struct dentry *dentry, struct nameidata *nd)
  {
  	int err;
! 	if (current->link_count >= MAX_LINK_DEPTH)
  		goto loop;
  	current->link_count++;
  	UPDATE_ATIME(dentry->d_inode);
***************
*** 1006,1012 ****
  		error = -ELOOP;
  		if (flag & O_NOFOLLOW)
  			goto exit_dput;
! 		do __follow_down(&nd->mnt,&dentry); while(d_mountpoint(dentry));
  	}
  	error = -ENOENT;
  	if (!dentry->d_inode)
--- 1007,1014 ----
  		error = -ELOOP;
  		if (flag & O_NOFOLLOW)
  			goto exit_dput;
!               while (__follow_down(&nd->mnt,&dentry) && d_mountpoint(dentry))
!                     ;
  	}
  	error = -ENOENT;
  	if (!dentry->d_inode)
***************
*** 1125,1134 ****
  		putname(nd->last.name);
  		goto exit;
  	}
! 	if (count++==32) {
  		dentry = nd->dentry;
  		putname(nd->last.name);
! 		goto ok;
  	}
  	dir = nd->dentry;
  	down(&dir->d_inode->i_sem);
--- 1127,1137 ----
  		putname(nd->last.name);
  		goto exit;
  	}
!       error = -ELOOP;
! 	if (count++ >= MAX_LINK_DEPTH) {
  		dentry = nd->dentry;
  		putname(nd->last.name);
! 		goto exit;
  	}
  	dir = nd->dentry;
  	down(&dir->d_inode->i_sem);



