On Thu, Jan 12, 2012 at 8:50 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote: > On 01/11, Will Drewry wrote: >> >> This patch adds support for seccomp mode 2. This mode enables dynamic >> enforcement of system call filtering policy in the kernel as specified >> by a userland task. The policy is expressed in terms of a BPF program, >> as is used for userland-exposed socket filtering. Instead of network >> data, the BPF program is evaluated over struct user_regs_struct at the >> time of the system call (as retrieved using regviews). > > Cool ;) > > I didn't really read this patch yet, just one nit. > >> +#define seccomp_filter_init_task(_tsk) do { \ >> + (_tsk)->seccomp.filter = NULL; \ >> +} while (0); > > Cosmetic and subjective, but imho it would be better to add inline > functions instead of define's. Refactoring it a bit to make that possible. Since seccomp fork/init/free never needs access to the whole task_structs, I'll just pass in what's needed (and avoid the sched.h inclusion recursion). Comments on the next round will most definitely be appreciated! >> @@ -166,6 +167,7 @@ void free_task(struct task_struct *tsk) >> free_thread_info(tsk->stack); >> rt_mutex_debug_task_free(tsk); >> ftrace_graph_exit_task(tsk); >> + seccomp_filter_free_task(tsk); >> free_task_struct(tsk); >> } >> EXPORT_SYMBOL(free_task); >> @@ -1209,6 +1211,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, >> /* Perform scheduler related setup. Assign this task to a CPU. */ >> sched_fork(p); >> >> + seccomp_filter_init_task(p); > > This doesn't look right or I missed something. something seccomp_filter_init_task() > should be called right after dup_task_struct(), at least before copy process can > fail. > > Otherwise copy_process()->free_fork()->seccomp_filter_free_task() can put > current->seccomp.filter copied by arch_dup_task_struct(). Ah - makes sense! I moved it under dup_task_struct before any goto's to bad_fork_free. >> +struct seccomp_filter { >> + struct kref usage; >> + struct pid *creator; > > Why? seccomp_filter->creator is never used, no? Removing it. It is from a related patch I'm experimenting with (adding optional tracehook support), but it has no bearing here. Thanks - new patch revision incoming! will -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html