Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp425374iog; Wed, 15 Jun 2022 05:15:18 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sXyk/g2/iLwuicc6/jDg6Wor3ib9NvJTOwP+RT9WWWrwzrZxQT1hx1GNyKpjznevKAQgFy X-Received: by 2002:a17:906:778b:b0:715:85cb:20d with SMTP id s11-20020a170906778b00b0071585cb020dmr8637518ejm.284.1655295318203; Wed, 15 Jun 2022 05:15:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655295318; cv=none; d=google.com; s=arc-20160816; b=yVYGu9nyxBpU3v9frtglE6KJL6gIKXrBmLdTYDPmaI2IbgRED9Q0lPuKmh0mp1kAP3 mnybjBwGaIeftb2cDI1AKJS8WMCFpJ/rWT+u3U6mSAu2r+NWh6Xs/bsW2wemwI4z9got GX5bRUZP0Jr0yj8fuINH/F8RFbTsyu24aWZb9wE6NuohuT9oLgoao9vEIgOJZs/DtVK1 Wc6k6bBghD6KaG+MvtUZA6fk7U704JBy6MvpoTD+gLNCu8nbRaVlQnw6KqaNmZbxlTU+ KYJhd4z0Ox+Kd1TRiYoJe58OKnjmLxfwkD/LIosYJ6T8U/kFs+JiAeyAVVrPMUVPSE+9 xUrA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=vd25v7QWIQrr4Ahq+cfQ0BenJGkb0zrxBZdxxwYF5rE=; b=tb2svFOj0fmvlTLE6Y6FeHZuXHYD+AaEKoC++WsKiZW6b3mtZZTdek1KmZI27S2pIO XGC9oubygiiwCDlVJDkGxt01GTAvPsDoOLXNn+DOLCN2IiC6nOmz4E06zNKmVmB4AZeE elUoSvLH5j0cjyA4weWQXeLtr2SjymmoBWv1uw4VKxDPo0lYq8n7l5WrMnC0JDr6Zwlk UduIqP44Vls0feYHuTV9PU5ked2kXguCrfn/ip/SgYPtqmi+8n1pzgQ9WC/8lPyicOYw NLu7cb4rkfNp8fxdZ8xEImf65Q5Ty1nC2XwEBJiuyr39QfMCPlO106572T0e446HyEHZ vjHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fiPB3hzR; 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=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dr8-20020a170907720800b00711da8bb5easi16359129ejc.871.2022.06.15.05.14.52; Wed, 15 Jun 2022 05:15:18 -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=@kernel.org header.s=k20201202 header.b=fiPB3hzR; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245276AbiFOLWC (ORCPT + 99 others); Wed, 15 Jun 2022 07:22:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244782AbiFOLV4 (ORCPT ); Wed, 15 Jun 2022 07:21:56 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 727EF443ED; Wed, 15 Jun 2022 04:21:50 -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 22F07B81D6F; Wed, 15 Jun 2022 11:21:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8ED08C34115; Wed, 15 Jun 2022 11:21:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655292107; bh=KTU4AlMdJ6Qwzcq6e0SjeStZFVH5HrXYK+6yWZKNQWk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fiPB3hzRRUTPQ3bYn6ZtkwKeq36aaBVrQtnHters2EFVt1a3kTQ2kQOsUzFMRuG09 Oyx3Zso3NGhHotSEI5Kq2BEFlh5SSEvMVF0y/xFqFOPfv4CLj2+Z0rWlZAZcsk9V/h z1z7FZqeDRadGSVKLLlZ42L1UnAEpPwyiz2KoTFqHn/t39bq0NW20Y1poUrT/DtSsZ 4qLl0dyl6FsK8RyWAeJW9EiZ2nYsqoJDV73b/JU1D8ANQPBwC2rvtsFRXR+8f+gU6s VD3v6i3nCcUw83zRZQyyAhGqx4loTBANFccJIvYO6SCZA4R9wHFLKQW73t5nS72uiC WkM+Z7MUU9Yaw== From: Jiri Olsa To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko Cc: Song Liu , Steven Rostedt , netdev@vger.kernel.org, bpf@vger.kernel.org, lkml , Martin KaFai Lau , Yonghong Song , John Fastabend , KP Singh , Masami Hiramatsu Subject: [PATCHv3 bpf 2/4] ftrace: Keep address offset in ftrace_lookup_symbols Date: Wed, 15 Jun 2022 13:21:16 +0200 Message-Id: <20220615112118.497303-3-jolsa@kernel.org> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220615112118.497303-1-jolsa@kernel.org> References: <20220615112118.497303-1-jolsa@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.3 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 We want to store the resolved address on the same index as the symbol string, because that's the user (bpf kprobe link) code assumption. Also making sure we don't store duplicates that might be present in kallsyms. Acked-by: Song Liu Acked-by: Steven Rostedt (Google) Fixes: bed0d9a50dac ("ftrace: Add ftrace_lookup_symbols function") Signed-off-by: Jiri Olsa --- kernel/trace/ftrace.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index e750fe141a60..601ccf1b2f09 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -8029,15 +8029,23 @@ static int kallsyms_callback(void *data, const char *name, struct module *mod, unsigned long addr) { struct kallsyms_data *args = data; + const char **sym; + int idx; - if (!bsearch(&name, args->syms, args->cnt, sizeof(*args->syms), symbols_cmp)) + sym = bsearch(&name, args->syms, args->cnt, sizeof(*args->syms), symbols_cmp); + if (!sym) + return 0; + + idx = sym - args->syms; + if (args->addrs[idx]) return 0; addr = ftrace_location(addr); if (!addr) return 0; - args->addrs[args->found++] = addr; + args->addrs[idx] = addr; + args->found++; return args->found == args->cnt ? 1 : 0; } @@ -8062,6 +8070,7 @@ int ftrace_lookup_symbols(const char **sorted_syms, size_t cnt, unsigned long *a struct kallsyms_data args; int err; + memset(addrs, 0, sizeof(*addrs) * cnt); args.addrs = addrs; args.syms = sorted_syms; args.cnt = cnt; -- 2.35.3