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