diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 3b1f99bf78b0..79afa44c16f4 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -1889,6 +1889,7 @@ ffs_snapshot_mount(mp) struct thread *td = curthread; struct snapdata *sn; struct vnode *vp; + struct vnode *lastvp; struct inode *ip; struct uio auio; struct iovec aiov; @@ -1906,6 +1907,7 @@ ffs_snapshot_mount(mp) * Process each snapshot listed in the superblock. */ vp = NULL; + lastvp = NULL; sn = devvp->v_rdev->si_snapdata; for (snaploc = 0; snaploc < FSMAXSNAP; snaploc++) { if (fs->fs_snapinum[snaploc] == 0) @@ -1976,7 +1978,9 @@ ffs_snapshot_mount(mp) vp->v_vflag |= VV_SYSTEM; VI_UNLOCK(devvp); VOP_UNLOCK(vp, 0, td); + lastvp = vp; } + vp = lastvp; /* * No usable snapshots found. */