Lines Matching refs:watch
112 static inline void audit_get_watch(struct audit_watch *watch) in audit_get_watch() argument
114 atomic_inc(&watch->count); in audit_get_watch()
117 static void audit_put_watch(struct audit_watch *watch) in audit_put_watch() argument
119 if (atomic_dec_and_test(&watch->count)) { in audit_put_watch()
120 WARN_ON(watch->parent); in audit_put_watch()
121 WARN_ON(!list_empty(&watch->rules)); in audit_put_watch()
122 kfree(watch->path); in audit_put_watch()
123 kfree(watch); in audit_put_watch()
127 static void audit_remove_watch(struct audit_watch *watch) in audit_remove_watch() argument
129 list_del(&watch->wlist); in audit_remove_watch()
130 put_inotify_watch(&watch->parent->wdata); in audit_remove_watch()
131 watch->parent = NULL; in audit_remove_watch()
132 audit_put_watch(watch); /* match initial get */ in audit_remove_watch()
140 if (e->rule.watch) in audit_free_rule()
141 audit_put_watch(e->rule.watch); in audit_free_rule()
188 struct audit_watch *watch; in audit_init_watch() local
190 watch = kzalloc(sizeof(*watch), GFP_KERNEL); in audit_init_watch()
191 if (unlikely(!watch)) in audit_init_watch()
194 INIT_LIST_HEAD(&watch->rules); in audit_init_watch()
195 atomic_set(&watch->count, 1); in audit_init_watch()
196 watch->path = path; in audit_init_watch()
197 watch->dev = (dev_t)-1; in audit_init_watch()
198 watch->ino = (unsigned long)-1; in audit_init_watch()
200 return watch; in audit_init_watch()
255 krule->watch || krule->inode_f || krule->tree || in audit_to_inode()
267 struct audit_watch *watch; in audit_to_watch() local
275 krule->inode_f || krule->watch || krule->tree) in audit_to_watch()
278 watch = audit_init_watch(path); in audit_to_watch()
279 if (IS_ERR(watch)) in audit_to_watch()
280 return PTR_ERR(watch); in audit_to_watch()
282 audit_get_watch(watch); in audit_to_watch()
283 krule->watch = watch; in audit_to_watch()
769 audit_pack_string(&bufp, krule->watch->path); in audit_krule_to_data()
821 if (strcmp(a->watch->path, b->watch->path)) in audit_compare_rule()
908 struct audit_watch *watch) in audit_dupe_rule() argument
930 new->watch = NULL; in audit_dupe_rule()
972 if (watch) { in audit_dupe_rule()
973 audit_get_watch(watch); in audit_dupe_rule()
974 new->watch = watch; in audit_dupe_rule()
1123 } else if (entry->rule.watch) { in audit_find_rule()
1202 struct audit_watch *w, *watch = krule->watch; in audit_add_to_parent() local
1206 if (strcmp(watch->path, w->path)) in audit_add_to_parent()
1212 audit_put_watch(watch); in audit_add_to_parent()
1213 audit_put_watch(watch); in audit_add_to_parent()
1216 krule->watch = watch = w; in audit_add_to_parent()
1222 watch->parent = parent; in audit_add_to_parent()
1224 list_add(&watch->wlist, &parent->watches); in audit_add_to_parent()
1226 list_add(&krule->rlist, &watch->rules); in audit_add_to_parent()
1234 struct audit_watch *watch = krule->watch; in audit_add_watch() local
1241 watch->dev = ndw->path.dentry->d_inode->i_sb->s_dev; in audit_add_watch()
1242 watch->ino = ndw->path.dentry->d_inode->i_ino; in audit_add_watch()
1283 struct audit_watch *watch = entry->rule.watch; in audit_add_rule() local
1309 if (watch) { in audit_add_rule()
1310 err = audit_get_nd(watch->path, &ndp, &ndw); in audit_add_rule()
1316 if (watch) { in audit_add_rule()
1323 h = audit_hash_ino((u32)watch->ino); in audit_add_rule()
1366 if (watch) in audit_add_rule()
1367 audit_put_watch(watch); /* tmp watch, matches initial get */ in audit_add_rule()
1375 struct audit_watch *watch, *tmp_watch = entry->rule.watch; in audit_del_rule() local
1397 watch = e->rule.watch; in audit_del_rule()
1398 if (watch) { in audit_del_rule()
1399 struct audit_parent *parent = watch->parent; in audit_del_rule()
1403 if (list_empty(&watch->rules)) { in audit_del_rule()
1404 audit_remove_watch(watch); in audit_del_rule()
1775 struct audit_watch *watch; in update_lsm_rule() local
1782 watch = r->watch; in update_lsm_rule()
1784 nentry = audit_dupe_rule(r, watch); in update_lsm_rule()
1790 if (watch) in update_lsm_rule()
1795 if (watch) { in update_lsm_rule()
1796 list_add(&nentry->rule.rlist, &watch->rules); in update_lsm_rule()