Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1567587ybt; Sat, 20 Jun 2020 14:29:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzr2yIq3LO+R3rMP6unBrwlQPuuLgAXCOYcZCy5Dky4eZklLbF0x4sOmQjrC824FdEKwFiR X-Received: by 2002:aa7:c403:: with SMTP id j3mr9851118edq.294.1592688596711; Sat, 20 Jun 2020 14:29:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592688596; cv=none; d=google.com; s=arc-20160816; b=fENphSkz9UCkg8HAvt7tvSiqsKx7DUTEmISU7IA/T/3VPlUthnafpZ80CAyansjTHi e/TF2zi9oSPM2mozEKO43EcWwwbRsNDemN7u4vhOSkrk8XOZ0NcUaR5PZXbQKjHzXnVE FaCLKM8iYBASLhd36o0FTq++8Lbp46SVlTrADVHcWLSllm/G6kLBZpJFTvLhPgTNWq9b L+DPq2uPmvbzkTf+6USTWMAuKQfjTJm745j+HIpKZc8VOoYhvP2gMlTXFzUsZBNiIqvL nxF31W/kfdBjYyZyb9hsPHb9VgJGMVV7ZuBCDRjvX+9voLdRnwRG3I87tZFB/Xp7FMWQ SDxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0X0DDjflRu40U/YjqFAViv4c+Dopp8yvdpsJ3G4W+d4=; b=BvBB1prY1NI00TmQPkdnGy/oYXfkOcqQzwYXkcntcu1xafTWkesr4c7KvPFn2QqZkq fcbhHq3BilkY2vp6R+Wg1IocgQHh65z7jDL5doNd5DBkOCDHmW8vg8g5B+WPtCIDCNRn ckYIkeY4YDO62M+C0qPz2ij61o62HDAqV8MRIA4eFDjHb4ELwsDq3dkyeVpq2Iwonwuo yeMFzZgvW6gr6+m4ufOVi6mrYUyEuEJFM02Q0u5Dtnsg1Lza47XBmJ6Mp75oahG5tA00 caBoxebWI7NWrKP9SH02uhV7hJCCsAGdJHVUbv4xtq4FuI1KKE5jbXTwou8w0qp311ms PjgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZzWwEs6i; 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 n12si6540451edo.509.2020.06.20.14.29.33; Sat, 20 Jun 2020 14:29:56 -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=ZzWwEs6i; 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 S1729050AbgFTV12 (ORCPT + 99 others); Sat, 20 Jun 2020 17:27:28 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:42854 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728960AbgFTV11 (ORCPT ); Sat, 20 Jun 2020 17:27:27 -0400 Received: by mail-pg1-f194.google.com with SMTP id e9so6202133pgo.9; Sat, 20 Jun 2020 14:27:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0X0DDjflRu40U/YjqFAViv4c+Dopp8yvdpsJ3G4W+d4=; b=ZzWwEs6iC/AJfANlnwkhyBE2ml+iCExSzoUh4PxqnM+UB0rp2p7inTJW3YJjVzRj7M iVVE98iK6SEnCdNOexAEbjlhBGBaKcPecwkyUnNYj+A5RHcRHpDrYtw4B5Mx7xR/IeDD cIMvXa4Oi4SeEqM2E8l3wqKcVuedfr7hrmgOcQ+TmmbYDNkVA1YWONTbgngpYhX3khXU Bur2dxc8ZUcPTOOxIcxt+edxyH/YC0bEgs5LuA5eIfgE61e5wM2XSlJW3dx6bmAXgiQu FsePeuwmBFmOLkN6o0D6h1kC0KRkQ/bCax+cV+AWfAKSo7Fe7433Ik09vXOh++L90Xmo TafA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0X0DDjflRu40U/YjqFAViv4c+Dopp8yvdpsJ3G4W+d4=; b=audSLqMYoQPl+TuaZHUooXfUtEpAv9aDhqFUCdChX0h5xVEewrwCv6eI6s2ZLQwMiI 5ZKP0xvKaMZI5MFPP0ZK0JD5Q/GkijdXH26uqwTlEwQKckG9kwzPJlMeZs1g2zzJpksM AbghqtCLIoHQxSS48f608arY8VB0Z+v4UQO2XUCaRqkWJebj+m1nUZ7jNFVyvBDOZY73 hCnAupB0D3/Q/JRxxsoVXoZtivVK7mUElXGPU9exDtT6kD3IufqQ3AC7E26xGAIL7DF0 6MIbUnkEfG/qm7UH8J6v+eEFShvsCtnLhA1zqpItvWU/mojD4IowP2fz5al6xtqi7Bd2 p0yw== X-Gm-Message-State: AOAM533ft7rtOHc1euzmj0ZNU6SDcqApkpBoMSyb9yplMPag3PpbZ5Iu U5QxURhmO69muTce48+6bQg= X-Received: by 2002:a63:b956:: with SMTP id v22mr4574957pgo.242.1592688386037; Sat, 20 Jun 2020 14:26:26 -0700 (PDT) Received: from athina.mtv.corp.google.com ([2620:15c:211:0:c786:d9fd:ab91:6283]) by smtp.gmail.com with ESMTPSA id f14sm7808825pgj.62.2020.06.20.14.26.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Jun 2020 14:26:25 -0700 (PDT) From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= To: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= , Alexei Starovoitov , Daniel Borkmann Cc: Linux Network Development Mailing List , Linux Kernel Mailing List , BPF Mailing List , "David S . Miller" , John Stultz Subject: [PATCH bpf v2] restore behaviour of CAP_SYS_ADMIN allowing the loading of networking bpf programs Date: Sat, 20 Jun 2020 14:26:16 -0700 Message-Id: <20200620212616.93894-1-zenczykowski@gmail.com> X-Mailer: git-send-email 2.27.0.111.gc72c7da667-goog In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Maciej Żenczykowski This is a fix for a regression introduced in 5.8-rc1 by: commit 2c78ee898d8f10ae6fb2fa23a3fbaec96b1b7366 'bpf: Implement CAP_BPF' Before the above commit it was possible to load network bpf programs with just the CAP_SYS_ADMIN privilege. The Android bpfloader happens to run in such a configuration (it has SYS_ADMIN but not NET_ADMIN) and creates maps and loads bpf programs for later use by Android's netd (which has NET_ADMIN but not SYS_ADMIN). Cc: Alexei Starovoitov Cc: Daniel Borkmann Reported-by: John Stultz Fixes: 2c78ee898d8f ("bpf: Implement CAP_BPF") Signed-off-by: Maciej Żenczykowski --- kernel/bpf/syscall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 8da159936bab..7d946435587d 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2121,7 +2121,7 @@ static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr) !bpf_capable()) return -EPERM; - if (is_net_admin_prog_type(type) && !capable(CAP_NET_ADMIN)) + if (is_net_admin_prog_type(type) && !capable(CAP_NET_ADMIN) && !capable(CAP_SYS_ADMIN)) return -EPERM; if (is_perfmon_prog_type(type) && !perfmon_capable()) return -EPERM; -- 2.27.0.111.gc72c7da667-goog