Re: Help needed to fix section mismatch warnings

Randy Dunlap
2008-01-10T19:19:41Z

On Wed, 9 Jan 2008 22:25:42 -0800 Randy Dunlap wrote:

> On Sun, 6 Jan 2008 15:07:28 +0100 Sam Ravnborg wrote:
>
>
> > This is the current list of warnings
>
> Sam,
>
> Several of these are due to driver variable names not matching
> the whitelisted names in modpost. I have patches for the ones
> that I have identified so far. And I have patches for a few of
> the others that are true section mismatch problems (total of 8
> patches ready for now).
>
> The whitelisted names will always be a (small) problem.
> Can __init_refok be used in these cases.. or some other new
> attribute, instead of forever adding to the whitelist or
> modifying variable names?

Sam (or anyone :),

I guess that I'm a little confused. Instead of changing
variable names to match the modpost whitelist, I tested adding
__init_refok or __initdata_refok to these (driver) structs that
generated the modpost warnings.

Example: drivers/char/tpm/tpm_infineon.c

--- linux-2.6.24-rc7-git1.orig/drivers/char/tpm/tpm_infineon.c
+++ linux-2.6.24-rc7-git1/drivers/char/tpm/tpm_infineon.c
@@ -611,7 +611,7 @@ static __devexit void tpm_inf_pnp_remove
}
}

-static struct pnp_driver tpm_inf_pnp = {
+static struct pnp_driver __init_refok tpm_inf_pnp = {
.name = "tpm_inf_pnp",
.driver = {
.owner = THIS_MODULE,

This has a build warning with my toolchain:

CC drivers/char/tpm/tpm_infineon.o
linux-2.6.24-rc7-git1/drivers/char/tpm/tpm_infineon.c:614: warning: 'noinline' attribute ignored
{standard input}: Assembler messages:
{standard input}:2315: Warning: setting incorrect section attributes for .text.init.refok

but otherwise no section mismatch warning.

OTOH, using __initdata_refok has no build warning and no section
mismatch warning... but it (__initdata_refok) doesn't make sense
to me. Should it (make sense/be used)?
Is there a __refok that should be used here, instead of having
to modify variable names?

> > WARNING: vmlinux.o(.data+0x7e9b8): Section mismatch: reference to .init.text:tpm_inf_pnp_probe (between 'tpm_inf_pnp' and 'cn_idx')

Thanks,
---
~Randy