aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu/fs
diff options
context:
space:
mode:
authorDon Lewis <truckman@FreeBSD.org>2006-01-04 19:32:00 +0000
committerDon Lewis <truckman@FreeBSD.org>2006-01-04 19:32:00 +0000
commitbb86a9851693d777e99016f53dc7960719c10626 (patch)
treee4f9a7c334deb5c614ad55fdd88b3557b266152e /sys/gnu/fs
parent5696e2601e2933614b89fb2d1e309a010dbf9415 (diff)
Notes
Diffstat (limited to 'sys/gnu/fs')
-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);