Commit c135e84a authored by Stephen Rothwell's avatar Stephen Rothwell Committed by J. Bruce Fields

sunrpc: fix up rpcauth_remove_module section mismatch

On Wed, 29 Sep 2010 14:02:38 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> After merging the final tree, today's linux-next build (powerpc
> ppc44x_defconfig) produced tis warning:
>
> WARNING: net/sunrpc/sunrpc.o(.init.text+0x110): Section mismatch in reference from the function init_sunrpc() to the function .exit.text:rpcauth_remove_module()
> The function __init init_sunrpc() references
> a function __exit rpcauth_remove_module().
> 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
> rpcauth_remove_module() so it may be used outside an exit section.
>
> Probably caused by commit 2f72c9b7
> ("sunrpc: The per-net skeleton").

This actually causes a build failure on a sparc32 defconfig build:

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

I applied the following patch for today:

Fixes:

`rpcauth_remove_module' referenced in section `.init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.o
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Acked-by: default avatarPavel Emelyanov <xemul@openvz.org>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 90d51b02
...@@ -122,8 +122,8 @@ extern const struct rpc_authops authnull_ops; ...@@ -122,8 +122,8 @@ extern const struct rpc_authops authnull_ops;
int __init rpc_init_authunix(void); int __init rpc_init_authunix(void);
int __init rpc_init_generic_auth(void); int __init rpc_init_generic_auth(void);
int __init rpcauth_init_module(void); int __init rpcauth_init_module(void);
void __exit rpcauth_remove_module(void); void rpcauth_remove_module(void);
void __exit rpc_destroy_generic_auth(void); void rpc_destroy_generic_auth(void);
void rpc_destroy_authunix(void); void rpc_destroy_authunix(void);
struct rpc_cred * rpc_lookup_cred(void); struct rpc_cred * rpc_lookup_cred(void);
......
...@@ -658,7 +658,7 @@ int __init rpcauth_init_module(void) ...@@ -658,7 +658,7 @@ int __init rpcauth_init_module(void)
return err; return err;
} }
void __exit rpcauth_remove_module(void) void rpcauth_remove_module(void)
{ {
rpc_destroy_authunix(); rpc_destroy_authunix();
rpc_destroy_generic_auth(); rpc_destroy_generic_auth();
......
...@@ -158,7 +158,7 @@ int __init rpc_init_generic_auth(void) ...@@ -158,7 +158,7 @@ int __init rpc_init_generic_auth(void)
return rpcauth_init_credcache(&generic_auth); return rpcauth_init_credcache(&generic_auth);
} }
void __exit rpc_destroy_generic_auth(void) void rpc_destroy_generic_auth(void)
{ {
rpcauth_destroy_credcache(&generic_auth); rpcauth_destroy_credcache(&generic_auth);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment