Message ID | 20230517131820.936553-1-arnd@kernel.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1160952vqo; Wed, 17 May 2023 07:04:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5FNLH2iXLpvKaKMt2jZ/ob8K9lKSbTri6quIGuorm0qGb1q7D36hmLThs8EtVQwhME3aQp X-Received: by 2002:a05:6a20:394b:b0:103:e813:77a1 with SMTP id r11-20020a056a20394b00b00103e81377a1mr2895855pzg.15.1684332273549; Wed, 17 May 2023 07:04:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684332273; cv=none; d=google.com; s=arc-20160816; b=f8uVgvwHkFETQqUI7/qwTbv3ro18W7N/eZaoCLrnwytRcF9zv/5+sMyRHo3AtlILMd Y/1/4ywX5ouvyW4t0X1pWcMC/ZI9PLpn9PsHfOaq+p0rvYJzk+u/68/4CJmqYB6/620l zVjfAfncUZHN2uxVEZuuIb8bCGVbpe5spLDGLcCHlAepiYwedDF9eDgnhPnEsKwEFGDx j5W6ruktBg499Fkgkkr0X68YyvUVyD972bDn+RfXyYeocurpSGuONslKIroJQDyTLGty 1Ou4kx0jfjmd5SHspXsBVx7J5kGGKKZpSK7WCT0IYG3DeNMpxLkAnr0tg1gRqh4sicek vE1w== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=2zv1nCCO0/ixVSKOdjrtDIgIFhTPmm/N6Z52woOrheU=; b=fH2XFYfo74idhGwN851S9a7r8y3Hj7lFIZiNOYpFK/M0s7WkCkK4QNZNzInPu1VGIH hZZl7TPKDSP37A1NYoG6vT6pqr2tShnCd2McCtMvg0LVYtL2sQ9cclsQJwbiosN9dHst kCxARHGYCVscwPoyUBVppfWCp6G4oooIP1u2jCtU5aQ+GJq7WJMdifZVaN0i3bgSPxFt BB0Iv2HEfDPRsA+EuugQ47E76xP+5GVFDyaZ0reRE04hmQP6u4+n9v763FRDffZOmjMT ju+4xInJ1G6QPB3RAdGEVRBZ42HQAL6xPvKoGAfdzbNi/G02JBoP6KtkYTjpgb45bnEQ RzaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=n8MkuYef; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l184-20020a6388c1000000b005342966f495si6311858pgd.717.2023.05.17.07.04.14; Wed, 17 May 2023 07:04:33 -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=n8MkuYef; 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 S231325AbjEQNSo (ORCPT <rfc822;pacteraone@gmail.com> + 99 others); Wed, 17 May 2023 09:18:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231855AbjEQNSh (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 17 May 2023 09:18:37 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CBC7D5580; Wed, 17 May 2023 06:18:26 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 6918D646FD; Wed, 17 May 2023 13:18:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 32B14C433EF; Wed, 17 May 2023 13:18:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684329505; bh=fFaBhSlTcMJjI8CnUH0C+qCZq/vTg7EvCm12mEBrjAY=; h=From:To:Cc:Subject:Date:From; b=n8MkuYef3+BHDNckeyaUgqc5b2L54WprOPLVQQ4Sy4FSWFX6SVa5c0IHQ4TQsUlML skyxSOiOqHcGbBXeq8XDDfC1ndeivE0CMdm39/hkih5011ohB7MwoFrlrE9K3lWJkN XVXX+kbld2p7EDaALZ4k9CNEqSVAtlHqpN79T1qINQaqtL3dQEDrUsBp4b3aLlzY1W 6MQ0W2X26bJugHIdCkulIrHOKky5rd5p2Wx9tk8vx+MwHrkhPyILNSReZ7Ae/4m7uG a6rCdMuQXCYEWMRE3aOKtzcRtWIFTiR467gshJtgOEn/NOcIrbA8zr6pT1rs2gK5Ay SkX0gSRUcPgBQ== From: Arnd Bergmann <arnd@kernel.org> To: Luis Chamberlain <mcgrof@kernel.org> Cc: linux-modules@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>, Zhen Lei <thunder.leizhen@huawei.com>, Peter Zijlstra <peterz@infradead.org>, Kees Cook <keescook@chromium.org>, linux-kernel@vger.kernel.org Subject: [PATCH] kallsyms: remove unused arch_get_kallsym() helper Date: Wed, 17 May 2023 15:18:07 +0200 Message-Id: <20230517131820.936553-1-arnd@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766150397970387094?= X-GMAIL-MSGID: =?utf-8?q?1766150397970387094?= |
Series |
kallsyms: remove unused arch_get_kallsym() helper
|
|
Commit Message
Arnd Bergmann
May 17, 2023, 1:18 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de> The arch_get_kallsym() function was introduced so that x86 could override it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline"), so now this does nothing except causing a warning about a missing prototype: kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export addresses of PTI entry trampolines") to simplify the code and avoid the warning. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- kernel/kallsyms.c | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-)
Comments
On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > The arch_get_kallsym() function was introduced so that x86 could override > it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove > the SYSCALL64 entry trampoline"), so now this does nothing except causing > a warning about a missing prototype: > > kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] > 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > > Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export > addresses of PTI entry trampolines") to simplify the code and avoid > the warning. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Shouldn't this go through x86 as this sort of fixesss commit bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? Luis > --- > kernel/kallsyms.c | 28 +--------------------------- > 1 file changed, 1 insertion(+), 27 deletions(-) > > diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c > index e01c435595f9..dac13659601f 100644 > --- a/kernel/kallsyms.c > +++ b/kernel/kallsyms.c > @@ -646,7 +646,6 @@ int sprint_backtrace_build_id(char *buffer, unsigned long address) > /* To avoid using get_symbol_offset for every symbol, we carry prefix along. */ > struct kallsym_iter { > loff_t pos; > - loff_t pos_arch_end; > loff_t pos_mod_end; > loff_t pos_ftrace_mod_end; > loff_t pos_bpf_end; > @@ -659,29 +658,9 @@ struct kallsym_iter { > int show_value; > }; > > -int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > - char *type, char *name) > -{ > - return -EINVAL; > -} > - > -static int get_ksymbol_arch(struct kallsym_iter *iter) > -{ > - int ret = arch_get_kallsym(iter->pos - kallsyms_num_syms, > - &iter->value, &iter->type, > - iter->name); > - > - if (ret < 0) { > - iter->pos_arch_end = iter->pos; > - return 0; > - } > - > - return 1; > -} > - > static int get_ksymbol_mod(struct kallsym_iter *iter) > { > - int ret = module_get_kallsym(iter->pos - iter->pos_arch_end, > + int ret = module_get_kallsym(iter->pos - kallsyms_num_syms, > &iter->value, &iter->type, > iter->name, iter->module_name, > &iter->exported); > @@ -764,7 +743,6 @@ static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) > iter->nameoff = get_symbol_offset(new_pos); > iter->pos = new_pos; > if (new_pos == 0) { > - iter->pos_arch_end = 0; > iter->pos_mod_end = 0; > iter->pos_ftrace_mod_end = 0; > iter->pos_bpf_end = 0; > @@ -780,10 +758,6 @@ static int update_iter_mod(struct kallsym_iter *iter, loff_t pos) > { > iter->pos = pos; > > - if ((!iter->pos_arch_end || iter->pos_arch_end > pos) && > - get_ksymbol_arch(iter)) > - return 1; > - > if ((!iter->pos_mod_end || iter->pos_mod_end > pos) && > get_ksymbol_mod(iter)) > return 1; > -- > 2.39.2 >
On Wed, May 24, 2023, at 07:07, Luis Chamberlain wrote: > On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: >> From: Arnd Bergmann <arnd@arndb.de> >> >> The arch_get_kallsym() function was introduced so that x86 could override >> it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove >> the SYSCALL64 entry trampoline"), so now this does nothing except causing >> a warning about a missing prototype: >> >> kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] >> 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, >> >> Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export >> addresses of PTI entry trampolines") to simplify the code and avoid >> the warning. >> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Shouldn't this go through x86 as this sort of fixesss commit > bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? That works for me as well, as long as someone picks it up. It's not really x86 any more though since that commit is five years old and removed the last reference from the x86 code. I sent it to you since you are the one that merged most of the kallsyms patches through the module tree, but I guess you are not actually maintaining that file (not blaming you, I'd also try to stay away from kallsyms). I can resend it to Andrew for the -mm tree. Arnd
On Wed, May 24, 2023 at 08:25:13AM +0200, Arnd Bergmann wrote: > On Wed, May 24, 2023, at 07:07, Luis Chamberlain wrote: > > On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: > >> From: Arnd Bergmann <arnd@arndb.de> > >> > >> The arch_get_kallsym() function was introduced so that x86 could override > >> it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove > >> the SYSCALL64 entry trampoline"), so now this does nothing except causing > >> a warning about a missing prototype: > >> > >> kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] > >> 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > >> > >> Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export > >> addresses of PTI entry trampolines") to simplify the code and avoid > >> the warning. > >> > >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > > > Shouldn't this go through x86 as this sort of fixesss commit > > bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? > > That works for me as well, as long as someone picks it up. It's > not really x86 any more though since that commit is five years > old and removed the last reference from the x86 code. Fair enough. > I sent it to you since you are the one that merged most of > the kallsyms patches through the module tree, but I guess > you are not actually maintaining that file (not blaming you, > I'd also try to stay away from kallsyms). > > I can resend it to Andrew for the -mm tree. OK, I just took the patch in, it's on the train, better get on before it gets lost. Luis
+ Alan Maguire On Wed, May 24, 2023 at 12:24 AM Luis Chamberlain <mcgrof@kernel.org> wrote: > > On Wed, May 24, 2023 at 08:25:13AM +0200, Arnd Bergmann wrote: > > On Wed, May 24, 2023, at 07:07, Luis Chamberlain wrote: > > > On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: > > >> From: Arnd Bergmann <arnd@arndb.de> > > >> > > >> The arch_get_kallsym() function was introduced so that x86 could override > > >> it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove > > >> the SYSCALL64 entry trampoline"), so now this does nothing except causing > > >> a warning about a missing prototype: > > >> > > >> kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] > > >> 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > > >> > > >> Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export > > >> addresses of PTI entry trampolines") to simplify the code and avoid > > >> the warning. > > >> > > >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > > > > > Shouldn't this go through x86 as this sort of fixesss commit > > > bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? > > > > That works for me as well, as long as someone picks it up. It's > > not really x86 any more though since that commit is five years > > old and removed the last reference from the x86 code. > > Fair enough. > > > I sent it to you since you are the one that merged most of > > the kallsyms patches through the module tree, but I guess > > you are not actually maintaining that file (not blaming you, > > I'd also try to stay away from kallsyms). > > > > I can resend it to Andrew for the -mm tree. > > OK, I just took the patch in, it's on the train, better get on before > it gets lost. This change broke compilation of BPF selftests in modules-next branch: progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in 'struct kallsym_iter' if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) ~~~~ ^ progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in 'struct kallsym_iter' if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) ~~~~ ^ I haven't looked into the proper fix for it yet. Thanks, Song
On Thu, May 25, 2023 at 06:45:35PM -0700, Song Liu wrote: > + Alan Maguire > > On Wed, May 24, 2023 at 12:24 AM Luis Chamberlain <mcgrof@kernel.org> wrote: > > > > On Wed, May 24, 2023 at 08:25:13AM +0200, Arnd Bergmann wrote: > > > On Wed, May 24, 2023, at 07:07, Luis Chamberlain wrote: > > > > On Wed, May 17, 2023 at 03:18:07PM +0200, Arnd Bergmann wrote: > > > >> From: Arnd Bergmann <arnd@arndb.de> > > > >> > > > >> The arch_get_kallsym() function was introduced so that x86 could override > > > >> it, but that override was removed in bf904d2762ee ("x86/pti/64: Remove > > > >> the SYSCALL64 entry trampoline"), so now this does nothing except causing > > > >> a warning about a missing prototype: > > > >> > > > >> kernel/kallsyms.c:662:12: error: no previous prototype for 'arch_get_kallsym' [-Werror=missing-prototypes] > > > >> 662 | int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, > > > >> > > > >> Restore the old behavior before d83212d5dd67 ("kallsyms, x86: Export > > > >> addresses of PTI entry trampolines") to simplify the code and avoid > > > >> the warning. > > > >> > > > >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > > > > > > > Shouldn't this go through x86 as this sort of fixesss commit > > > > bf904d2762ee ("x86/pti/64: Remove the SYSCALL64 entry trampoline")? > > > > > > That works for me as well, as long as someone picks it up. It's > > > not really x86 any more though since that commit is five years > > > old and removed the last reference from the x86 code. > > > > Fair enough. > > > > > I sent it to you since you are the one that merged most of > > > the kallsyms patches through the module tree, but I guess > > > you are not actually maintaining that file (not blaming you, > > > I'd also try to stay away from kallsyms). > > > > > > I can resend it to Andrew for the -mm tree. > > > > OK, I just took the patch in, it's on the train, better get on before > > it gets lost. > > This change broke compilation of BPF selftests in modules-next > branch: > > progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in > 'struct kallsym_iter' > if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > ~~~~ ^ > progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in > 'struct kallsym_iter' > if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > ~~~~ ^ > > I haven't looked into the proper fix for it yet. A quick attempt: Arnd, can you verify? diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c index 5ddcc46fd886..521267818f4d 100644 --- a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c +++ b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c @@ -59,9 +59,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx) } else { BPF_SEQ_PRINTF(seq, "0x%llx %c %s ", value, type, iter->name); } - if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) - BPF_SEQ_PRINTF(seq, "CORE "); - else if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) + if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) BPF_SEQ_PRINTF(seq, "MOD "); else if (!iter->pos_ftrace_mod_end || iter->pos_ftrace_mod_end > iter->pos) BPF_SEQ_PRINTF(seq, "FTRACE_MOD ");
On Fri, May 26, 2023, at 05:24, Luis Chamberlain wrote: > On Thu, May 25, 2023 at 06:45:35PM -0700, Song Liu wrote: >> On Wed, May 24, 2023 at 12:24 AM Luis Chamberlain <mcgrof@kernel.org> wrote: >> >> This change broke compilation of BPF selftests in modules-next >> branch: >> >> progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in >> 'struct kallsym_iter' >> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) >> ~~~~ ^ >> progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in >> 'struct kallsym_iter' >> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) >> ~~~~ ^ >> >> I haven't looked into the proper fix for it yet. > > A quick attempt: > > Arnd, can you verify? > > diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > index 5ddcc46fd886..521267818f4d 100644 > --- a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > +++ b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > @@ -59,9 +59,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx) > } else { > BPF_SEQ_PRINTF(seq, "0x%llx %c %s ", value, type, iter->name); > } > - if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > - BPF_SEQ_PRINTF(seq, "CORE "); > - else if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) > + if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) > BPF_SEQ_PRINTF(seq, "MOD "); > else if (!iter->pos_ftrace_mod_end || iter->pos_ftrace_mod_end > > iter->pos) > BPF_SEQ_PRINTF(seq, "FTRACE_MOD "); This looks correct to me, but I'm still failing to cross-build the selftests on my randconfig build setup, so I can't confirm that this avoids the build failure, and I don't understand the code well enough to be sure. Arnd
On 26/05/2023 07:41, Arnd Bergmann wrote: > On Fri, May 26, 2023, at 05:24, Luis Chamberlain wrote: >> On Thu, May 25, 2023 at 06:45:35PM -0700, Song Liu wrote: >>> On Wed, May 24, 2023 at 12:24 AM Luis Chamberlain <mcgrof@kernel.org> wrote: >>> >>> This change broke compilation of BPF selftests in modules-next >>> branch: >>> >>> progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in >>> 'struct kallsym_iter' >>> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) >>> ~~~~ ^ >>> progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in >>> 'struct kallsym_iter' >>> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) >>> ~~~~ ^ >>> >>> I haven't looked into the proper fix for it yet. >> >> A quick attempt: >> >> Arnd, can you verify? >> >> diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c >> b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c >> index 5ddcc46fd886..521267818f4d 100644 >> --- a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c >> +++ b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c >> @@ -59,9 +59,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx) >> } else { >> BPF_SEQ_PRINTF(seq, "0x%llx %c %s ", value, type, iter->name); >> } >> - if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) >> - BPF_SEQ_PRINTF(seq, "CORE "); >> - else if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) >> + if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) >> BPF_SEQ_PRINTF(seq, "MOD "); >> else if (!iter->pos_ftrace_mod_end || iter->pos_ftrace_mod_end > >> iter->pos) >> BPF_SEQ_PRINTF(seq, "FTRACE_MOD "); > > This looks correct to me, but I'm still failing to cross-build > the selftests on my randconfig build setup, so I can't confirm that > this avoids the build failure, and I don't understand the code well > enough to be sure. > Thanks for the fix! The change above works ; maybe having anything less than iter->pos_mod_end marked as a "CORE/MOD " symbol might be worth tweaking, but that's a minor thing. before: CLNG-BPF [test_maps] bpf_iter_ksym.bpf.o progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in 'struct kallsym_iter' if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) ~~~~ ^ progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in 'struct kallsym_iter' if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) ~~~~ ^ 2 errors generated. after the above is applied, bpf selftests build and iter ksym test passes: $ sudo ./test_progs -t bpf_iter ... #12/37 bpf_iter/ksym:OK ... Summary: 3/39 PASSED, 0 SKIPPED, 0 FAILED Feel free to add a Tested-by: Alan Maguire <alan.maguire@oracle.com> ...if needed. Thanks! Alan
On Fri, May 26, 2023 at 03:39:22PM +0100, Alan Maguire wrote: > On 26/05/2023 07:41, Arnd Bergmann wrote: > > On Fri, May 26, 2023, at 05:24, Luis Chamberlain wrote: > >> On Thu, May 25, 2023 at 06:45:35PM -0700, Song Liu wrote: > >>> On Wed, May 24, 2023 at 12:24 AM Luis Chamberlain <mcgrof@kernel.org> wrote: > >>> > >>> This change broke compilation of BPF selftests in modules-next > >>> branch: > >>> > >>> progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in > >>> 'struct kallsym_iter' > >>> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > >>> ~~~~ ^ > >>> progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in > >>> 'struct kallsym_iter' > >>> if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > >>> ~~~~ ^ > >>> > >>> I haven't looked into the proper fix for it yet. > >> > >> A quick attempt: > >> > >> Arnd, can you verify? > >> > >> diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > >> b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > >> index 5ddcc46fd886..521267818f4d 100644 > >> --- a/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > >> +++ b/tools/testing/selftests/bpf/progs/bpf_iter_ksym.c > >> @@ -59,9 +59,7 @@ int dump_ksym(struct bpf_iter__ksym *ctx) > >> } else { > >> BPF_SEQ_PRINTF(seq, "0x%llx %c %s ", value, type, iter->name); > >> } > >> - if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > >> - BPF_SEQ_PRINTF(seq, "CORE "); > >> - else if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) > >> + if (!iter->pos_mod_end || iter->pos_mod_end > iter->pos) > >> BPF_SEQ_PRINTF(seq, "MOD "); > >> else if (!iter->pos_ftrace_mod_end || iter->pos_ftrace_mod_end > > >> iter->pos) > >> BPF_SEQ_PRINTF(seq, "FTRACE_MOD "); > > > > This looks correct to me, but I'm still failing to cross-build > > the selftests on my randconfig build setup, so I can't confirm that > > this avoids the build failure, and I don't understand the code well > > enough to be sure. > > > > Thanks for the fix! The change above works ; maybe having > anything less than iter->pos_mod_end marked as a "CORE/MOD " symbol > might be worth tweaking, but that's a minor thing. > > before: > > CLNG-BPF [test_maps] bpf_iter_ksym.bpf.o > progs/bpf_iter_ksym.c:62:13: error: no member named 'pos_arch_end' in > 'struct kallsym_iter' > if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > ~~~~ ^ > progs/bpf_iter_ksym.c:62:35: error: no member named 'pos_arch_end' in > 'struct kallsym_iter' > if (!iter->pos_arch_end || iter->pos_arch_end > iter->pos) > ~~~~ ^ > 2 errors generated. > > after the above is applied, bpf selftests build and iter ksym test > passes: > > $ sudo ./test_progs -t bpf_iter > ... > #12/37 bpf_iter/ksym:OK > ... > Summary: 3/39 PASSED, 0 SKIPPED, 0 FAILED > > Feel free to add a > > Tested-by: Alan Maguire <alan.maguire@oracle.com> I just folded this into Arnd's patch and pushed to modules-next. Thanks! Luis
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index e01c435595f9..dac13659601f 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -646,7 +646,6 @@ int sprint_backtrace_build_id(char *buffer, unsigned long address) /* To avoid using get_symbol_offset for every symbol, we carry prefix along. */ struct kallsym_iter { loff_t pos; - loff_t pos_arch_end; loff_t pos_mod_end; loff_t pos_ftrace_mod_end; loff_t pos_bpf_end; @@ -659,29 +658,9 @@ struct kallsym_iter { int show_value; }; -int __weak arch_get_kallsym(unsigned int symnum, unsigned long *value, - char *type, char *name) -{ - return -EINVAL; -} - -static int get_ksymbol_arch(struct kallsym_iter *iter) -{ - int ret = arch_get_kallsym(iter->pos - kallsyms_num_syms, - &iter->value, &iter->type, - iter->name); - - if (ret < 0) { - iter->pos_arch_end = iter->pos; - return 0; - } - - return 1; -} - static int get_ksymbol_mod(struct kallsym_iter *iter) { - int ret = module_get_kallsym(iter->pos - iter->pos_arch_end, + int ret = module_get_kallsym(iter->pos - kallsyms_num_syms, &iter->value, &iter->type, iter->name, iter->module_name, &iter->exported); @@ -764,7 +743,6 @@ static void reset_iter(struct kallsym_iter *iter, loff_t new_pos) iter->nameoff = get_symbol_offset(new_pos); iter->pos = new_pos; if (new_pos == 0) { - iter->pos_arch_end = 0; iter->pos_mod_end = 0; iter->pos_ftrace_mod_end = 0; iter->pos_bpf_end = 0; @@ -780,10 +758,6 @@ static int update_iter_mod(struct kallsym_iter *iter, loff_t pos) { iter->pos = pos; - if ((!iter->pos_arch_end || iter->pos_arch_end > pos) && - get_ksymbol_arch(iter)) - return 1; - if ((!iter->pos_mod_end || iter->pos_mod_end > pos) && get_ksymbol_mod(iter)) return 1;