From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tycho Andersen Subject: Re: v2 of seccomp filter c/r patches Date: Tue, 15 Sep 2015 12:26:26 -0600 Message-ID: <20150915182626.GK31864@smitten> References: <1441930862-14347-1-git-send-email-tycho.andersen@canonical.com> <20150911172806.GA7244@smitten> <20150915160738.GJ31864@smitten> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: Sender: linux-api-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Andy Lutomirski Cc: Kees Cook , Pavel Emelyanov , Network Development , Alexei Starovoitov , "David S. Miller" , Oleg Nesterov , "Serge E. Hallyn" , Linux API , Will Drewry , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Daniel Borkmann List-Id: linux-api@vger.kernel.org Hi Andy, On Tue, Sep 15, 2015 at 11:13:51AM -0700, Andy Lutomirski wrote: > On Tue, Sep 15, 2015 at 9:07 AM, Tycho Andersen > wrote: > > Hi Andy, > > > > On Mon, Sep 14, 2015 at 10:52:46AM -0700, Andy Lutomirski wrote: > >> > >> I'm not sure I entirely like this solution... > > > > Ok. Since we also aren't going to do all the eBPF stuff now, how about > > something that looks like this: > > > > struct seccomp_layer { > > unsigned int size; > > unsigned int type; /* SECCOMP_BPF_CLASSIC or SECCOMP_EBPF or ... */ > > bool inherited; > > union { > > unsigned int insn_cnt; > > struct bpf_insn *insns; > > }; > > }; > > > > with a ptrace command: > > > > ptrace(PTRACE_SECCOMP_DUMP_LAYER, pid, i, &layer); > > > > If we save a pointer to the current seccomp filter on fork (if there > > is one), then I think the inherited flag is just, > > > > inherited = is_ancestor(child->seccomp.filter, child->seccomp.inherited_filter) > > > > I'm lost. What is the inherited flag for? We need some way to expose the seccomp hierarchy, specifically which filters are inherited, so that we can correctly restore the filter tree for tasks that may use TSYNC in the future. You've mentioned that you don't like kcmp, so this is an alternative to that. Tycho