summaryrefslogtreecommitdiffstats
path: root/sys/fs/devfs/devfs_devs.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/devfs/devfs_devs.c')
-rw-r--r--sys/fs/devfs/devfs_devs.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c
index fd378b8..15a2018 100644
--- a/sys/fs/devfs/devfs_devs.c
+++ b/sys/fs/devfs/devfs_devs.c
@@ -30,6 +30,7 @@
*/
#include "opt_devfs.h"
+#include "opt_mac.h"
#ifndef NODEVFS
#include <sys/param.h>
@@ -38,6 +39,7 @@
#include <sys/dirent.h>
#include <sys/kernel.h>
#include <sys/lock.h>
+#include <sys/mac.h>
#include <sys/malloc.h>
#include <sys/proc.h>
#include <sys/sysctl.h>
@@ -207,6 +209,9 @@ devfs_newdirent(char *name, int namelen)
vfs_timestamp(&de->de_ctime);
de->de_mtime = de->de_atime = de->de_ctime;
de->de_links = 1;
+#ifdef MAC
+ mac_init_devfsdirent(de);
+#endif
return (de);
}
@@ -254,6 +259,9 @@ devfs_delete(struct devfs_dirent *dd, struct devfs_dirent *de)
if (de->de_vnode)
de->de_vnode->v_data = NULL;
TAILQ_REMOVE(&dd->de_dlist, de, de_list);
+#ifdef MAC
+ mac_destroy_devfsdirent(de);
+#endif
FREE(de, M_DEVFS);
}
@@ -325,6 +333,10 @@ devfs_populate(struct devfs_mount *dm)
de = devfs_find(dd, s, q - s);
if (de == NULL) {
de = devfs_vmkdir(s, q - s, dd);
+#ifdef MAC
+ mac_create_devfs_directory(s, q - s,
+ de);
+#endif
de->de_inode = dm->dm_inode++;
TAILQ_INSERT_TAIL(&dd->de_dlist, de, de_list);
dd->de_links++;
@@ -350,6 +362,9 @@ devfs_populate(struct devfs_mount *dm)
de->de_mode = dev->si_mode;
de->de_dirent->d_type = DT_CHR;
}
+#ifdef MAC
+ mac_create_devfs_device(dev, de);
+#endif
*dep = de;
de->de_dir = dd;
devfs_rules_apply(dm, de);
OpenPOWER on IntegriCloud