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?
For a Cc:stable patch, I'm missing a lot of context.
`-z uniq-symbol` linker flag which we are planning to use to
^^
Who's "we"?
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@vger.kernel.org # 3.17+ Signed-off-by: Alexander Lobakin alexandr.lobakin@intel.com
...