audit_mark
extern void audit_remove_mark(struct audit_fsnotify_mark *audit_mark);
audit_mark->path = pathname;
audit_update_mark(audit_mark, dentry->d_inode);
audit_mark->rule = krule;
ret = fsnotify_add_inode_mark(&audit_mark->mark, path.dentry->d_inode, 0);
audit_mark->path = NULL;
fsnotify_put_mark(&audit_mark->mark);
audit_mark = ERR_PTR(ret);
return audit_mark;
static void audit_mark_log_rule_change(struct audit_fsnotify_mark *audit_mark, char *op)
struct audit_krule *rule = audit_mark->rule;
audit_log_untrustedstring(ab, audit_mark->path);
void audit_remove_mark(struct audit_fsnotify_mark *audit_mark)
fsnotify_destroy_mark(&audit_mark->mark, audit_fsnotify_group);
fsnotify_put_mark(&audit_mark->mark);
static void audit_autoremove_mark_rule(struct audit_fsnotify_mark *audit_mark)
struct audit_krule *rule = audit_mark->rule;
audit_mark_log_rule_change(audit_mark, "autoremove_rule");
struct audit_fsnotify_mark *audit_mark;
audit_mark = container_of(inode_mark, struct audit_fsnotify_mark, mark);
if (audit_compare_dname_path(dname, audit_mark->path, AUDIT_NAME_FULL))
audit_update_mark(audit_mark, inode);
audit_autoremove_mark_rule(audit_mark);
static void audit_fsnotify_mark_free(struct audit_fsnotify_mark *audit_mark)
kfree(audit_mark->path);
kfree(audit_mark);
struct audit_fsnotify_mark *audit_mark;
audit_mark = container_of(mark, struct audit_fsnotify_mark, mark);
audit_fsnotify_mark_free(audit_mark);
static void audit_update_mark(struct audit_fsnotify_mark *audit_mark,
audit_mark->dev = inode ? inode->i_sb->s_dev : AUDIT_DEV_UNSET;
audit_mark->ino = inode ? inode->i_ino : AUDIT_INO_UNSET;
struct audit_fsnotify_mark *audit_mark;
audit_mark = ERR_PTR(-ENOENT);
audit_mark = kzalloc_obj(*audit_mark);
if (unlikely(!audit_mark)) {
audit_mark = ERR_PTR(-ENOMEM);
fsnotify_init_mark(&audit_mark->mark, audit_fsnotify_group);
audit_mark->mark.mask = AUDIT_FS_EVENTS;
return audit_mark(mark)->chunk;
kmem_cache_free(audit_tree_mark_cachep, audit_mark(mark));
audit_mark(mark)->chunk = chunk;
struct audit_fsnotify_mark *audit_mark;
audit_mark = audit_alloc_mark(new, pathname, strlen(pathname));
if (IS_ERR(audit_mark)) {
return PTR_ERR(audit_mark);
new->exe = audit_mark;
struct audit_fsnotify_mark *audit_mark;
audit_mark = audit_alloc_mark(&entry->rule, str, f_val);
if (IS_ERR(audit_mark)) {
err = PTR_ERR(audit_mark);
entry->rule.exe = audit_mark;