summaryrefslogtreecommitdiff
path: root/package/mISDN/patches/patch-drivers_isdn_hardware_mISDN_debugtool_c
blob: 78ffe69f4e82370175b03bc63a77df897be66c26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
	- 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);