PERFORCE change 122331 for review

Zhouyi ZHOU zhouzhouyi at FreeBSD.org
Tue Jun 26 07:38:18 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=122331

Change 122331 by zhouzhouyi at zhouzhouyi_mactest on 2007/06/26 07:37:27

	Truncate /var/log/mactest into zero everytime the /dev/mactest opens

Affected files ...

.. //depot/projects/soc2007/zhouzhouyi_mactest_soc/sys/security/mac_test/mac_test_log.c#2 edit

Differences ...

==== //depot/projects/soc2007/zhouzhouyi_mactest_soc/sys/security/mac_test/mac_test_log.c#2 (text+ko) ====

@@ -47,6 +47,7 @@
 #include <sys/shm.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>
+#include <sys/stat.h>
 #include <sys/sx.h>
 #include <sys/sysctl.h>
 #include <sys/mac.h>
@@ -90,7 +91,8 @@
 	int error;
 	struct nameidata nd;
 	int flags, vfslocked;
-
+	struct mount *mp;
+	struct vattr vat;
 
 	/* Only one process may open the device at a time. */
 	mtx_lock(&mac_test_log_mtx);
@@ -104,13 +106,23 @@
 	NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE, UIO_SYSSPACE,
 					"/var/log/mactest", curthread);
 	flags = O_CREAT|O_TRUNC|FWRITE;
-	error = vn_open(&nd, &flags, 0, NULL);
+	error = vn_open(&nd, &flags, S_IRUSR| S_IWUSR, NULL);
 
 	vfslocked = NDHASGIANT(&nd);
 
 	logvnode = nd.ni_vp;
 	VOP_UNLOCK(logvnode, 0, curthread);
 
+	/*truncate it to zero*/
+	vn_start_write(logvnode, &mp, V_WAIT | PCATCH);
+	VOP_LEASE(logvnode, curthread, curthread->td_ucred, LEASE_WRITE);
+	VATTR_NULL(&vat);
+	vat.va_size = 0;
+	vn_lock(logvnode, LK_EXCLUSIVE | LK_RETRY, curthread);
+	VOP_SETATTR(logvnode, &vat, curthread->td_ucred, curthread);
+	VOP_UNLOCK(logvnode, 0, curthread);
+	vn_finished_write(mp);
+
    	extattr_set_vp1(logvnode, EXTATTR_NAMESPACE_SYSTEM, "mac_test",
 		"mac_test", strlen("mac_test"), curthread);
 


More information about the p4-projects mailing list