Lines Matching refs:filter

108 static int seccomp_check_filter(struct sock_filter *filter, unsigned int flen)  in seccomp_check_filter()  argument
112 struct sock_filter *ftest = &filter[pc]; in seccomp_check_filter()
195 READ_ONCE(current->seccomp.filter); in seccomp_run_filters()
293 is_ancestor(thread->seccomp.filter, in seccomp_can_sync_threads()
294 caller->seccomp.filter))) in seccomp_can_sync_threads()
338 smp_store_release(&thread->seccomp.filter, in seccomp_sync_threads()
339 caller->seccomp.filter); in seccomp_sync_threads()
417 struct seccomp_filter *filter = ERR_PTR(-EFAULT); in seccomp_prepare_user_filter() local
425 fprog.filter = compat_ptr(fprog32.filter); in seccomp_prepare_user_filter()
430 filter = seccomp_prepare_filter(&fprog); in seccomp_prepare_user_filter()
432 return filter; in seccomp_prepare_user_filter()
445 struct seccomp_filter *filter) in seccomp_attach_filter() argument
453 total_insns = filter->prog->len; in seccomp_attach_filter()
454 for (walker = current->seccomp.filter; walker; walker = walker->prev) in seccomp_attach_filter()
470 filter->log = true; in seccomp_attach_filter()
476 filter->prev = current->seccomp.filter; in seccomp_attach_filter()
477 current->seccomp.filter = filter; in seccomp_attach_filter()
486 static void __get_seccomp_filter(struct seccomp_filter *filter) in __get_seccomp_filter() argument
489 refcount_inc(&filter->usage); in __get_seccomp_filter()
495 struct seccomp_filter *orig = tsk->seccomp.filter; in get_seccomp_filter()
501 static inline void seccomp_filter_free(struct seccomp_filter *filter) in seccomp_filter_free() argument
503 if (filter) { in seccomp_filter_free()
504 bpf_prog_destroy(filter->prog); in seccomp_filter_free()
505 kfree(filter); in seccomp_filter_free()
522 __put_seccomp_filter(tsk->seccomp.filter); in put_seccomp_filter()
851 const char __user *filter) in seccomp_set_mode_filter() argument
862 prepared = seccomp_prepare_user_filter(filter); in seccomp_set_mode_filter()
896 const char __user *filter) in seccomp_set_mode_filter() argument
959 long prctl_set_seccomp(unsigned long seccomp_mode, char __user *filter) in prctl_set_seccomp() argument
976 uargs = filter; in prctl_set_seccomp()
990 struct seccomp_filter *orig, *filter; in get_nth_filter() local
1004 orig = task->seccomp.filter; in get_nth_filter()
1009 for (filter = orig; filter; filter = filter->prev) in get_nth_filter()
1013 filter = ERR_PTR(-ENOENT); in get_nth_filter()
1018 for (filter = orig; filter && count > 1; filter = filter->prev) in get_nth_filter()
1021 if (WARN_ON(count != 1 || !filter)) { in get_nth_filter()
1022 filter = ERR_PTR(-ENOENT); in get_nth_filter()
1026 __get_seccomp_filter(filter); in get_nth_filter()
1030 return filter; in get_nth_filter()
1036 struct seccomp_filter *filter; in seccomp_get_filter() local
1045 filter = get_nth_filter(task, filter_off); in seccomp_get_filter()
1046 if (IS_ERR(filter)) in seccomp_get_filter()
1047 return PTR_ERR(filter); in seccomp_get_filter()
1049 fprog = filter->prog->orig_prog; in seccomp_get_filter()
1063 if (copy_to_user(data, fprog->filter, bpf_classic_proglen(fprog))) in seccomp_get_filter()
1067 __put_seccomp_filter(filter); in seccomp_get_filter()
1075 struct seccomp_filter *filter; in seccomp_get_metadata() local
1091 filter = get_nth_filter(task, kmd.filter_off); in seccomp_get_metadata()
1092 if (IS_ERR(filter)) in seccomp_get_metadata()
1093 return PTR_ERR(filter); in seccomp_get_metadata()
1095 if (filter->log) in seccomp_get_metadata()
1102 __put_seccomp_filter(filter); in seccomp_get_metadata()