From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Dietsche Subject: Re: [PATCH] 2.5.50: unused code in link_path_walk() Date: Fri, 06 Dec 2002 17:52:13 +0100 Sender: linux-fsdevel-owner@vger.kernel.org Message-ID: <87of7zqede.fsf@goat.bogus.local> References: <20021206161519.A16341@parcelfarce.linux.theplanet.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Return-path: To: Matthew Wilcox List-Id: linux-fsdevel.vger.kernel.org Matthew Wilcox writes: > @@ -700,7 +700,6 @@ > if (this.name[1] != '.') > break; > follow_dotdot(&nd->mnt, &nd->dentry); > - inode = nd->dentry->d_inode; > /* fallthrough */ > case 1: > goto return_base; > > seems broken to me. if follow_dotdot() changes nd->dentry (can happen!), > inode needs to be changed. look: > > inode = nd->dentry->d_inode; > for(;;) { > err = exec_permission_lite(inode); > if (this.name[0] == '.') switch (this.len) { > case 2: > if (this.name[1] != '.') > break; > follow_dotdot(&nd->mnt, &nd->dentry); > inode = nd->dentry->d_inode; > /* fallthrough */ > case 1: > continue; > } > } You looked at the _first_ switch statement. You must go further down to the _second_ switch. *There*, you don't need this assignment, AFAICS. > btw, you should cc linux-fsdevel for patches to the VFS. Thanks for this pointer, I'll spam linux-fsdevel in the future ;-). Regards, Olaf.