From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2993188AbXDSIFR (ORCPT ); Thu, 19 Apr 2007 04:05:17 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S2993170AbXDSIEq (ORCPT ); Thu, 19 Apr 2007 04:04:46 -0400 Received: from ebiederm.dsl.xmission.com ([166.70.28.69]:45753 "EHLO ebiederm.dsl.xmission.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2993169AbXDSIDc (ORCPT ); Thu, 19 Apr 2007 04:03:32 -0400 From: "Eric W. Biederman" To: " Cc: , Oleg Nesterov , Christoph Hellwig , , "Eric W. Biederman" , Marcel Holtmann Subject: [PATCH] bluetooth hidp: Convert to kthread API. Date: Thu, 19 Apr 2007 01:58:53 -0600 Message-Id: <1176969605114-git-send-email-ebiederm@xmission.com> X-Mailer: git-send-email 1.5.1.1.g2de0 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org From: Eric W. Biederman This patch starts up khidp using kthread_run instead of kernel_thread and daemonize, resulting is slightly simpler and more maintainable code. Cc: Marcel Holtmann Signed-off-by: Eric W. Biederman --- net/bluetooth/hidp/core.c | 29 ++++++++++++++++------------- 1 files changed, 16 insertions(+), 13 deletions(-) diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index df2c471..1c9b202 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -531,22 +532,11 @@ static int hidp_session(void *arg) struct sock *ctrl_sk = session->ctrl_sock->sk; struct sock *intr_sk = session->intr_sock->sk; struct sk_buff *skb; - int vendor = 0x0000, product = 0x0000; wait_queue_t ctrl_wait, intr_wait; BT_DBG("session %p", session); - if (session->input) { - vendor = session->input->id.vendor; - product = session->input->id.product; - } - - if (session->hid) { - vendor = session->hid->vendor; - product = session->hid->product; - } - daemonize("khidpd_%04x%04x", vendor, product); set_user_nice(current, -15); init_waitqueue_entry(&ctrl_wait, current); @@ -747,7 +737,9 @@ static inline void hidp_setup_hid(struct hidp_session *session, struct hidp_conn int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock) { + int vendor = 0x0000, product = 0x0000; struct hidp_session *session, *s; + struct task_struct *task; int err; BT_DBG(""); @@ -834,8 +826,19 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, hidp_set_timer(session); - err = kernel_thread(hidp_session, session, CLONE_KERNEL); - if (err < 0) + if (session->input) { + vendor = session->input->id.vendor; + product = session->input->id.product; + } + + if (session->hid) { + vendor = session->hid->vendor; + product = session->hid->product; + } + task = kthread_run(hidp_session, session, + "khidpd_%04x%04x", vendor, product); + err = PTR_ERR(task); + if (IS_ERR(task)) goto unlink; if (session->input) { -- 1.5.0.g53756