aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>2000-11-04 08:10:56 +0000
committerBruce Evans <bde@FreeBSD.org>2000-11-04 08:10:56 +0000
commit1c1752872f0b5a55c89a940ccd2c9e0fe7f5cd3a (patch)
treec87a5d0458befae0650a31b2d233097db8ed3b53 /sys/gnu
parentaf6f98bd1073818205d46a3d7587d91a64035a0c (diff)
Notes
Diffstat (limited to 'sys/gnu')
-rw-r--r--sys/gnu/ext2fs/ext2_vnops.c4
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vnops.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c
index b96e01c64bdd..a99c04f00a32 100644
--- a/sys/gnu/ext2fs/ext2_vnops.c
+++ b/sys/gnu/ext2fs/ext2_vnops.c
@@ -264,6 +264,7 @@ ext2_mknod(ap)
struct vattr *vap = ap->a_vap;
struct vnode **vpp = ap->a_vpp;
struct inode *ip;
+ ino_t ino;
int error;
error = ext2_makeinode(MAKEIMODE(vap->va_type, vap->va_mode),
@@ -286,8 +287,9 @@ ext2_mknod(ap)
*/
vput(*vpp);
(*vpp)->v_type = VNON;
+ ino = ip->i_number; /* Save this before vgone() invalidates ip. */
vgone(*vpp);
- error = VFS_VGET(ap->a_dvp->v_mount, ip->i_ino, vpp);
+ error = VFS_VGET(ap->a_dvp->v_mount, ino, vpp);
if (error) {
*vpp = NULL;
return (error);
diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c
index b96e01c64bdd..a99c04f00a32 100644
--- a/sys/gnu/fs/ext2fs/ext2_vnops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vnops.c
@@ -264,6 +264,7 @@ ext2_mknod(ap)
struct vattr *vap = ap->a_vap;
struct vnode **vpp = ap->a_vpp;
struct inode *ip;
+ ino_t ino;
int error;
error = ext2_makeinode(MAKEIMODE(vap->va_type, vap->va_mode),
@@ -286,8 +287,9 @@ ext2_mknod(ap)
*/
vput(*vpp);
(*vpp)->v_type = VNON;
+ ino = ip->i_number; /* Save this before vgone() invalidates ip. */
vgone(*vpp);
- error = VFS_VGET(ap->a_dvp->v_mount, ip->i_ino, vpp);
+ error = VFS_VGET(ap->a_dvp->v_mount, ino, vpp);
if (error) {
*vpp = NULL;
return (error);