aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/cmtp/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth/cmtp/core.c')
-rw-r--r--net/bluetooth/cmtp/core.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 7d00ddf9e9d..5a6e634f7fc 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -67,14 +67,12 @@ static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
67 67
68static void __cmtp_link_session(struct cmtp_session *session) 68static void __cmtp_link_session(struct cmtp_session *session)
69{ 69{
70 __module_get(THIS_MODULE);
71 list_add(&session->list, &cmtp_session_list); 70 list_add(&session->list, &cmtp_session_list);
72} 71}
73 72
74static void __cmtp_unlink_session(struct cmtp_session *session) 73static void __cmtp_unlink_session(struct cmtp_session *session)
75{ 74{
76 list_del(&session->list); 75 list_del(&session->list);
77 module_put(THIS_MODULE);
78} 76}
79 77
80static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) 78static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
@@ -327,6 +325,7 @@ static int cmtp_session(void *arg)
327 up_write(&cmtp_session_sem); 325 up_write(&cmtp_session_sem);
328 326
329 kfree(session); 327 kfree(session);
328 module_put_and_exit(0);
330 return 0; 329 return 0;
331} 330}
332 331
@@ -376,9 +375,11 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
376 375
377 __cmtp_link_session(session); 376 __cmtp_link_session(session);
378 377
378 __module_get(THIS_MODULE);
379 session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", 379 session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d",
380 session->num); 380 session->num);
381 if (IS_ERR(session->task)) { 381 if (IS_ERR(session->task)) {
382 module_put(THIS_MODULE);
382 err = PTR_ERR(session->task); 383 err = PTR_ERR(session->task);
383 goto unlink; 384 goto unlink;
384 } 385 }