Page MenuHomeFreeBSD

D14227.id39123.diff
No OneTemporary

D14227.id39123.diff

Index: sys/kgssapi/gss_impl.c
===================================================================
--- sys/kgssapi/gss_impl.c
+++ sys/kgssapi/gss_impl.c
@@ -56,39 +56,33 @@
/*
* Syscall hooks
*/
-static int gssd_syscall_offset = SYS_gssd_syscall;
-static struct sysent gssd_syscall_prev_sysent;
-MAKE_SYSENT(gssd_syscall);
-static bool_t gssd_syscall_registered = FALSE;
+static struct syscall_helper_data gssd_syscalls[] = {
+ SYSCALL_INIT_HELPER(gssd_syscall),
+ SYSCALL_INIT_LAST
+};
struct kgss_mech_list kgss_mechs;
CLIENT *kgss_gssd_handle;
struct mtx kgss_gssd_lock;
-static void
-kgss_init(void *dummy)
+static int
+kgss_load(void)
{
int error;
LIST_INIT(&kgss_mechs);
- error = syscall_register(&gssd_syscall_offset, &gssd_syscall_sysent,
- &gssd_syscall_prev_sysent, SY_THR_STATIC_KLD);
- if (error)
- printf("Can't register GSSD syscall\n");
- else
- gssd_syscall_registered = TRUE;
+ error = syscall_helper_register(gssd_syscalls, SY_THR_STATIC_KLD);
+ if (error != 0)
+ return (error);
+ return (0);
}
-SYSINIT(kgss_init, SI_SUB_LOCK, SI_ORDER_FIRST, kgss_init, NULL);
static void
-kgss_uninit(void *dummy)
+kgss_unload(void)
{
- if (gssd_syscall_registered)
- syscall_deregister(&gssd_syscall_offset,
- &gssd_syscall_prev_sysent);
+ syscall_helper_unregister(gssd_syscalls);
}
-SYSUNINIT(kgss_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, kgss_uninit, NULL);
int
sys_gssd_syscall(struct thread *td, struct gssd_syscall_args *uap)
@@ -293,6 +287,8 @@
switch (type) {
case MOD_LOAD:
+ if (error != 0)
+ return (error);
rpc_gss_entries.rpc_gss_refresh_auth = rpc_gss_refresh_auth;
rpc_gss_entries.rpc_gss_secfind = rpc_gss_secfind;
rpc_gss_entries.rpc_gss_secpurge = rpc_gss_secpurge;
@@ -317,8 +313,11 @@
rpc_gss_entries.rpc_gss_svc_max_data_length =
rpc_gss_svc_max_data_length;
mtx_init(&kgss_gssd_lock, "kgss_gssd_lock", NULL, MTX_DEF);
+ error = kgss_load();
break;
case MOD_UNLOAD:
+ kgss_unload();
+ mtx_destroy(&kgss_gssd_lock);
/*
* Unloading of the kgssapi module is not currently supported.
* If somebody wants this, we would need to keep track of

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 31, 6:07 PM (13 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28147713
Default Alt Text
D14227.id39123.diff (2 KB)

Event Timeline