Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp1864022rwb; Fri, 19 Aug 2022 10:39:00 -0700 (PDT) X-Google-Smtp-Source: AA6agR4EV4z6eengTFpHsn3w4mXPBR0RCSF/5+3t5hKIe5faWyGGXxcyHcJLcNnsi7/B974d+irR X-Received: by 2002:a05:6a00:1907:b0:534:f847:b495 with SMTP id y7-20020a056a00190700b00534f847b495mr8872893pfi.47.1660930740629; Fri, 19 Aug 2022 10:39:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660930740; cv=none; d=google.com; s=arc-20160816; b=I9U7GIH3+svGFB4avrAXrVGufhS8Ey++1skjVK2uxBiwgYHZFEt4suToykOMA6lTSB KlDz/SRZ70b1dhkMCemVC5Bx2lxYkK4XDspFHXvlkNuBXSEIpYWytQR/pIzO1aM0cZ/G GlDjmQvyXAnC/jWatvC/QqVpCG1F1mY7BpCCfV1526Nju2oerlBfLYG3GzXmuIncy9JU 4R5yUvc8VzsEwtxZ5+lcf8DrkZ3uffMVI5bKqPsKC2xPobA6sdD1rRb3v/5WZpj2XXxs ETTUZQ1Y4s1ooB5joJBbv+6dlyA/flcz6axVo6TwIpzrrf/9fom9m9Pvw2y/i/zJd/Ms iIqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=aZig9oLJr/3OpDBhPDk9h0Hy/UZIXPccwQiIxhyrXCc=; b=ZNDOAYwbooz3BLU1cWOMAMAajcoqbk3/SMPLz4W8Ww4BqPjsf7C91ZMXKMCO+qbOf9 I8WpZpo00mcJ96MIKBTNhT5kBVV2SeqFzwaZ72zT7z53BUanX9WYUUWW68kFR5jIKl9s 4tATccZzuyW7CcACMo1J66Xi4SVonIlZBpgm+1Jc/57G7l4c864t9tw4bpjACnZdazny uWNfgxgf+dhLhrCuSWoUqm4e0qR2uJVlnPLMOcAqwsv8OL8epZGetT1X4TclXyz6Xw8n 2TpyhN2r0zx1xEJiyHqnxiapLsXM66Fav+Q450EtJllt3KUAsD3+XQfsPK6munltUib7 u5CA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=IkIZZz9C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q12-20020a63e94c000000b0041b67131e27si2470915pgj.309.2022.08.19.10.38.49; Fri, 19 Aug 2022 10:39:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=IkIZZz9C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351777AbiHSQMR (ORCPT + 99 others); Fri, 19 Aug 2022 12:12:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351833AbiHSQKm (ORCPT ); Fri, 19 Aug 2022 12:10:42 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82EAF111C1A; Fri, 19 Aug 2022 08:56:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id BED2CB8280C; Fri, 19 Aug 2022 15:56:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 37430C433B5; Fri, 19 Aug 2022 15:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1660924610; bh=iOh6uWjcpXFkilIkw/nm7flW4RG2vftkNVAa2Y5AeJ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IkIZZz9CK2LY1d28DK6e3nPdqJMUl7JG9pZF6deQPvDqQDV/23S0orJGnNHDfy2wW ttyhzdsfq0fBVIlNYLLo5NlU3Oj9HlXRORWKOVDgeh0rWPaOV5SvmDQKyneBEmblXM Pqnty1QDqvXQsifSAJFL9cC3YK7BYC4y5ajVigvE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Anquan Wu , Andrii Nakryiko , Sasha Levin Subject: [PATCH 5.10 226/545] libbpf: Fix the name of a reused map Date: Fri, 19 Aug 2022 17:39:56 +0200 Message-Id: <20220819153839.492975465@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220819153829.135562864@linuxfoundation.org> References: <20220819153829.135562864@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Anquan Wu [ Upstream commit bf3f00378524adae16628cbadbd11ba7211863bb ] BPF map name is limited to BPF_OBJ_NAME_LEN. A map name is defined as being longer than BPF_OBJ_NAME_LEN, it will be truncated to BPF_OBJ_NAME_LEN when a userspace program calls libbpf to create the map. A pinned map also generates a path in the /sys. If the previous program wanted to reuse the map, it can not get bpf_map by name, because the name of the map is only partially the same as the name which get from pinned path. The syscall information below show that map name "process_pinned_map" is truncated to "process_pinned_". bpf(BPF_OBJ_GET, {pathname="/sys/fs/bpf/process_pinned_map", bpf_fd=0, file_flags=0}, 144) = -1 ENOENT (No such file or directory) bpf(BPF_MAP_CREATE, {map_type=BPF_MAP_TYPE_HASH, key_size=4, value_size=4,max_entries=1024, map_flags=0, inner_map_fd=0, map_name="process_pinned_",map_ifindex=0, btf_fd=3, btf_key_type_id=6, btf_value_type_id=10,btf_vmlinux_value_type_id=0}, 72) = 4 This patch check that if the name of pinned map are the same as the actual name for the first (BPF_OBJ_NAME_LEN - 1), bpf map still uses the name which is included in bpf object. Fixes: 26736eb9a483 ("tools: libbpf: allow map reuse") Signed-off-by: Anquan Wu Signed-off-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/OSZP286MB1725CEA1C95C5CB8E7CCC53FB8869@OSZP286MB1725.JPNP286.PROD.OUTLOOK.COM Signed-off-by: Sasha Levin --- tools/lib/bpf/libbpf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 8fada26529b7..66d7f8d494de 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -3652,7 +3652,7 @@ static int bpf_get_map_info_from_fdinfo(int fd, struct bpf_map_info *info) int bpf_map__reuse_fd(struct bpf_map *map, int fd) { struct bpf_map_info info = {}; - __u32 len = sizeof(info); + __u32 len = sizeof(info), name_len; int new_fd, err; char *new_name; @@ -3662,7 +3662,12 @@ int bpf_map__reuse_fd(struct bpf_map *map, int fd) if (err) return err; - new_name = strdup(info.name); + name_len = strlen(info.name); + if (name_len == BPF_OBJ_NAME_LEN - 1 && strncmp(map->name, info.name, name_len) == 0) + new_name = strdup(map->name); + else + new_name = strdup(info.name); + if (!new_name) return -errno; -- 2.35.1