summaryrefslogtreecommitdiffstats
path: root/sys/fs/smbfs/smbfs_io.c
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2002-12-13 10:15:01 +0000
committertjr <tjr@FreeBSD.org>2002-12-13 10:15:01 +0000
commit99f5994bb49ce0f6ac7f141db1b8806a6dd4a164 (patch)
treed6829a6b64cab3c4fd5bcf0cfade2c79d258fadd /sys/fs/smbfs/smbfs_io.c
parent0d70b124724057274d505584b615ff6d73891ac7 (diff)
downloadFreeBSD-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.c2
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;
OpenPOWER on IntegriCloud