Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp523043pxu; Tue, 1 Dec 2020 18:09:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJw1Atclcak0QVE6zd9Bsf6+4tMHZGeS1zAAlGXgtcPorpdj5ny80GDwfDfBpNRKxOCNgLvz X-Received: by 2002:a05:6402:714:: with SMTP id w20mr510426edx.252.1606874973454; Tue, 01 Dec 2020 18:09:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606874973; cv=none; d=google.com; s=arc-20160816; b=E8zELAx4JZQ/ooe9lWSDyfERMrRMth39HGYrA4XNEwWxvWZnuYDxMy62aFLyAy4icr jLsVB9yvQb82CwwXLw3IqOc+XpQXUDQ+YGb8aW3WRi60fOBEW7oaVckeqdMiTLy0YWk0 OBhVqP0d7O7qwvBNhyza50ZFIn+oj8As1OhPgJuWp4vu7Tq0HMmcuQptLT8xuQs+dLqz BYHovdKFB4Os8YsrgtjJtkTOiKTTCZfuUZAoGITfQRU8PA2g2UOWc0pLX/MixWvh/2CF otS5BrUCOZn9BSNKG9Ap3UXwgZPCS4YDKj53UP2O+sxZU4Er8BT6MvIRCUJ14Ck46mi/ Ky0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=hgxbXV9qhOchZOi+op1XMneUAlJ/ttmy4OGLuSMcgHo=; b=VgCu+y5c0f1O7r0Iw5W+TXt5NmVeG6Ts2OZ7g+3azH0hn6uMOm6VMBr1UOrWc8uHch 2TTloSArTb7aXuDX4JYcxjFCEQpIZHQc7b97lRVolDaM5KfuCrKsA+8uXRzIld6dxGRN O6Z/igeGkJem6X2R4l4MsuWP+47AgbGzY6+hPP6xXzW/Uh4z3Wzh0iXLT18QlsSNyrBN ePdIsXCHsUKMFYNruLLmKk+XWTD4szjqGwlia5+r6x0dclhGo9gH6YLUs5NTvuJNH08q cAGjTQXYeG79QCj9lIdg/BNGmLVq1/uUdK3L5dE9v2gHwuiEl+9ELRTptDTr+ybx1a7g QRSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=C+ieUmEy; 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 b5si138093edz.214.2020.12.01.18.09.11; Tue, 01 Dec 2020 18:09:33 -0800 (PST) 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=C+ieUmEy; 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 S1728074AbgLBCFn (ORCPT + 99 others); Tue, 1 Dec 2020 21:05:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727941AbgLBCFm (ORCPT ); Tue, 1 Dec 2020 21:05:42 -0500 Received: from mail-yb1-xb41.google.com (mail-yb1-xb41.google.com [IPv6:2607:f8b0:4864:20::b41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7485FC0613CF; Tue, 1 Dec 2020 18:05:02 -0800 (PST) Received: by mail-yb1-xb41.google.com with SMTP id v92so206898ybi.4; Tue, 01 Dec 2020 18:05:02 -0800 (PST) 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=hgxbXV9qhOchZOi+op1XMneUAlJ/ttmy4OGLuSMcgHo=; b=C+ieUmEycsl9NIrqHrxBqMbhxY4wPTRVv8VdEUawYoGB3nB+qchFY3UeZ1FKuvFcQl Q8O2b3uiMczypDrsfXThykp76duFZNtkrlSROZr2oSaZWd80FyvkEBHbUj5+IQ2p64M8 eR8aj7QeauqMpFiU7xMKRtq+9pWWQ6LOv3Gzmber4g6vIyuLDVxRjiNb2DJxP5xeeX9U xzqtOwtG4pDDnNYg5iFzNONJONqqGYfRt/nnswWmI5FNB9bTmSdEjiu7anmlClAW40FK dsE1MIm7aH4+DyiLDss8aaEB7MrAOsnYAG9TABVlMBrPe4X/jzUAVHLyDhsoB9TGwCoo 4xng== 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=hgxbXV9qhOchZOi+op1XMneUAlJ/ttmy4OGLuSMcgHo=; b=SaV1daRtyZCC8QfZWp9pND+8C9CT8fwfxM1GPnVaVOWvYdsch5ZZdmVG/vf6K+FxBp HBrdbmFcyujRUDA5hat6kaZj1/PXOdFYU+rT0LRa2rf0UK942xwMIRlGH6oaTRHZsYyn u6DLcVZp+lZEEyoaqQHiplzhJz+drOwZ1gnj+3reQwKB6YH6509jIWYUYkMz6saw6bVq f2xLb/PXMep2hRJ6thF7spII6gVuCI0eSuDOueXGnQpXgwlD9ERZD9RqIoYyox012AHw SsVy9NMJ4FzSslyACmWIT9tZkmx/EfRlpO3x+LVzJT/xDcO+f9uBQpA0I8wzPg9UhYOu eyuw== X-Gm-Message-State: AOAM53280pMgwVhm0lJ1gg4pj+fV1huwI06Yr+uoe0BUKeOgv2yZVpQJ 8oR0qiDVmRb7/E6Q6tslHAe0Qs1GH19N6QS32M8= X-Received: by 2002:a25:7717:: with SMTP id s23mr485353ybc.459.1606874701636; Tue, 01 Dec 2020 18:05:01 -0800 (PST) MIME-Version: 1.0 References: <20201201144418.35045-1-kuniyu@amazon.co.jp> <20201201144418.35045-7-kuniyu@amazon.co.jp> In-Reply-To: <20201201144418.35045-7-kuniyu@amazon.co.jp> From: Andrii Nakryiko Date: Tue, 1 Dec 2020 18:04:50 -0800 Message-ID: Subject: Re: [PATCH v1 bpf-next 06/11] bpf: Introduce two attach types for BPF_PROG_TYPE_SK_REUSEPORT. To: Kuniyuki Iwashima Cc: "David S . Miller" , Jakub Kicinski , Eric Dumazet , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Benjamin Herrenschmidt , Kuniyuki Iwashima , osa-contribution-log@amazon.com, bpf , Networking , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 1, 2020 at 6:49 AM Kuniyuki Iwashima wrote: > > This commit adds new bpf_attach_type for BPF_PROG_TYPE_SK_REUSEPORT to > check if the attached eBPF program is capable of migrating sockets. > > When the eBPF program is attached, the kernel runs it for socket migration > only if the expected_attach_type is BPF_SK_REUSEPORT_SELECT_OR_MIGRATE. > The kernel will change the behaviour depending on the returned value: > > - SK_PASS with selected_sk, select it as a new listener > - SK_PASS with selected_sk NULL, fall back to the random selection > - SK_DROP, cancel the migration > > Link: https://lore.kernel.org/netdev/20201123003828.xjpjdtk4ygl6tg6h@kafai-mbp.dhcp.thefacebook.com/ > Suggested-by: Martin KaFai Lau > Signed-off-by: Kuniyuki Iwashima > --- > include/uapi/linux/bpf.h | 2 ++ > kernel/bpf/syscall.c | 8 ++++++++ > tools/include/uapi/linux/bpf.h | 2 ++ > 3 files changed, 12 insertions(+) > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index 85278deff439..cfc207ae7782 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -241,6 +241,8 @@ enum bpf_attach_type { > BPF_XDP_CPUMAP, > BPF_SK_LOOKUP, > BPF_XDP, > + BPF_SK_REUSEPORT_SELECT, > + BPF_SK_REUSEPORT_SELECT_OR_MIGRATE, > __MAX_BPF_ATTACH_TYPE > }; > > diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c > index f3fe9f53f93c..a0796a8de5ea 100644 > --- a/kernel/bpf/syscall.c > +++ b/kernel/bpf/syscall.c > @@ -2036,6 +2036,14 @@ bpf_prog_load_check_attach(enum bpf_prog_type prog_type, > if (expected_attach_type == BPF_SK_LOOKUP) > return 0; > return -EINVAL; > + case BPF_PROG_TYPE_SK_REUSEPORT: > + switch (expected_attach_type) { > + case BPF_SK_REUSEPORT_SELECT: > + case BPF_SK_REUSEPORT_SELECT_OR_MIGRATE: > + return 0; > + default: > + return -EINVAL; > + } this is a kernel regression, previously expected_attach_type wasn't enforced, so user-space could have provided any number without an error. > case BPF_PROG_TYPE_EXT: > if (expected_attach_type) > return -EINVAL; > diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h > index 85278deff439..cfc207ae7782 100644 > --- a/tools/include/uapi/linux/bpf.h > +++ b/tools/include/uapi/linux/bpf.h > @@ -241,6 +241,8 @@ enum bpf_attach_type { > BPF_XDP_CPUMAP, > BPF_SK_LOOKUP, > BPF_XDP, > + BPF_SK_REUSEPORT_SELECT, > + BPF_SK_REUSEPORT_SELECT_OR_MIGRATE, > __MAX_BPF_ATTACH_TYPE > }; > > -- > 2.17.2 (Apple Git-113) >