DragonFlyBSD Kernel Audit
DF-0885 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/vfs/smbfs/smbfs_io.c b/sys/vfs/smbfs/smbfs_io.c
--- a/sys/vfs/smbfs/smbfs_io.c
+++ b/sys/vfs/smbfs/smbfs_io.c
@@ -452,6 +452,11 @@
 	 */
 	error = 0;
 	doclose = 0;
+	/*
+	 * XXX DF-0885: n_opencount / n_fid are accessed without the
+	 * vnode lock; take a reference on the open count to avoid a
+	 * concurrent VOP_OPEN overwriting n_fid out from under us.
+	 */
 	if (np->n_opencount == 0) {
 		error = smbfs_smb_open(np, SMB_AM_OPENREAD, &scred);
 		if (error == 0)