From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F0B6C282C8 for ; Mon, 28 Jan 2019 18:29:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5995520855 for ; Mon, 28 Jan 2019 18:29:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="T5xAzFlo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727119AbfA1S3Z (ORCPT ); Mon, 28 Jan 2019 13:29:25 -0500 Received: from mail-pf1-f176.google.com ([209.85.210.176]:39403 "EHLO mail-pf1-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726754AbfA1S3X (ORCPT ); Mon, 28 Jan 2019 13:29:23 -0500 Received: by mail-pf1-f176.google.com with SMTP id r136so8385913pfc.6 for ; Mon, 28 Jan 2019 10:29:22 -0800 (PST) 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:mime-version :content-transfer-encoding; bh=NBJ6x1DnAeo6JqOf1Pbh/vStINd+1wtoxsM/X6FK64k=; b=T5xAzFlo2otpYWkdB5dah5FCRFpxlbTbDl3nBXcJNbrUfst8SA8HVRZTnxlNECCtP2 3kMLL28zbtxxTJekjxuh+vp7EZTMiLDyFLd9D0Km4ibNLhM1OJ6ycsNTO9PvGewZqBrI ecPUhwVDrHAHS8p8/0biLL4T+RBFx1Amhs+o5JeUDG5I6Vpmg4eqKtirCIENHc808b/8 mZXb1i4OKAoGvkzqcd70YesKEgFIwWpY404JBLC14jNGWJwq86METoqdutk2cOxYvd1s 8LfTlf8PzWMWaRApWqkIYbC5BhUbv4iAEszy6a9w1NcsPRFGhOEROukuFCuxEkz0ydcn GivQ== 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:mime-version :content-transfer-encoding; bh=NBJ6x1DnAeo6JqOf1Pbh/vStINd+1wtoxsM/X6FK64k=; b=MId+CXZPYDkkz1gu/C1l6nAILQeoQqrQb7qb+mvWfXOvuCPvCeslXSNIJIpW51bzPA VzNaPQbNrlL9/g7cJtHUlyFOY4QtGr8THOUBIWr2VWmi5EMkKOHV1N7CtentSwRW+d/x /SRDETcaMKcd0GCXGujl1kA21VEcFJ/K+mBxQeR7CapQsHZLkKjcVKTDn0nM0IABBski VKUAH4Gg4tsAZic8OmASKYBmaEINMmHyjPP8RiQCnKbtKbzXGRNa4HZkIrOVjr/LYSaJ KiZmgaBKEG756YTx/ArSva7oDW9mOMz52xX3vQNKLg9Db0Qd20p+Izqo7xkn4/jYUKYS +onQ== X-Gm-Message-State: AJcUukcpG+Y6kWjHKt0vmhCSt6xnrDJy5joSZs54+2fLeZM1FNMt7Qoy ptcmq8jgrvgGZY+vGgW79r3oXiVLC3g= X-Google-Smtp-Source: ALg8bN4K2mx8F2bvz8eT83alb+SUX+OK4bsjtjzl3isn1Md+Gp0ejMzaXIKTcz/dDqWnT775Zi+LGw== X-Received: by 2002:a63:cd4c:: with SMTP id a12mr21132195pgj.252.1548700162109; Mon, 28 Jan 2019 10:29:22 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id a4sm36083558pgv.70.2019.01.28.10.29.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Jan 2019 10:29:21 -0800 (PST) From: Jakub Kicinski To: alexei.starovoitov@gmail.com, daniel@iogearbox.net Cc: oss-drivers@netronome.com, netdev@vger.kernel.org, Jakub Kicinski Subject: [PATCH bpf-next] tools: bpftool: warn about risky prog array updates Date: Mon, 28 Jan 2019 10:29:15 -0800 Message-Id: <20190128182915.434-1-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When prog array is updated with bpftool users often refer to the map via the ID. Unfortunately, that's likely to lead to confusion because prog arrays get flushed when the last user reference is gone. If there is no other reference bpftool will create one, update successfully just to close the map again and have it flushed. Warn about this case in non-JSON mode. If the problem continues causing confusion we can remove the support for referring to a map by ID for prog array update completely. For now it seems like the potential inconvenience to users who know what they're doing outweighs the benefit. Signed-off-by: Jakub Kicinski Reviewed-by: Quentin Monnet --- tools/bpf/bpftool/map.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index 8cb0e26907ff..6f33818bb6b6 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -426,6 +426,9 @@ static int parse_elem(char **argv, struct bpf_map_info *info, p_err("not enough value arguments for map of progs"); return -1; } + if (is_prefix(*argv, "id")) + p_info("Warning: updating program array via MAP_ID, make sure this map is kept open\n" + " by some process or pinned otherwise update will be lost"); fd = prog_parse_fd(&argc, &argv); if (fd < 0) -- 2.19.2