For linux all functions marked with __exit should not be
called as a cleanup function in the module init functions.
This patch removes __exit from the gss module exit functions
that are being used as cleanup in the module init function.
The second issue addressed is the unknown symbols due to
gss_[init/exit]_keyring being called when HAVE_GSS_KEYRING
is not defined.
Signed-off-by: James Simmons <uja.ornl@gmail.com>
Change-Id: I2de7a3ade47f585f5ec1634ee55c1d2ce56f2921
Reviewed-on: http://review.whamcloud.com/8481
Tested-by: Jenkins
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Thomas Stibor <thomas@stibor.net>
Reviewed-by: Andrew Korty <ajk@iu.edu>
-void __exit gss_exit_cli_upcall(void)
+void gss_exit_cli_upcall(void)
void gss_cli_ctx_flags2str(unsigned long flags, char *buf, int bufsize);
/* gss_keyring.c */
void gss_cli_ctx_flags2str(unsigned long flags, char *buf, int bufsize);
/* gss_keyring.c */
+#ifndef HAVE_GSS_KEYRING
+static inline int __init gss_init_keyring(void) { return 0; }
+static inline void __exit gss_exit_keyring(void) { return; }
+#else
int __init gss_init_keyring(void);
void __exit gss_exit_keyring(void);
int __init gss_init_keyring(void);
void __exit gss_exit_keyring(void);
+#ifndef HAVE_GSS_PIPEFS
+static inline int __init gss_init_pipefs(void) { return 0; }
+static inline void __exit gss_exit_pipefs(void) { return; }
+#else
int __init gss_init_pipefs(void);
void __exit gss_exit_pipefs(void);
int __init gss_init_pipefs(void);
void __exit gss_exit_pipefs(void);
/* gss_bulk.c */
int gss_cli_prep_bulk(struct ptlrpc_request *req,
/* gss_bulk.c */
int gss_cli_prep_bulk(struct ptlrpc_request *req,
int gss_svc_wrap_bulk(struct ptlrpc_request *req,
struct ptlrpc_bulk_desc *desc);
int gss_svc_wrap_bulk(struct ptlrpc_request *req,
struct ptlrpc_bulk_desc *desc);
-/* gss_mech_switch.c */
-int init_kerberos_module(void);
-void cleanup_kerberos_module(void);
-
/* gss_generic_token.c */
int g_token_size(rawobj_t *mech, unsigned int body_size);
void g_make_token_header(rawobj_t *mech, int body_size, unsigned char **buf);
/* gss_generic_token.c */
int g_token_size(rawobj_t *mech, unsigned int body_size);
void g_make_token_header(rawobj_t *mech, int body_size, unsigned char **buf);
int gss_do_ctx_fini_rpc(struct gss_cli_ctx *gctx);
int __init gss_init_cli_upcall(void);
int gss_do_ctx_fini_rpc(struct gss_cli_ctx *gctx);
int __init gss_init_cli_upcall(void);
-void __exit gss_exit_cli_upcall(void);
+void gss_exit_cli_upcall(void);
/* gss_svc_upcall.c */
__u64 gss_get_next_ctx_index(void);
/* gss_svc_upcall.c */
__u64 gss_get_next_ctx_index(void);
void gss_svc_upcall_destroy_ctx(struct gss_svc_ctx *ctx);
int __init gss_init_svc_upcall(void);
void gss_svc_upcall_destroy_ctx(struct gss_svc_ctx *ctx);
int __init gss_init_svc_upcall(void);
-void __exit gss_exit_svc_upcall(void);
+void gss_exit_svc_upcall(void);
/* lproc_gss.c */
void gss_stat_oos_record_cli(int behind);
void gss_stat_oos_record_svc(int phase, int replay);
int __init gss_init_lproc(void);
/* lproc_gss.c */
void gss_stat_oos_record_cli(int behind);
void gss_stat_oos_record_svc(int phase, int replay);
int __init gss_init_lproc(void);
-void __exit gss_exit_lproc(void);
+void gss_exit_lproc(void);
/* gss_krb5_mech.c */
int __init init_kerberos_module(void);
/* gss_krb5_mech.c */
int __init init_kerberos_module(void);
-void __exit cleanup_kerberos_module(void);
+void cleanup_kerberos_module(void);
-void __exit cleanup_kerberos_module(void)
+void cleanup_kerberos_module(void)
{
lgss_mech_unregister(&gss_kerberos_mech);
}
{
lgss_mech_unregister(&gss_kerberos_mech);
}
-void __exit gss_exit_svc_upcall(void)
+void gss_exit_svc_upcall(void)
{
cache_purge(&rsi_cache);
cache_unregister_net(&rsi_cache, &init_net);
{
cache_purge(&rsi_cache);
cache_unregister_net(&rsi_cache, &init_net);
if (rc)
goto out_kerberos;
if (rc)
goto out_kerberos;
rc = gss_init_pipefs();
if (rc)
goto out_keyring;
rc = gss_init_pipefs();
if (rc)
goto out_keyring;
gss_init_at_reply_offset();
return 0;
gss_init_at_reply_offset();
return 0;
out_keyring:
gss_exit_keyring();
out_keyring:
gss_exit_keyring();
out_kerberos:
cleanup_kerberos_module();
out_svc_upcall:
out_kerberos:
cleanup_kerberos_module();
out_svc_upcall:
static void __exit sptlrpc_gss_exit(void)
{
gss_exit_keyring();
static void __exit sptlrpc_gss_exit(void)
{
gss_exit_keyring();
cleanup_kerberos_module();
gss_exit_svc_upcall();
gss_exit_cli_upcall();
cleanup_kerberos_module();
gss_exit_svc_upcall();
gss_exit_cli_upcall();