2010-08-04 04:54:11

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the final tree (nfs tree related)

Hi Trond,

After merging the final tree, today's linux-next build (sparc
defconfig) failed like this:

`rpc_destroy_authunix' referenced in section `.init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o

Caused by commit 4c09a3aef02ef9bfab8322fadde269290563ede2 ("NFS: Ensure
the AUTH_UNIX credcache is allocated dynamically").

It also caused these warnings:

WARNING: vmlinux.o(.init.text+0x1e3b4): Section mismatch in reference from the f
unction rpcauth_init_module() to the function .exit.text:rpc_destroy_authunix()
The function __init rpcauth_init_module() references
a function __exit rpc_destroy_authunix().
This is often seen when error handling in the init function
uses functionality in the exit path.
The fix is often to remove the __exit annotation of
rpc_destroy_authunix() so it may be used outside an exit section.

I applied the following patch for today:

From: Stephen Rothwell <[email protected]>
Date: Wed, 4 Aug 2010 14:48:54 +1000
Subject: [PATCH] nfs: remove __exit from rpc_destroy_authunix

since it is referenced from an __init function.

Signed-off-by: Stephen Rothwell <[email protected]>
---
include/linux/sunrpc/auth.h | 2 +-
net/sunrpc/auth_unix.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
index d9d1402..652f2da 100644
--- a/include/linux/sunrpc/auth.h
+++ b/include/linux/sunrpc/auth.h
@@ -124,7 +124,7 @@ int __init rpc_init_generic_auth(void);
int __init rpcauth_init_module(void);
void __exit rpcauth_remove_module(void);
void __exit rpc_destroy_generic_auth(void);
-void __exit rpc_destroy_authunix(void);
+void rpc_destroy_authunix(void);

struct rpc_cred * rpc_lookup_cred(void);
struct rpc_cred * rpc_lookup_machine_cred(void);
diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
index 6385af7..4cb70dc 100644
--- a/net/sunrpc/auth_unix.c
+++ b/net/sunrpc/auth_unix.c
@@ -207,7 +207,7 @@ int __init rpc_init_authunix(void)
return rpcauth_init_credcache(&unix_auth);
}

-void __exit rpc_destroy_authunix(void)
+void rpc_destroy_authunix(void)
{
rpcauth_destroy_credcache(&unix_auth);
}
--
1.7.1

--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


2010-08-04 12:59:13

by Trond Myklebust

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the final tree (nfs tree related)

On Wed, 2010-08-04 at 14:54 +1000, Stephen Rothwell wrote:
> Hi Trond,
>
> After merging the final tree, today's linux-next build (sparc
> defconfig) failed like this:
>
> `rpc_destroy_authunix' referenced in section `.init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o
>
> Caused by commit 4c09a3aef02ef9bfab8322fadde269290563ede2 ("NFS: Ensure
> the AUTH_UNIX credcache is allocated dynamically").
>
> It also caused these warnings:
>
> WARNING: vmlinux.o(.init.text+0x1e3b4): Section mismatch in reference from the f
> unction rpcauth_init_module() to the function .exit.text:rpc_destroy_authunix()
> The function __init rpcauth_init_module() references
> a function __exit rpc_destroy_authunix().
> This is often seen when error handling in the init function
> uses functionality in the exit path.
> The fix is often to remove the __exit annotation of
> rpc_destroy_authunix() so it may be used outside an exit section.
>
> I applied the following patch for today:

Hi Stephen,

Thanks! I've fixed this up in the NFS linux-next tree.

Cheers
Trond