summaryrefslogtreecommitdiffstats
path: root/sys/fs/smbfs
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-07-17 16:13:42 +0000
committerjhb <jhb@FreeBSD.org>2006-07-17 16:13:42 +0000
commitf126d3e34beec1532f5572dc351de803173bf594 (patch)
tree63c7b3921a8d974f37b8c512127dceafc0423085 /sys/fs/smbfs
parent5d507389114fdef17c1601dac3c0e68c44ea1541 (diff)
downloadFreeBSD-src-f126d3e34beec1532f5572dc351de803173bf594.zip
FreeBSD-src-f126d3e34beec1532f5572dc351de803173bf594.tar.gz
Lock the smb share before doing a 'put' on it in smbfs_unmount().
Tested by: "Jiawei Ye" <leafy7382 at gmail>
Diffstat (limited to 'sys/fs/smbfs')
-rw-r--r--sys/fs/smbfs/smbfs_vfsops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/fs/smbfs/smbfs_vfsops.c b/sys/fs/smbfs/smbfs_vfsops.c
index f64c125..904835c 100644
--- a/sys/fs/smbfs/smbfs_vfsops.c
+++ b/sys/fs/smbfs/smbfs_vfsops.c
@@ -304,6 +304,9 @@ smbfs_unmount(struct mount *mp, int mntflags, struct thread *td)
if (error)
return error;
smb_makescred(&scred, td, td->td_ucred);
+ error = smb_share_lock(smp->sm_share, LK_EXCLUSIVE, td);
+ if (error)
+ return error;
smb_share_put(smp->sm_share, &scred);
mp->mnt_data = (qaddr_t)0;
OpenPOWER on IntegriCloud