struct vfs_cred *vcred);
static void gss_sec_destroy_ctx(struct ptlrpc_sec *sec,
struct ptlrpc_cli_ctx *ctx);
-static __gss_mod_initialized = 0;
/********************************************
* wire data swabber *
********************************************/
int rc;
ENTRY;
- LASSERTF((__gss_mod_initialized == 1),
- "not initialized %d\n", __gss_mod_initialized);
LASSERT(req->rq_reqbuf);
LASSERT(req->rq_svc_ctx == NULL);
{
int rc;
- rc = sptlrpc_register_policy(&gss_policy);
- if (rc)
- return rc;
-
rc = gss_init_lproc();
if (rc)
- goto out_type;
+ return rc;
rc = gss_init_upcall();
if (rc)
if (rc)
goto out_upcall;
- __gss_mod_initialized = 1;
+ /*
+ * register policy after all other stuff be intialized, because it
+ * might be in used immediately after the registration.
+ */
+ rc = sptlrpc_register_policy(&gss_policy);
+ if (rc)
+ goto out_kerberos;
+
return 0;
+out_kerberos:
+ cleanup_kerberos_module();
out_upcall:
gss_exit_upcall();
out_lproc:
gss_exit_lproc();
-out_type:
- sptlrpc_unregister_policy(&gss_policy);
return rc;
}
static void __exit sptlrpc_gss_exit(void)
{
+ sptlrpc_unregister_policy(&gss_policy);
cleanup_kerberos_module();
gss_exit_upcall();
gss_exit_lproc();
- sptlrpc_unregister_policy(&gss_policy);
}
MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");