From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexei Starovoitov Subject: Re: [PATCH net-next 1/4] bpf: allow bpf programs to tail-call other bpf programs Date: Tue, 19 May 2015 17:18:44 -0700 Message-ID: <555BD2E4.5050608@plumgrid.com> References: <1432079946-9878-1-git-send-email-ast@plumgrid.com> <1432079946-9878-2-git-send-email-ast@plumgrid.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Andy Lutomirski Cc: "David S. Miller" , Ingo Molnar , Daniel Borkmann , Michael Holzheu , Zi Shen Lim , Linux API , Network Development , "linux-kernel@vger.kernel.org" List-Id: linux-api@vger.kernel.org On 5/19/15 5:13 PM, Andy Lutomirski wrote: > > IMO this is starting to get a bit ugly. Would it be possible to have > the program dereference the subprogram reference itself from the jump > table? There would have to be a verifier type that represents a > reference to a program tail-call entry point, but that seems better > than having this weird indirection. Which part? I don't think you've looked at examples yet. network parser has to call itself. Otherwise we cannot parse 10 mpls labels or TLVs. Indirection via jump_table also has to be there. We need to dynamically add and remove programs form this jump table. It cannot be all static.