Boolean ssh_interceptor_proc_init(SshInterceptor interceptor) { char name[128]; /* Create a directory under /proc/ */ snprintf(name, sizeof(name), "%s%s", SSH_PROC_ROOT, ssh_device_suffix); interceptor->proc_dir = create_proc_entry(name, S_IFDIR, NULL); if (interceptor->proc_dir == NULL) goto error; if (interceptor_ipm_proc_entry_init(interceptor) == FALSE) goto error; if (interceptor_version_proc_entry_init(interceptor) == FALSE) goto error; return TRUE; error: SSH_DEBUG(SSH_D_ERROR, ("Could not create /proc/%s", name)); interceptor_ipm_proc_entry_uninit(interceptor); interceptor_version_proc_entry_uninit(interceptor); if (interceptor->proc_dir) remove_proc_entry(interceptor->proc_dir->name, NULL); interceptor->proc_dir = NULL; return FALSE; }
void ssh_interceptor_proc_uninit(SshInterceptor interceptor) { local_bh_enable(); interceptor_ipm_proc_entry_uninit(interceptor); interceptor_version_proc_entry_uninit(interceptor); if (interceptor->proc_dir) remove_proc_entry(interceptor->proc_dir->name, NULL); interceptor->proc_dir = NULL; local_bh_disable(); }
Boolean ssh_interceptor_proc_init(SshInterceptor interceptor) { char name[128]; /* Softirqs are always enabled here. */ SSH_ASSERT(!in_softirq()); /* Create a directory under /proc/ */ ssh_snprintf(name, sizeof(name), "%s%s", SSH_PROC_ROOT, ssh_device_suffix); interceptor->proc_dir = create_proc_entry(name, S_IFDIR, NULL); if (interceptor->proc_dir == NULL) goto error; if (interceptor_ipm_proc_entry_init(interceptor) == FALSE) goto error; #ifdef DEBUG_LIGHT if (interceptor_stats_proc_entry_init(interceptor) == FALSE) goto error; if (interceptor_debug_proc_entry_init(interceptor) == FALSE) goto error; #endif /* DEBUG_LIGHT */ if (interceptor_version_proc_entry_init(interceptor) == FALSE) goto error; return TRUE; error: SSH_DEBUG(SSH_D_ERROR, ("Could not create /proc/%s", name)); interceptor_ipm_proc_entry_uninit(interceptor); #ifdef DEBUG_LIGHT interceptor_stats_proc_entry_uninit(interceptor); interceptor_debug_proc_entry_uninit(interceptor); #endif /* DEBUG_LIGHT */ interceptor_version_proc_entry_uninit(interceptor); if (interceptor->proc_dir) remove_proc_entry(interceptor->proc_dir->name, NULL); interceptor->proc_dir = NULL; return FALSE; }
void ssh_interceptor_proc_uninit(SshInterceptor interceptor) { /* Enable softirqs. */ SSH_ASSERT(in_softirq()); local_bh_enable(); SSH_ASSERT(!in_softirq()); interceptor_ipm_proc_entry_uninit(interceptor); #ifdef DEBUG_LIGHT interceptor_stats_proc_entry_uninit(interceptor); interceptor_debug_proc_entry_uninit(interceptor); #endif /* DEBUG_LIGHT */ interceptor_version_proc_entry_uninit(interceptor); if (interceptor->proc_dir) remove_proc_entry(interceptor->proc_dir->name, NULL); interceptor->proc_dir = NULL; /* Disable softirqs. */ local_bh_disable(); SSH_ASSERT(in_softirq()); }