Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp225598pxa; Tue, 4 Aug 2020 22:32:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx44H6ffwCuATI1hsldU9KuqMH0JsEDDcjsDEUX97hChw187ia7JmSVDgvm8zHwocpeNS3J X-Received: by 2002:aa7:d516:: with SMTP id y22mr1207054edq.221.1596605578216; Tue, 04 Aug 2020 22:32:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596605578; cv=none; d=google.com; s=arc-20160816; b=G5IiTdW7TSctnyrGLZWor4SFDXgd7YSNnNrY/WLJWLxn4YxdHCWfs9WAgtmSUEvvQH rKVX4N34kiPi3kvrVnXOzYUy08nEXHwPR7ZkDsPDcjJLQh0ZJZNrSyg4RGj85CvD9h1E pHV8l+dbRyf7BPS/XIADKO8zw5U8a7Vab6mMCM7az+Cmxt5tdywcfuMDs5Ff0EFTYW2D jmP+6MCPATtGnb2aioBooz0q1fTau/w+CuLhBMv0yLnQ97GbR3QxZpIK5NW0i3SCwiJi KjAjZhRoOOLnjeppspcgKYE4Z00rY+OXRDfxNTFDgjYlJAXyJJF4yaCCobN4YiQJ0RZO QVAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=YpGNJNneul98XnDqtT/QOJSJMgZK2bW7XIvn25SXzww=; b=q2ytotrx6qstax88FvHg9hOdFbz1A/M3zdVJVLe/xBs/0n+l5fud7ccaJL4cmkRf07 dtlD9PI0c6du7KJ+tvhq8UAM3vStoSAmBCEpFUYS+RlMhGFuiXokDQ6zYn1i+ThIzfL7 72mBYFrDd0voVbhOrGD2j31Usv3onukHy1AanFR+b0wpwHkE5DcinqI8U57vBUam4ICI fVWMD+Ky+X2fxG4+v9gqYwU2LXQvyXhoifGv1BsPT7JgC42iLJCtx6BCHBB6utiu/ZXL z//vPo5oNJkjUtnJnzyP2kJI6VPAXRPhY/DWPcN1NJJThpqAFeqgfVJzsjgaCP14Mq/Z LpsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jKh3PsYX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id uz17si609348ejb.63.2020.08.04.22.32.36; Tue, 04 Aug 2020 22:32:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jKh3PsYX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726551AbgHEFc3 (ORCPT + 99 others); Wed, 5 Aug 2020 01:32:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54868 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725920AbgHEFc2 (ORCPT ); Wed, 5 Aug 2020 01:32:28 -0400 Received: from mail-yb1-xb43.google.com (mail-yb1-xb43.google.com [IPv6:2607:f8b0:4864:20::b43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FD2DC06174A; Tue, 4 Aug 2020 22:32:28 -0700 (PDT) Received: by mail-yb1-xb43.google.com with SMTP id x2so3009536ybf.12; Tue, 04 Aug 2020 22:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=YpGNJNneul98XnDqtT/QOJSJMgZK2bW7XIvn25SXzww=; b=jKh3PsYXTI3jIWEPnkM/9wg9S/WKW84o/bLlQ+DoSG91WAcBjwj1HqBEKRSJ03DNEW zSrdlPvqHTdJWKNEOU0gPZlvWCWLK0bMMhEn+UKWxcg60YF2mj/ioufn+WQECpGiZkcf J8uuNREAjFLAsg2gPsB9PhETWS4QhIxDvnlyEB8eJRg+SuuK5K0ZNVgQQ9FE1CFTg8Fs umeJvsQsOyNDg3Oa/tlLmZGU9h8k1bY3Ij9Kai9U1bTnJwiYykj1EoGVeN8avgnfF+mu NkNQKthajBr0cbqNr6DJK5D/EDHF7UQ6eIqx7VbKpM0lXrg6kFSdl8bh0KfYnO7179O6 2QpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=YpGNJNneul98XnDqtT/QOJSJMgZK2bW7XIvn25SXzww=; b=oR1hvVhAJF2o4AYagq6fYIOqm6R6bBu5nFjm5JBm2fZXZ/LpBU5sLaCRG20s4VAZHe w+/gBWWMT67oGb2K/yMNZ5C8NAsorCokETyXNcoIS0J1VZ1Bw71LumstxS8h4cyzoAjE F/kTLsFaN12+QBKk5tV9ylqqgpP0lRnr7VUjttvhvl0yDyEBWo4/87+5ALw3B14weGBJ 9KMalPAXmoQjuCmXKleLDxhnnq/+lDCEJQj0ioy+Ma/sqPKxZWqfM0GzjaWRHh0Ad/+B QEgIdWKvT2z53NkgcryDHiI/4k1apqbWI4ljfWhN6oV+AXvZdYEEUxzmdbChdv3I/F4Q K7YQ== X-Gm-Message-State: AOAM530Cl/v2WeHM5guQCS5oowihsYt2aVUt7gRXQPYEtUKydJYHENxQ Ukva484ya6KOGDB+ZHAFoTwZX50shsieg3n7Xx8= X-Received: by 2002:a25:84cd:: with SMTP id x13mr2272267ybm.425.1596605547454; Tue, 04 Aug 2020 22:32:27 -0700 (PDT) MIME-Version: 1.0 References: <20200801084721.1812607-1-songliubraving@fb.com> <20200801084721.1812607-3-songliubraving@fb.com> <9C1285C1-ECD6-46BD-BA95-3E9E81C00EF0@fb.com> <5BC1D7AD-32C1-4CDC-BA99-F4DABE61EEA3@fb.com> In-Reply-To: <5BC1D7AD-32C1-4CDC-BA99-F4DABE61EEA3@fb.com> From: Andrii Nakryiko Date: Tue, 4 Aug 2020 22:32:16 -0700 Message-ID: Subject: Re: [PATCH bpf-next 2/5] libbpf: support BPF_PROG_TYPE_USER programs To: Song Liu Cc: open list , bpf , Networking , Alexei Starovoitov , Daniel Borkmann , Kernel Team , john fastabend , KP Singh , Jesper Dangaard Brouer , Daniel Xu Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 4, 2020 at 8:59 PM Song Liu wrote: > > > > > On Aug 4, 2020, at 6:38 PM, Andrii Nakryiko wrote: > > > > On Mon, Aug 3, 2020 at 6:18 PM Song Liu wrote: > >> > >> > >> > >>> On Aug 2, 2020, at 6:40 PM, Andrii Nakryiko wrote: > >>> > >>> On Sat, Aug 1, 2020 at 1:50 AM Song Liu wrote: > >>>> > >> > >> [...] > >> > >>> > >>>> }; > >>>> > >>>> LIBBPF_API int bpf_prog_test_run_xattr(struct bpf_prog_test_run_attr *test_attr); > >>>> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > >>>> index b9f11f854985b..9ce175a486214 100644 > >>>> --- a/tools/lib/bpf/libbpf.c > >>>> +++ b/tools/lib/bpf/libbpf.c > >>>> @@ -6922,6 +6922,7 @@ static const struct bpf_sec_def section_defs[] = { > >>>> BPF_PROG_SEC("lwt_out", BPF_PROG_TYPE_LWT_OUT), > >>>> BPF_PROG_SEC("lwt_xmit", BPF_PROG_TYPE_LWT_XMIT), > >>>> BPF_PROG_SEC("lwt_seg6local", BPF_PROG_TYPE_LWT_SEG6LOCAL), > >>>> + BPF_PROG_SEC("user", BPF_PROG_TYPE_USER), > >>> > >>> let's do "user/" for consistency with most other prog types (and nice > >>> separation between prog type and custom user name) > >> > >> About "user" vs. "user/", I still think "user" is better. > >> > >> Unlike kprobe and tracepoint, user prog doesn't use the part after "/". > >> This is similar to "perf_event" for BPF_PROG_TYPE_PERF_EVENT, "xdl" for > >> BPF_PROG_TYPE_XDP, etc. If we specify "user" here, "user/" and "user/xxx" > >> would also work. However, if we specify "user/" here, programs that used > >> "user" by accident will fail to load, with a message like: > >> > >> libbpf: failed to load program 'user' > >> > >> which is confusing. > > > > xdp, perf_event and a bunch of others don't enforce it, that's true, > > they are a bit of a legacy, > > I don't see w/o "/" is a legacy thing. BPF_PROG_TYPE_STRUCT_OPS just uses > "struct_ops". > > > unfortunately. But all the recent ones do, > > and we explicitly did that for xdp_dev/xdp_cpu, for instance. > > Specifying just "user" in the spec would allow something nonsensical > > like "userargh", for instance, due to this being treated as a prefix. > > There is no harm to require users to do "user/my_prog", though. > > I don't see why allowing "userargh" is a problem. Failing "user" is > more confusing. We can probably improve that by a hint like: > > libbpf: failed to load program 'user', do you mean "user/"? > > But it is pretty silly. "user/something_never_used" also looks weird. "userargh" is terrible, IMO. It's a different identifier that just happens to have the first 4 letters matching "user" program type. There must be either a standardized separator (which happens to be '/') or none. See the suggestion below. > > > Alternatively, we could introduce a new convention in the spec, > > something like "user?", which would accept either "user" or > > "user/something", but not "user/" nor "userblah". We can try that as > > well. > > Again, I don't really understand why allowing "userblah" is a problem. > We already have "xdp", "xdp_devmap/", and "xdp_cpumap/", they all work > fine so far. Right, we have "xdp_devmap/" and "xdp_cpumap/", as you say. I haven't seen so much pushback against trailing forward slash with those ;) But anyways, as part of deprecating APIs and preparing libbpf for 1.0 release over this half, I think I'm going to emit warnings for names like "prog_type_whatever" or "prog_typeevenworse", etc. And asking users to normalize section names to either "prog_type" or "prog_type/something/here", whichever makes sense for a specific program type. Right now libbpf doesn't allow two separate BPF programs with the same section name, so enforcing strict "user" is limiting to users. We are going to lift that restriction pretty soon, though. But for now, please stick with what we've been doing lately and mark it as "user/", later we'll allow just "user" as well. > > Thanks, > Song