From patchwork Fri Nov 1 03:06:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1187746 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=bpf-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="hIGuQSYA"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4746Yd4K7kz9sRD for ; Fri, 1 Nov 2019 14:07:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729604AbfKADHQ (ORCPT ); Thu, 31 Oct 2019 23:07:16 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:41898 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726793AbfKADHP (ORCPT ); Thu, 31 Oct 2019 23:07:15 -0400 Received: by mail-lj1-f195.google.com with SMTP id m9so8759293ljh.8 for ; Thu, 31 Oct 2019 20:07:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RfUkQyN3RzxIcav+D6x6sO0JAA435HHfSQWwlH7mKSk=; b=hIGuQSYAY5MsCPjjvvThdY49L9NfjgpTd3JVqTg+AJmx0KWteXXFmADNitM3mKRiv1 Y0c2A+SzrqgNv9FP7+jIf0i2+4ghewv1RTge89FFa82eilStWkQGWc3tfnQipK90SPU4 riRyVVVfvkU7XIv9E6mzayZVUNliJPMnFwvRH+SxjcAdAC55cZGcKJuZf4IGZ02CDqBH WzZYs44TS3a73d7m9ERCgXbpWDywU2ZxZWj1PlpDbevkN6cjXRNbNFU4o/5+7SvdUaSb f8d3sbIshP2ayeXSubJj35jrQ4Nqw3G30RfQsCH5RKxVZgM0x53XfkJD7U2SwyMiGn8z tidg== 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=RfUkQyN3RzxIcav+D6x6sO0JAA435HHfSQWwlH7mKSk=; b=EUdsX4u3u1dxwoBBqX7T7LYQFnj4TbAIlNYyQQcYzgi62tmXwKtyToSS/OynKgCi35 jOB9Vw0gVFg7IY4Si0v0M9TWoxuS5hv5/Ub9rxCb+GtuU2NmuzYjzQC2f8EkxmszeYc/ pn87czbJ4Xep1M2sDy0cdUU8RofZInK2lhsvnJOYmnSuy7UJv+SEjXjjoheQGUJ6rBPg 5jnWdkT1FDqv3+DXN6nHo9qBg68ZscJ+R3C8KU7DzxzGs1iw41yzKZJWbwt/Uze0zUe7 7XG9ift+wVcI29PxSeNqsgUOIS6i+0yBXxW8kLoaIOOHIEDCjdJThtW+y1lY2HyHl04u iG0Q== X-Gm-Message-State: APjAAAXCRrMVkIxZqvLbvrUhY5CKoMdYtjlcRhvonwhRxUmh30dvPBjt E6s3JUuCQZ+ZXWTPEEXEkisPjQ== X-Google-Smtp-Source: APXvYqxjUH/6CaZ5DRifHl74F8b1rPWnLO1GAvxpWUy3jo9miYrMlg/RCd9tZJCFmPbc+jXFxHjxjQ== X-Received: by 2002:a2e:898d:: with SMTP id c13mr2714610lji.54.1572577633777; Thu, 31 Oct 2019 20:07:13 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id v6sm3926282ljd.15.2019.10.31.20.07.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Oct 2019 20:07:13 -0700 (PDT) From: Jakub Kicinski To: davem@davemloft.net Cc: alexei.starovoitov@gmail.com, daniel@iogearbox.net, bpf@vger.kernel.org, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski , Jiri Pirko Subject: [PATCH net 1/3] selftests: bpf: Skip write only files in debugfs Date: Thu, 31 Oct 2019 20:06:58 -0700 Message-Id: <20191101030700.13080-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191101030700.13080-1-jakub.kicinski@netronome.com> References: <20191101030700.13080-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org DebugFS for netdevsim now contains some "action trigger" files which are write only. Don't try to capture the contents of those. Note that we can't use os.access() because the script requires root. Fixes: 4418f862d675 ("netdevsim: implement support for devlink region and snapshots") Signed-off-by: Jakub Kicinski --- CC: Jiri Pirko tools/testing/selftests/bpf/test_offload.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/testing/selftests/bpf/test_offload.py b/tools/testing/selftests/bpf/test_offload.py index 15a666329a34..1afa22c88e42 100755 --- a/tools/testing/selftests/bpf/test_offload.py +++ b/tools/testing/selftests/bpf/test_offload.py @@ -22,6 +22,7 @@ import os import pprint import random import re +import stat import string import struct import subprocess @@ -311,7 +312,11 @@ def bpftool_prog_load(sample, file_name, maps=[], prog_type="xdp", dev=None, for f in out.split(): if f == "ports": continue + p = os.path.join(path, f) + if not os.stat(p).st_mode & stat.S_IRUSR: + continue + if os.path.isfile(p): _, out = cmd('cat %s/%s' % (path, f)) dfs[f] = out.strip() From patchwork Fri Nov 1 03:06:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1187748 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=bpf-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="phVXwwyG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4746Yh2XD1z9sPj for ; Fri, 1 Nov 2019 14:07:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729626AbfKADHU (ORCPT ); Thu, 31 Oct 2019 23:07:20 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:45064 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729621AbfKADHT (ORCPT ); Thu, 31 Oct 2019 23:07:19 -0400 Received: by mail-lj1-f195.google.com with SMTP id q64so8734653ljb.12 for ; Thu, 31 Oct 2019 20:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=b1OUfOx59HZ05kbkI4SWpQfmHV+UbytCXy5YsXkUdRc=; b=phVXwwyG71Pn36LLKloiGWh16uXYgQ1/MZFKom0vcD+oHUbX86uyWnEcbMCP0VDQra MMdh434A8tKts9z/IPV61PKb4ibPd5T/0heWT+aHBgeo7B59Lwhh/nS8z9D0vD2A48nv xDFDytme9QI3z/t7rNM6wKCPJu/igSgaiNNuL5fPUBpuKHrqaQ/R4IQdnb5UheAoq4tj 7ZzGKGrUMcKPKsXAV5GBdO7D323GuvCgaZTfrliCZXtmVlwNzUkHNxYc2go2Zdt/lUcU MHPXdtX0wjulXaHOsur1UGyVgIJL3QuAFL7nrGnBoD4CZKXCgULI6lTQrtfBlcKBA0jC P3VQ== 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=b1OUfOx59HZ05kbkI4SWpQfmHV+UbytCXy5YsXkUdRc=; b=Wlym7QonXSK6gyIccuNImFT2jFEsz8n20CcEUfXL495tvNi7kEyxi/XYmD91Dygs/q s6jJPIIa6q40r1IYGQcxa8Kcx/G55q482sR+RnkafHmdu3J59CPmGVxZZ8Wcyzd4Fk+1 up3biFzB+PW7PHSayIGhL1kDVFv9qctfncsyaudxCJVuvbDWwnNb3pjoyQcsZbC0QwyI THy4Zw1XlRhfwbqWojsHRqTPgPlg5/lTWkDxnwV30M+xxVC9MJwe2p35SlxNiq3DlTWh r4deJ+r+dkmNWtSbOAALAVoF+QLXHc1F0LtgFW7+1UzPh+Fj0urqQANR7S4bjTktKXaO 2jwg== X-Gm-Message-State: APjAAAUzxjOpunqeGifUqC03DDgpWWRS7PDIMV6LGSFqmLYVwq6+E9ur TKtkVTjQmoWGeOipD3GHnBqo5A== X-Google-Smtp-Source: APXvYqyC5pOy06k67ghn5bqVWdwBNu29xJpebi9Tm/Gv22pPtrJnx9WXdPnkXIpMbsmuafdoEuVZhg== X-Received: by 2002:a2e:9954:: with SMTP id r20mr4076042ljj.197.1572577636941; Thu, 31 Oct 2019 20:07:16 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id v6sm3926282ljd.15.2019.10.31.20.07.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Oct 2019 20:07:16 -0700 (PDT) From: Jakub Kicinski To: davem@davemloft.net Cc: alexei.starovoitov@gmail.com, daniel@iogearbox.net, bpf@vger.kernel.org, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski , Vlad Buslov Subject: [PATCH net 2/3] net: cls_bpf: fix NULL deref on offload filter removal Date: Thu, 31 Oct 2019 20:06:59 -0700 Message-Id: <20191101030700.13080-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191101030700.13080-1-jakub.kicinski@netronome.com> References: <20191101030700.13080-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Commit 401192113730 ("net: sched: refactor block offloads counter usage") missed the fact that either new prog or old prog may be NULL. Fixes: 401192113730 ("net: sched: refactor block offloads counter usage") Signed-off-by: Jakub Kicinski --- CC: Vlad Buslov net/sched/cls_bpf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index bf10bdaf5012..8229ed4a67be 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c @@ -162,16 +162,20 @@ static int cls_bpf_offload_cmd(struct tcf_proto *tp, struct cls_bpf_prog *prog, cls_bpf.name = obj->bpf_name; cls_bpf.exts_integrated = obj->exts_integrated; - if (oldprog) + if (oldprog && prog) err = tc_setup_cb_replace(block, tp, TC_SETUP_CLSBPF, &cls_bpf, skip_sw, &oldprog->gen_flags, &oldprog->in_hw_count, &prog->gen_flags, &prog->in_hw_count, true); - else + else if (prog) err = tc_setup_cb_add(block, tp, TC_SETUP_CLSBPF, &cls_bpf, skip_sw, &prog->gen_flags, &prog->in_hw_count, true); + else + err = tc_setup_cb_destroy(block, tp, TC_SETUP_CLSBPF, &cls_bpf, + skip_sw, &oldprog->gen_flags, + &oldprog->in_hw_count, true); if (prog && err) { cls_bpf_offload_cmd(tp, oldprog, prog, extack); From patchwork Fri Nov 1 03:07:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1187750 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="XrJ13Tfk"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4746Yl6Gcrz9sPF for ; Fri, 1 Nov 2019 14:07:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728243AbfKADHX (ORCPT ); Thu, 31 Oct 2019 23:07:23 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:39889 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729620AbfKADHW (ORCPT ); Thu, 31 Oct 2019 23:07:22 -0400 Received: by mail-lj1-f196.google.com with SMTP id y3so8790209ljj.6 for ; Thu, 31 Oct 2019 20:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=J4NA7oWY+NLSOvKPXrREnqcSOAU6R7dAF4VLdVakC2o=; b=XrJ13TfkR85FgMuyoy9bMlave+PcqP0pALQ3R2KWa7Dhl45W9kehk0miafOuxdnhb7 T1hhu1O42gKDfYU6wIUrIG1yY1DQxanX/KlWolucpMOsN6Txi/feBILgW7iOZIMCDze1 /OXY97va9hOjp0dOUKE9xlCUqRhXBWT7vSOBs1E9pSF30DB5g68kQ/qDFWNjRXIKDG5A f4QvYfzbaQP4bTwUvYMXnQiY0Ao3H0QS2416Ehf2pBbVkSjh/fvKvrrShjRl8RWyeutd 6oR6iHVfru9s+7TqrDNt7SZar9V8ODhokqQVlZ89mzCcuKJMsTWhs3zygddRHFiCnxP6 34DQ== 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=J4NA7oWY+NLSOvKPXrREnqcSOAU6R7dAF4VLdVakC2o=; b=DTGCzwz4Jx6DSK2cbvEYw0VcYa6vBy3XRwPkqTsCym1ZJoQwMpjZ+0TxzpUvuqBdwc dYqyaz47jbmxPZ7hDJOfaQyc9D+c3Z7XPSACGidszgkMfHdAc8U2BPxDHQ2/vI2gNFuG 6FZeqRP4EyND56NG5kcWpSPs9zx0HluseJB07G19MhHVUsRBzw2lu5w2mCjlXl0Q7jww mROoyD1dYL8+wWaHV4E4sakSZNJvrrtaAKK9+xd0gktobvPhjcur9IO3+oAvI0VF9uvh DsGkeAVbBOjF9BxLweO2rCHrUfgITPNCwIBLwMmL/tTzC0sAYZp7CkCDk76BKG366GpU /jEg== X-Gm-Message-State: APjAAAU5zbnHHlLZN35JkmKwJJuJQq79MQlcd6LZLv2z+ywPSOCwa8TC RBih+p/QfRXfe5vZj6PExz21FUA3eH0= X-Google-Smtp-Source: APXvYqy5YFoAiLvCKyldR9WPvpzDJxG1Li08x1Rf/8cIU2I/vo9WLH2bO4PB27a6LjLgPyQk+6Dfrw== X-Received: by 2002:a2e:9759:: with SMTP id f25mr6352737ljj.173.1572577639912; Thu, 31 Oct 2019 20:07:19 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id v6sm3926282ljd.15.2019.10.31.20.07.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 Oct 2019 20:07:19 -0700 (PDT) From: Jakub Kicinski To: davem@davemloft.net Cc: alexei.starovoitov@gmail.com, daniel@iogearbox.net, bpf@vger.kernel.org, netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski , Maxim Mikityanskiy Subject: [PATCH net 3/3] net: fix installing orphaned programs Date: Thu, 31 Oct 2019 20:07:00 -0700 Message-Id: <20191101030700.13080-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191101030700.13080-1-jakub.kicinski@netronome.com> References: <20191101030700.13080-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When netdevice with offloaded BPF programs is destroyed the programs are orphaned and removed from the program IDA - their IDs get released (the programs may remain accessible via existing open file descriptors and pinned files). After IDs are released they are set to 0. This confuses dev_change_xdp_fd() because it compares the __dev_xdp_query() result where 0 means no program with prog->aux->id where 0 means orphaned. dev_change_xdp_fd() would have incorrectly returned success even though it had not installed the program. Since drivers already catch this case via bpf_offload_dev_match() let them handle this case. The error message drivers produce in this case ("program loaded for a different device") is in fact correct as the orphaned program must had to be loaded for a different device. Fixes: c14a9f633d9e ("net: Don't call XDP_SETUP_PROG when nothing is changed") Signed-off-by: Jakub Kicinski --- CC: Maxim Mikityanskiy net/core/dev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index 96afd464284a..99ac84ff398f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8421,7 +8421,8 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, return -EINVAL; } - if (prog->aux->id == prog_id) { + /* prog->aux->id may be 0 for orphaned device-bound progs */ + if (prog->aux->id && prog->aux->id == prog_id) { bpf_prog_put(prog); return 0; }