Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4d7cd4a authored by Szymon Janc's avatar Szymon Janc Committed by Gustavo Padovan
Browse files

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: default avatarSzymon Janc <szymon.janc@tieto.com>
Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent aabf6f89
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+8 −13
Original line number Diff line number Diff line
@@ -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);