- big kernel lock unavailable - CLASS_ATTR callbacks changed signature --- mISDN-1_1_9_2.orig/drivers/isdn/hardware/mISDN/debugtool.c 2009-01-22 14:36:34.000000000 +0100 +++ mISDN-1_1_9_2/drivers/isdn/hardware/mISDN/debugtool.c 2011-07-11 14:46:28.845001528 +0200 @@ -121,11 +121,11 @@ static void dt_run (void) struct socket *sock; struct sockaddr_in addr; - lock_kernel(); + //lock_kernel(); current->flags |= PF_NOFREEZE; daemonize(MODULE_NAME); allow_signal(SIGKILL); - unlock_kernel(); + //unlock_kernel(); /* init socket */ ret = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &sock); @@ -181,12 +181,12 @@ static struct class dt_class = { #endif }; -static ssize_t attr_show_enabled (struct class *class, char *buf) +static ssize_t attr_show_enabled (struct class *class, struct class_attribute *attr, char *buf) { return sprintf(buf, "%d\n", dt_enabled); } -static ssize_t attr_store_enabled (struct class *class, const char *buf, size_t count) +static ssize_t attr_store_enabled (struct class *class, struct class_attribute *attr, const char *buf, size_t count) { if (count > 0 && *buf == '1') { mISDN_dt_enable(); @@ -241,13 +241,13 @@ void __exit dt_exit(void) mISDN_module_unregister(THIS_MODULE); if (thread) { - lock_kernel(); + //lock_kernel(); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) ret = kill_pid(find_pid_ns(thread->pid, &init_pid_ns), SIGKILL, 1); #else ret = kill_proc(thread->pid, SIGKILL, 1); #endif - unlock_kernel(); + //unlock_kernel(); if (ret < 0) printk(KERN_INFO MODULE_NAME ": Unknown error (%d) while trying to terminate kernel thread!\n", -ret); wake_up_interruptible(&skb_q_wait);