Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2310006imc; Tue, 12 Mar 2019 11:06:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqxwZmH0xuhBkMTIbAp/HAHua7P69JNcUxE2y5OqhqpI9pn2MmD0Zlv+0vB2S79pb7U1lFW+ X-Received: by 2002:a65:5181:: with SMTP id h1mr36420075pgq.422.1552413990407; Tue, 12 Mar 2019 11:06:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552413990; cv=none; d=google.com; s=arc-20160816; b=svEwzOAPbfGdOSalaoaUYb8+lkewfP8hnHrGu05eXRnmEoECSgjSpkF56NiXb+2p3p ZvDN5A4rKhVRkHT+1A4xSK2/EBAE+Q7Aj1RZu8tUQFKPBJUy+WHNSDWse7IENEntxDgi vKw/16wQULbEaDSBOReYeSLOGvViplRlxtmoLqzWZEfsSWcbqXRsvV4VcMo2Ff3QQKXQ WnoA/7VSobRoa5CujJpAT9zhlVuUX3ii6UIiWwJ4njMZ5DN+pkc1WeRCYfjSs/FJyp/O YDL24J2uvKUEMqPTfztA+QMpCUGUSNd+9k1U76KD5kwqSL8W5LeTnU9/r96cTD00R9O+ 4J2A== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=tynx1WxAAJBvFESlqgspqpYOGvMHklaYqIQmBSr+sqA=; b=BRDS/M4TlCvjHR/rf8AGxUNwkaF/uMArAERfVmyhGBzwLzJr8prP9+RY3T0UD/4eCT HB+jK+vBYZwhHwkjrXDeAdcEbRaoAK5DiqC8CHapqi7Xwq9IHUG5R/q5iKL2uFfm3Yj5 pUOd3dMZCc3WI4a55nAI3QWa4FBRF7nWwTUd4WLU6H2jEdqKmn4N/+IhmcFM+vFHjF2R p1yqOADo0515NZuIYzlpmKfNS8TrRDIMc1mRZT4fFeCrKy8vX7EwWphGmYK2JEX3YWvf 41QJrpF9PGd8YbsBsZVtSZedarHNIh8pRofPcCh0l3MuMiE/i+vBKcpkVy8KPfK368nx ndLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pEZqq8oi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y18si7956321pgf.247.2019.03.12.11.06.14; Tue, 12 Mar 2019 11:06:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pEZqq8oi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729022AbfCLSD6 (ORCPT + 99 others); Tue, 12 Mar 2019 14:03:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:48786 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727661AbfCLRMv (ORCPT ); Tue, 12 Mar 2019 13:12:51 -0400 Received: from localhost (unknown [104.133.8.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C48B12087C; Tue, 12 Mar 2019 17:12:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552410770; bh=1/UxabZLHHTqApMCkEzMzFjlt3NFp6smdw2c9XMyBis=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pEZqq8oiPblo05yDoK/2berWKsbQgVK324aMYflxn1IoksOayi8Gir/ASXGz1e/Tc fmRx8Pm7VaZTfXVzyMwkDRKgii7knTAwEWq+UNPeWZfS0tqqz8dXXuNFO7uJwak7wB mI8ICLEVIE0MZn42bvGJRftOXmjN4J25aHSqp2B0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Paolo Abeni , Quentin Monnet , Daniel Borkmann , Sasha Levin Subject: [PATCH 4.20 086/171] bpftool: fix percpu maps updating Date: Tue, 12 Mar 2019 10:07:46 -0700 Message-Id: <20190312170355.412856088@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190312170347.868927101@linuxfoundation.org> References: <20190312170347.868927101@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit b0ca5ecb8e2279d706261f525f1bd0ba9e3fe800 ] When updating a percpu map, bpftool currently copies the provided value only into the first per CPU copy of the specified value, all others instances are left zeroed. This change explicitly copies the user-provided bytes to all the per CPU instances, keeping the sub-command syntax unchanged. v2 -> v3: - drop unused argument, as per Quentin's suggestion v1 -> v2: - rename the helper as per Quentin's suggestion Fixes: 71bb428fe2c1 ("tools: bpf: add bpftool") Signed-off-by: Paolo Abeni Reviewed-by: Quentin Monnet Signed-off-by: Daniel Borkmann Signed-off-by: Sasha Levin --- tools/bpf/bpftool/map.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index 9988d5c126b6..94094168c4a6 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -439,6 +439,20 @@ static char **parse_bytes(char **argv, const char *name, unsigned char *val, return argv + i; } +/* on per cpu maps we must copy the provided value on all value instances */ +static void fill_per_cpu_value(struct bpf_map_info *info, void *value) +{ + unsigned int i, n, step; + + if (!map_is_per_cpu(info->type)) + return; + + n = get_possible_cpus(); + step = round_up(info->value_size, 8); + for (i = 1; i < n; i++) + memcpy(value + i * step, value, info->value_size); +} + static int parse_elem(char **argv, struct bpf_map_info *info, void *key, void *value, __u32 key_size, __u32 value_size, __u32 *flags, __u32 **value_fd) @@ -518,6 +532,8 @@ static int parse_elem(char **argv, struct bpf_map_info *info, argv = parse_bytes(argv, "value", value, value_size); if (!argv) return -1; + + fill_per_cpu_value(info, value); } return parse_elem(argv, info, key, NULL, key_size, value_size, -- 2.19.1