Subject: [PATCH] rndis: section mismatch fix

This patch removes the following section mismatch warning,
by moving the function rndis_init() from .init.text to .text.

WARNING: vmlinux.o(.text+0x1aeca5a): Section mismatch in reference from the function rndis_bind_config() to the function .init.text:rndis_init()
The function rndis_bind_config() references
the function __init rndis_init().
This is often because rndis_bind_config lacks a __init
annotation or the annotation of rndis_init is wrong.

Signed-off-by: Henrik Kretzschmar <[email protected]>
---
This patch is against Linus tree and tested.

drivers/usb/gadget/rndis.c | 2 +-
drivers/usb/gadget/rndis.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c
index 020fa5a..ee337f7 100644
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -1148,7 +1148,7 @@ static struct proc_dir_entry *rndis_connect_state [RNDIS_MAX_CONFIGS];
#endif /* CONFIG_USB_GADGET_DEBUG_FILES */


-int __init rndis_init (void)
+int rndis_init(void)
{
u8 i;

diff --git a/drivers/usb/gadget/rndis.h b/drivers/usb/gadget/rndis.h
index c236aaa..907c330 100644
--- a/drivers/usb/gadget/rndis.h
+++ b/drivers/usb/gadget/rndis.h
@@ -262,7 +262,7 @@ int rndis_signal_disconnect (int configNr);
int rndis_state (int configNr);
extern void rndis_set_host_mac (int configNr, const u8 *addr);

-int __devinit rndis_init (void);
+int rndis_init(void);
void rndis_exit (void);

#endif /* _LINUX_RNDIS_H */
--
1.7.0.4


2010-08-20 19:34:24

by David Brownell

[permalink] [raw]
Subject: Re: [PATCH] rndis: section mismatch fix



--- On Fri, 8/20/10, Henrik Kretzschmar <[email protected]> wrote:

> This patch removes the following
> section mismatch warning,

Yeah, some folk have been aggressively adding bloat
to the gadget stack, starting by forcing init-only
code to stick in memory all the time, and this kind
of link bug is a symptom of code they've touched but
not fixed fully.

For now I don't see any option beyond accepting the
bloat. Part of it is caused by non-USB tools which
also promote bloat, ignoring the fact that embedded
Linux tends not to have MegaBytes of RAM (or flash)
to waste, in the way that most x86 systems do.