Bluetooth: Use kthread API in bnep
kernel_thread() is a low-level implementation detail and EXPORT_SYMBOL(kernel_thread) is scheduled for removal. Use the <linux/kthread.h> API instead. Signed-off-by: Szymon Janc <szymon.janc@tieto.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
		
					parent
					
						
							
								aabf6f897e
							
						
					
				
			
			
				commit
				
					
						f4d7cd4a4c
					
				
			
		
					 2 changed files with 9 additions and 14 deletions
				
			
		|  | @ -155,7 +155,7 @@ struct bnep_session { | |||
| 	unsigned int  role; | ||||
| 	unsigned long state; | ||||
| 	unsigned long flags; | ||||
| 	atomic_t      killed; | ||||
| 	struct task_struct *task; | ||||
| 
 | ||||
| 	struct ethhdr eh; | ||||
| 	struct msghdr msg; | ||||
|  |  | |||
|  | @ -36,6 +36,7 @@ | |||
| #include <linux/errno.h> | ||||
| #include <linux/net.h> | ||||
| #include <linux/slab.h> | ||||
| #include <linux/kthread.h> | ||||
| #include <net/sock.h> | ||||
| 
 | ||||
| #include <linux/socket.h> | ||||
|  | @ -479,12 +480,11 @@ static int bnep_session(void *arg) | |||
| 
 | ||||
| 	BT_DBG(""); | ||||
| 
 | ||||
| 	daemonize("kbnepd %s", dev->name); | ||||
| 	set_user_nice(current, -15); | ||||
| 
 | ||||
| 	init_waitqueue_entry(&wait, current); | ||||
| 	add_wait_queue(sk_sleep(sk), &wait); | ||||
| 	while (!atomic_read(&s->killed)) { | ||||
| 	while (!kthread_should_stop()) { | ||||
| 		set_current_state(TASK_INTERRUPTIBLE); | ||||
| 
 | ||||
| 		/* RX */ | ||||
|  | @ -611,11 +611,12 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock) | |||
| 
 | ||||
| 	__bnep_link_session(s); | ||||
| 
 | ||||
| 	err = kernel_thread(bnep_session, s, CLONE_KERNEL); | ||||
| 	if (err < 0) { | ||||
| 	s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); | ||||
| 	if (IS_ERR(s->task)) { | ||||
| 		/* Session thread start failed, gotta cleanup. */ | ||||
| 		unregister_netdev(dev); | ||||
| 		__bnep_unlink_session(s); | ||||
| 		err = PTR_ERR(s->task); | ||||
| 		goto failed; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -639,15 +640,9 @@ int bnep_del_connection(struct bnep_conndel_req *req) | |||
| 	down_read(&bnep_session_sem); | ||||
| 
 | ||||
| 	s = __bnep_get_session(req->dst); | ||||
| 	if (s) { | ||||
| 		/* Wakeup user-space which is polling for socket errors.
 | ||||
| 		 * This is temporary hack until we have shutdown in L2CAP */ | ||||
| 		s->sock->sk->sk_err = EUNATCH; | ||||
| 
 | ||||
| 		/* Kill session thread */ | ||||
| 		atomic_inc(&s->killed); | ||||
| 		wake_up_interruptible(sk_sleep(s->sock->sk)); | ||||
| 	} else | ||||
| 	if (s) | ||||
| 		kthread_stop(s->task); | ||||
| 	else | ||||
| 		err = -ENOENT; | ||||
| 
 | ||||
| 	up_read(&bnep_session_sem); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Szymon Janc
				Szymon Janc