aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu
diff options
context:
space:
mode:
authorDon Lewis <truckman@FreeBSD.org>2005-10-16 21:39:29 +0000
committerDon Lewis <truckman@FreeBSD.org>2005-10-16 21:39:29 +0000
commit9e4ce0ae8fd2c146e16d12c369f3fd41aecc5053 (patch)
tree95870005119797db26c620bcb19d213c1d52d3a0 /sys/gnu
parent875e1087559dae3a411d98f583464c7dcddd01d9 (diff)
Notes
Diffstat (limited to 'sys/gnu')
-rw-r--r--sys/gnu/fs/ext2fs/ext2_lookup.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/gnu/fs/ext2fs/ext2_lookup.c b/sys/gnu/fs/ext2fs/ext2_lookup.c
index a23887860c9a..d057e2a9d079 100644
--- a/sys/gnu/fs/ext2fs/ext2_lookup.c
+++ b/sys/gnu/fs/ext2fs/ext2_lookup.c
@@ -319,6 +319,7 @@ ext2_lookup(ap)
int flags = cnp->cn_flags;
int nameiop = cnp->cn_nameiop;
struct thread *td = cnp->cn_thread;
+ ino_t saved_ino;
int DIRBLKSIZ = VTOI(ap->a_dvp)->i_e2fs->s_blocksize;
@@ -655,8 +656,9 @@ found:
*/
pdp = vdp;
if (flags & ISDOTDOT) {
+ saved_ino = dp->i_ino;
VOP_UNLOCK(pdp, 0, td); /* race to get the inode */
- error = VFS_VGET(vdp->v_mount, dp->i_ino, LK_EXCLUSIVE, &tdp);
+ error = VFS_VGET(vdp->v_mount, saved_ino, LK_EXCLUSIVE, &tdp);
vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY, td);
if (error != 0)
return (error);