Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1163511pxf; Fri, 26 Mar 2021 02:23:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5xylaSKS19mEKHQMSK5xynukmQVcEkbtKPX3vFH0Ytj1zYcpYjJ1RDE5vl9LyxgwGVRgu X-Received: by 2002:a17:906:7d82:: with SMTP id v2mr14287715ejo.524.1616750620014; Fri, 26 Mar 2021 02:23:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616750620; cv=none; d=google.com; s=arc-20160816; b=yHiWsKaH7Vmmdq3XRakfDuZX59DMTn+cQgmxb9a3nu1c1hD2x9QcHSkLAMNjTTl++3 QoupfoQjhmdIDFuTbkd7j1cEXhRX5ZrHww7/CFHMrRw4qf80R8//CCLPRDvowKCUhcl2 9KpjANPAMIhbLbN1kTdOu5B6dCh2cBzGna+s+863cwluaxm21A2h2UUH/FbG9fKpVbuH 8cvNSNcwziLTRsNpenMTbFmAthWMstGXIrt6hjpCU9LwFhNwK3zBozuBWE+KpEr6GBR9 yrAjqFsjujhGDtTZaAcezAJTwFUpY1Dl/FFTFTNAedcgqd5LDqJtETY7yeMz1/fm2S6R W90g== 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=p6nxZbR4Xgz4AncIrczo5kp+se9vOk+PPXgMHdUhIsg=; b=Su815zZOQFz5RdGX4OnnDVdzbfB+fPHf3X05VCJ3xTA7zeuo0opOVXqwiQv4tbGope kVkuiSttVL/wCM43xkaGoscTXmyb0MIqA7sBrJ72hxkfvhpYxgyN3u4J3SMUzb34mhmI +FebFWYqSGX+WmbePekUemJn2XqaudXWT2EPMJoYf6ob/13AN/H6ven3T8n8ypyUv7mA iu9zaMY6xAK6RWht1rrdH5hyUFOdW7DiC+mUsvSTLOVUm3a/NwO5Ih5nOtSsqR2GGNh4 Mc58lb8m4ZtdAd7rE6wxEOhY99x4APWAFxTtMUxc8tjpp3tWwiSYJlHKAO9zt8CO/bdR 6cGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cloudflare.com header.s=google header.b=TC5ioniM; 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=REJECT sp=REJECT dis=NONE) header.from=cloudflare.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id de11si6161934edb.15.2021.03.26.02.23.16; Fri, 26 Mar 2021 02:23:40 -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=@cloudflare.com header.s=google header.b=TC5ioniM; 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=REJECT sp=REJECT dis=NONE) header.from=cloudflare.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229984AbhCZJWO (ORCPT + 99 others); Fri, 26 Mar 2021 05:22:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229991AbhCZJVl (ORCPT ); Fri, 26 Mar 2021 05:21:41 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D354AC0613B2 for ; Fri, 26 Mar 2021 02:21:40 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id i26so6662143lfl.1 for ; Fri, 26 Mar 2021 02:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cloudflare.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=p6nxZbR4Xgz4AncIrczo5kp+se9vOk+PPXgMHdUhIsg=; b=TC5ioniMTubmFeTpgz6LjRhQLGhK45DHfYA1LoF0jrdnzW3lT59zY8xTjtjOLRjEbd Od7CYRiePEA8ExQ/yhWTZNup5X4MleGgrLev6ByAibtWwAOOVug8re1Smp4v/zaMOq0q H62Tl5nPbSQfzBJnovfy424RgmEhbuUSnf34Q= 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=p6nxZbR4Xgz4AncIrczo5kp+se9vOk+PPXgMHdUhIsg=; b=e5eKj8zm7Je0YQhQeozl9yguqZjUpUrKD+mrPK8dfmKoiF7k+t8lUm4ohyHrXJyYBW p7tN94XAToXoCh9tk3RvrtCa7YH/eSIVZEfqdCocZf02FLTSQ5yBHvGZWalKKyOoTM9L v97VlEa8RKudMyDWxLonEQP3abruq9v6g5O5/cCEoKjGLiynLIX2xmqFGAyiRKOntIM2 QUiBsiaMvJ2kMMDdQLu+WRH6QyYWVTh3Et87G2tkJAOW3b7TEJ+LIdMn53WavKPwF9Lf DJQjZK3hDrWpc7I98SJ5uHSE94ErxxIGcUqVQaFTUccOzLMLNNfns2vCuwdjBlKer5x9 P3xw== X-Gm-Message-State: AOAM531buGVySHc4e3936Nfb/qhYTC758C8aD+y+JeZd7STs/aqPEOH9 0VYnzfU6EFIsLZQWR3CnG105PwRGEBZV6WFZCMhXTA== X-Received: by 2002:a05:6512:3226:: with SMTP id f6mr7318541lfe.171.1616750499132; Fri, 26 Mar 2021 02:21:39 -0700 (PDT) MIME-Version: 1.0 References: <20210325152146.188654-1-lmb@cloudflare.com> In-Reply-To: From: Lorenz Bauer Date: Fri, 26 Mar 2021 09:21:28 +0000 Message-ID: Subject: Re: [PATCH bpf] bpf: link: refuse non-zero file_flags in BPF_OBJ_GET To: Andrii Nakryiko Cc: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , kernel-team , Andrii Nakryiko , Networking , bpf , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 26 Mar 2021 at 04:43, Andrii Nakryiko wrote: > > Makes sense, but see below about details. > > Also, should we do the same for BPF programs as well? I guess they > don't have a "write operation", once loaded, but still... I asked myself the same question, I don't have a good answer. Right now it seems like no harm is done, but this will probably bite us again in the future. Would you want to backport this? We'd have to target commit 6e71b04a8224 ("bpf: Add file mode configuration into bpf maps") I think, which appeared in 4.14 (?). Maybe it's better to just refuse the flag in bpf-next? > > > kernel/bpf/inode.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/kernel/bpf/inode.c b/kernel/bpf/inode.c > > index 1576ff331ee4..2f9e8115ad58 100644 > > --- a/kernel/bpf/inode.c > > +++ b/kernel/bpf/inode.c > > @@ -547,7 +547,7 @@ int bpf_obj_get_user(const char __user *pathname, int flags) > > else if (type == BPF_TYPE_MAP) > > ret = bpf_map_new_fd(raw, f_flags); > > else if (type == BPF_TYPE_LINK) > > - ret = bpf_link_new_fd(raw); > > + ret = (flags) ? -EINVAL : bpf_link_new_fd(raw); > > nit: unnecessary () > > > I wonder if EACCESS would make more sense here? My thinking was: the access mode is fine if we get to this place, but the code in question doesn't support that particular flag. EINVAL seemed more appropriate. Happy to change it if you prefer. >And check f_flags, not flags: > > if (f_flags != O_RDWR) > ret = -EACCESS; > else > ret = bpf_link_new_fd(raw); I'll respin with f_flags. I'd prefer keeping the ternary operator version though, since this should ease backporting. -- Lorenz Bauer | Systems Engineer 6th Floor, County Hall/The Riverside Building, SE1 7PB, UK www.cloudflare.com