Skip to content

Commit

Permalink
Bluetooth: Use kthread API in bnep
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Gustavo F. Padovan <[email protected]>
  • Loading branch information
Szymon Janc authored and Gustavo F. Padovan committed Apr 5, 2011
1 parent aabf6f8 commit f4d7cd4
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 14 deletions.
2 changes: 1 addition & 1 deletion net/bluetooth/bnep/bnep.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
21 changes: 8 additions & 13 deletions net/bluetooth/bnep/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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;
}

Expand All @@ -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);
Expand Down

0 comments on commit f4d7cd4

Please sign in to comment.