From: Xiao Yang <yangx.jy@cn.fujitsu.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michal Marek <michal.lkml@markovi.net>,
Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] modpost: Get proper section index by get_secindex() instead of st_shndx
Date: Wed, 18 Mar 2020 18:08:46 +0800 [thread overview]
Message-ID: <5E71F32E.20300@cn.fujitsu.com> (raw)
In-Reply-To: <CAK7LNARcs_ouquXPWJfKkfpikXV-4t=2YVCjEWeDzaNhFjmaeA@mail.gmail.com>
On 2020/3/18 17:49, Masahiro Yamada wrote:
> On Tue, Mar 17, 2020 at 10:05 AM Xiao Yang<yangx.jy@cn.fujitsu.com> wrote:
>>
>> On 2020/3/16 20:28, Xiao Yang wrote:
>
> Thanks for catching this bug.
>
>
>>> (uint16_t) st_shndx is limited to 65535(i.e. SHN_XINDEX) so sym_get_data() gets
>>> wrong section index by st_shndx if object file(e.g. vmlinux.o) has more than
>> Hi,
>>
>> It seems better to say that sym_get_data() gets wrong section index by
>> st_shndx if requested symbol contains extended section index that is
>> more than 65535.
>
>
> Sounds good to me.
>
>
>> Thanks,
>> Xiao Yang
>>> 65535 sessions. In this case, we need to get proper section index by .symtab_shndx
>>> section.
>>>
>>> Module.symvers generated by building kernel with "-ffunction-sections -fdata-sections"
>>> shows the issue(i.e. cannot get 89902 by st_shndx):
>>> -------------------------------------------------------------------
>>> [root@Fedora-30 linux]# file Module.symvers
>>> Module.symvers: data
>>> [root@Fedora-30 linux]# head -n1 Module.symvers
>>> 0x5caf3011 ipv6_chk_custom_prefix ▒▒▒▒▒▒▒▒ vmlinux EXPORT_SYMBOL
>
>
> Could you delete this dump?
> I'd like to avoid garbling where possible.
>
Hi Masahiro,
Sure, it is OK to delete it.
>
>>> ...
>>> [root@Fedora-30 linux]# readelf -s -W vmlinux.o | grep __kstrtabns_ipv6_chk_custom_prefix
>>> 199174: 0000000000032578 1 OBJECT LOCAL DEFAULT 89902 __kstrtabns_ipv6_chk_custom_prefix
>>> [root@Fedora-30 linux]# readelf -S -W vmlinux.o | grep 89902
>>> [89902] __ksymtab_strings PROGBITS 0000000000000000 a94e00 0345a2 00 A 0 0 1
>>> -------------------------------------------------------------------
>>>
>>> Fixes: afa0459daa7b ("modpost: add a helper to get data pointed by a symbol")
>
> Strictly speaking, this commit does not introduce any bug.
>
> The CRC bug for MODVERSIONS exists since
> 56067812d5b0 ("kbuild: modversions: add infrastructure for emitting
> relative CRCs")
>
Will replace it with your suggested commit.
>
>>> Fixes: 5545322c86d9 ("modpost: refactor namespace_from_kstrtabns() to not hard-code section name")
>
> This commit hash is wrong.
> The correct one is
>
> Fixes: e84f9fbbece1 ("modpost: refactor namespace_from_kstrtabns() to
> not hard-code section name")
>
>
Sorry for the wrong commit hash.
Thanks a lot for your quick review.
I will send v2 patch soon.
Best Regards,
Xiao Yang
>
>
>
>>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>>> ---
>>> scripts/mod/modpost.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
>>> index d9418c58a8c0..c1fec8cac257 100644
>>> --- a/scripts/mod/modpost.c
>>> +++ b/scripts/mod/modpost.c
>>> @@ -310,7 +310,8 @@ static const char *sec_name(struct elf_info *elf, int secindex)
>>>
>>> static void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym)
>>> {
>>> - Elf_Shdr *sechdr =&info->sechdrs[sym->st_shndx];
>>> + unsigned int secindex = get_secindex(info, sym);
>>> + Elf_Shdr *sechdr =&info->sechdrs[secindex];
>>> unsigned long offset;
>>>
>>> offset = sym->st_value;
>>
>>
>>
>
>
> --
> Best Regards
> Masahiro Yamada
>
>
> .
>
prev parent reply other threads:[~2020-03-18 10:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-16 12:28 [PATCH] modpost: Get proper section index by get_secindex() instead of st_shndx Xiao Yang
2020-03-16 12:28 ` Xiao Yang
2020-03-17 1:04 ` Xiao Yang
2020-03-17 1:04 ` Xiao Yang
2020-03-18 9:49 ` Masahiro Yamada
2020-03-18 10:08 ` Xiao Yang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5E71F32E.20300@cn.fujitsu.com \
--to=yangx.jy@cn.fujitsu.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.