diff options
author | tjr <tjr@FreeBSD.org> | 2004-01-10 03:45:30 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2004-01-10 03:45:30 +0000 |
commit | c2134f4017f9fbae7b1bb8b16b2b7cfc250646c3 (patch) | |
tree | eb449eedb0e05a79903048760bd435c16169cc66 /sys | |
parent | e80a89c101409d62441720889f518679dcc81c29 (diff) | |
download | FreeBSD-src-c2134f4017f9fbae7b1bb8b16b2b7cfc250646c3.zip FreeBSD-src-c2134f4017f9fbae7b1bb8b16b2b7cfc250646c3.tar.gz |
Restore closing of SMB find handle in smbfs_close().
Diffstat (limited to 'sys')
-rw-r--r-- | sys/fs/smbfs/smbfs_vnops.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c index 928a77a..e9fc5a8 100644 --- a/sys/fs/smbfs/smbfs_vnops.c +++ b/sys/fs/smbfs/smbfs_vnops.c @@ -241,6 +241,8 @@ smbfs_close(ap) { struct vnode *vp = ap->a_vp; struct thread *td = ap->a_td; + struct smbnode *np = VTOSMB(vp); + struct smb_cred scred; int dolock; VI_LOCK(vp); @@ -249,7 +251,12 @@ smbfs_close(ap) vn_lock(vp, LK_EXCLUSIVE | LK_RETRY | LK_INTERLOCK, td); else VI_UNLOCK(vp); - /* Nothing. */ + if (vp->v_type == VDIR && (np->n_flag & NOPEN) != 0 && + np->n_dirseq != NULL) { + smb_makescred(&scred, td, ap->a_cred); + smbfs_findclose(np->n_dirseq, &scred); + np->n_dirseq = NULL; + } if (dolock) VOP_UNLOCK(vp, 0, td); return 0; |