* [PATCH] hostap: fix section mismatch warning
@ 2007-10-29 18:20 Randy Dunlap
2007-10-29 20:52 ` John W. Linville
0 siblings, 1 reply; 4+ messages in thread
From: Randy Dunlap @ 2007-10-29 18:20 UTC (permalink / raw)
To: linux-wireless; +Cc: j, akpm
From: Randy Dunlap <randy.dunlap@oracle.com>
Fix section mismatch warning:
WARNING: vmlinux.o(.data+0x36fcc): Section mismatch: reference to .init.data:prism2_pci_id_table (between 'prism2_pci_drv_id' and 'prism2_pci_funcs')
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
---
drivers/net/wireless/hostap/hostap_pci.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- linux-2624-rc1g4-v1.orig/drivers/net/wireless/hostap/hostap_pci.c
+++ linux-2624-rc1g4-v1/drivers/net/wireless/hostap/hostap_pci.c
@@ -444,7 +444,7 @@ static int prism2_pci_resume(struct pci_
MODULE_DEVICE_TABLE(pci, prism2_pci_id_table);
-static struct pci_driver prism2_pci_drv_id = {
+static struct pci_driver prism2_pci_driver = {
.name = "hostap_pci",
.id_table = prism2_pci_id_table,
.probe = prism2_pci_probe,
@@ -458,13 +458,13 @@ static struct pci_driver prism2_pci_drv_
static int __init init_prism2_pci(void)
{
- return pci_register_driver(&prism2_pci_drv_id);
+ return pci_register_driver(&prism2_pci_driver);
}
static void __exit exit_prism2_pci(void)
{
- pci_unregister_driver(&prism2_pci_drv_id);
+ pci_unregister_driver(&prism2_pci_driver);
}
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] hostap: fix section mismatch warning 2007-10-29 18:20 [PATCH] hostap: fix section mismatch warning Randy Dunlap @ 2007-10-29 20:52 ` John W. Linville 2007-10-29 20:58 ` Randy Dunlap 0 siblings, 1 reply; 4+ messages in thread From: John W. Linville @ 2007-10-29 20:52 UTC (permalink / raw) To: Randy Dunlap; +Cc: linux-wireless, j, akpm On Mon, Oct 29, 2007 at 11:20:26AM -0700, Randy Dunlap wrote: > From: Randy Dunlap <randy.dunlap@oracle.com> > > Fix section mismatch warning: > > WARNING: vmlinux.o(.data+0x36fcc): Section mismatch: reference to .init.data:prism2_pci_id_table (between 'prism2_pci_drv_id' and 'prism2_pci_funcs') > > Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> > --- > drivers/net/wireless/hostap/hostap_pci.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > --- linux-2624-rc1g4-v1.orig/drivers/net/wireless/hostap/hostap_pci.c > +++ linux-2624-rc1g4-v1/drivers/net/wireless/hostap/hostap_pci.c > @@ -444,7 +444,7 @@ static int prism2_pci_resume(struct pci_ > > MODULE_DEVICE_TABLE(pci, prism2_pci_id_table); > > -static struct pci_driver prism2_pci_drv_id = { > +static struct pci_driver prism2_pci_driver = { > .name = "hostap_pci", > .id_table = prism2_pci_id_table, > .probe = prism2_pci_probe, Randy, Would you mind explaining how changing the name of the pci_driver variable resolves this? There must be some magic here... Thanks! John -- John W. Linville linville@tuxdriver.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] hostap: fix section mismatch warning 2007-10-29 20:52 ` John W. Linville @ 2007-10-29 20:58 ` Randy Dunlap 2007-10-29 21:06 ` John W. Linville 0 siblings, 1 reply; 4+ messages in thread From: Randy Dunlap @ 2007-10-29 20:58 UTC (permalink / raw) To: John W. Linville; +Cc: linux-wireless, j, akpm John W. Linville wrote: > On Mon, Oct 29, 2007 at 11:20:26AM -0700, Randy Dunlap wrote: >> From: Randy Dunlap <randy.dunlap@oracle.com> >> >> Fix section mismatch warning: >> >> WARNING: vmlinux.o(.data+0x36fcc): Section mismatch: reference to .init.data:prism2_pci_id_table (between 'prism2_pci_drv_id' and 'prism2_pci_funcs') >> >> Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> >> --- >> drivers/net/wireless/hostap/hostap_pci.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> --- linux-2624-rc1g4-v1.orig/drivers/net/wireless/hostap/hostap_pci.c >> +++ linux-2624-rc1g4-v1/drivers/net/wireless/hostap/hostap_pci.c >> @@ -444,7 +444,7 @@ static int prism2_pci_resume(struct pci_ >> >> MODULE_DEVICE_TABLE(pci, prism2_pci_id_table); >> >> -static struct pci_driver prism2_pci_drv_id = { >> +static struct pci_driver prism2_pci_driver = { >> .name = "hostap_pci", >> .id_table = prism2_pci_id_table, >> .probe = prism2_pci_probe, > > Randy, > > Would you mind explaining how changing the name of the pci_driver > variable resolves this? There must be some magic here... Oh, sure. In scripts/mod/modpost.c, there is a whitelist of variable name suffixes. Those suffixes are assumed to be safe for referring to non-text code/data. OTOH, if someone complains enough, another whitelist table element can also be added... /** * Whitelist to allow certain references to pass with no warning. * * Pattern 0: * Do not warn if funtion/data are marked with __init_refok/__initdata_refok. * The pattern is identified by: * fromsec = .text.init.refok* | .data.init.refok* * * Pattern 1: * If a module parameter is declared __initdata and permissions=0 * then this is legal despite the warning generated. * We cannot see value of permissions here, so just ignore * this pattern. * The pattern is identified by: * tosec = .init.data * fromsec = .data* * atsym =__param* * * Pattern 2: * Many drivers utilise a *driver container with references to * add, remove, probe functions etc. * These functions may often be marked __init and we do not want to * warn here. * the pattern is identified by: * tosec = init or exit section * fromsec = data section * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one, *_console, *_timer * * Pattern 3: * Whitelist all refereces from .text.head to .init.data * Whitelist all refereces from .text.head to .init.text * * Pattern 4: * Some symbols belong to init section but still it is ok to reference * these from non-init sections as these symbols don't have any memory * allocated for them and symbol address and value are same. So even * if init section is freed, its ok to reference those symbols. * For ex. symbols marking the init section boundaries. * This pattern is identified by * refsymname = __init_begin, _sinittext, _einittext * * Pattern 5: * Xtensa uses literal sections for constants that are accessed PC-relative. * Literal sections may safely reference their text sections. * (Note that the name for the literal section omits any trailing '.text') * tosec = <section>[.text] * fromsec = <section>.literal **/ static int secref_whitelist(const char *modname, const char *tosec, const char *fromsec, const char *atsym, const char *refsymname) { int len; const char **s; const char *pat2sym[] = { "driver", "_template", /* scsi uses *_template a lot */ "_timer", /* arm uses ops structures named _timer a lot */ "_sht", /* scsi also used *_sht to some extent */ "_ops", "_probe", "_probe_one", "_console", NULL }; const char *pat3refsym[] = { "__init_begin", "_sinittext", "_einittext", NULL }; -- ~Randy ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] hostap: fix section mismatch warning 2007-10-29 20:58 ` Randy Dunlap @ 2007-10-29 21:06 ` John W. Linville 0 siblings, 0 replies; 4+ messages in thread From: John W. Linville @ 2007-10-29 21:06 UTC (permalink / raw) To: Randy Dunlap; +Cc: linux-wireless, j, akpm On Mon, Oct 29, 2007 at 01:58:39PM -0700, Randy Dunlap wrote: > >Would you mind explaining how changing the name of the pci_driver > >variable resolves this? There must be some magic here... > > Oh, sure. In scripts/mod/modpost.c, there is a whitelist of variable > name suffixes. Those suffixes are assumed to be safe for referring > to non-text code/data. OTOH, if someone complains enough, another > whitelist table element can also be added... Ah, got it. Thanks! John -- John W. Linville linville@tuxdriver.com ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-10-29 21:07 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-10-29 18:20 [PATCH] hostap: fix section mismatch warning Randy Dunlap 2007-10-29 20:52 ` John W. Linville 2007-10-29 20:58 ` Randy Dunlap 2007-10-29 21:06 ` John W. Linville
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.