From: Borislav Petkov <bp@xxxxxxxxx> Date: Thu, 23 Dec 2021 17:19:06 +0100 > On Thu, Dec 23, 2021 at 01:21:55AM +0100, Alexander Lobakin wrote: > > For now, that condition from remove_dot(): > > > > if (m && (s[n + m] == '.' || s[n + m] == 0)) > > > > which was designed to test if it's a dot or a \0 after the suffix > > is never satisfied. > > This is due to that s[n + m] always points to the last digit of a > > numeric suffix, not on the symbol next to it: > > > > param_set_uint.0, s[n + m] is '0', s[n + m + 1] is '\0' > > > > So it's off by one and was like that since 2014. > > What's the relevance of this? Looking at > > 7d02b490e93c ("Kbuild, lto: Drop .number postfixes in modpost") > > what you're fixing here is something LTO-related. How do you trigger > this? It's just a couple lines below. I trigger this using `-z uniq-symbol` which uses numeric suffixes for globals as well. > > For a Cc:stable patch, I'm missing a lot of context. It fixes a commit dated 2014, thus Cc:stable. Although the remove_dot() might've been introduced for neverlanded GCC LTO, but in fact numeric suffixes are used a lot by the toolchains in regular builds as well. Just not for globals, that's why it's "well hidden". > > > `-z uniq-symbol` linker flag which we are planning to use to > ^^ > > Who's "we"? I thought it's a common saying in commit messages, isn't it? > > > simplify livepatching brings numeric suffixes back, fix this. > > Otherwise: > > > > ERROR: modpost: "param_set_uint.0" [vmlinux] is a static EXPORT_SYMBOL > > > > Fixes: fcd38ed0ff26 ("scripts: modpost: fix compilation warning") > > Cc: stable@xxxxxxxxxxxxxxx # 3.17+ > > Signed-off-by: Alexander Lobakin <alexandr.lobakin@xxxxxxxxx> > > ... > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette Thanks, Al