diff options
author | tjr <tjr@FreeBSD.org> | 2002-12-13 10:15:01 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-12-13 10:15:01 +0000 |
commit | 99f5994bb49ce0f6ac7f141db1b8806a6dd4a164 (patch) | |
tree | d6829a6b64cab3c4fd5bcf0cfade2c79d258fadd /sys/fs/smbfs/smbfs_io.c | |
parent | 0d70b124724057274d505584b615ff6d73891ac7 (diff) | |
download | FreeBSD-src-99f5994bb49ce0f6ac7f141db1b8806a6dd4a164.zip FreeBSD-src-99f5994bb49ce0f6ac7f141db1b8806a6dd4a164.tar.gz |
Store a reference to the parent directory's vnode in struct smbnode,
not to the parent's smbnode, which may be freed during the lifetime
of the child if the mount is forcibly unmounted. umount -f should now
work properly (ie. not panic) on smbfs mounts.
Diffstat (limited to 'sys/fs/smbfs/smbfs_io.c')
-rw-r--r-- | sys/fs/smbfs/smbfs_io.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index 21ccbab..9aa4224 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -101,7 +101,7 @@ smbfs_readvdir(struct vnode *vp, struct uio *uio, struct ucred *cred) bzero((caddr_t)&de, DE_SIZE); de.d_reclen = DE_SIZE; de.d_fileno = (offset == 0) ? np->n_ino : - (np->n_parent ? np->n_parent->n_ino : 2); + (np->n_parent ? VTOSMB(np->n_parent)->n_ino : 2); if (de.d_fileno == 0) de.d_fileno = 0x7ffffffd + offset; de.d_namlen = offset + 1; |