aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2011-12-02 18:26:25 -0500
committerGustavo F. Padovan <padovan@profusion.mobi>2011-12-02 18:26:25 -0500
commit5c69b0ada634bca4111fcc332df5fad2447ec90f (patch)
treed54e608075292c97e54bfd182ceef061aa3fc7df /net/bluetooth
parentce7e4ad1436a0139c16225f2376134cff3ad24fe (diff)
parent33cb722c22f28964a501a56cc76397834c221c7a (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/bnep/core.c8
-rw-r--r--net/bluetooth/cmtp/core.c5
-rw-r--r--net/bluetooth/hci_event.c2
3 files changed, 7 insertions, 8 deletions
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index a6cd856046ab..42d53b85a808 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -77,17 +77,12 @@ static struct bnep_session *__bnep_get_session(u8 *dst)
77 77
78static void __bnep_link_session(struct bnep_session *s) 78static void __bnep_link_session(struct bnep_session *s)
79{ 79{
80 /* It's safe to call __module_get() here because sessions are added
81 by the socket layer which has to hold the reference to this module.
82 */
83 __module_get(THIS_MODULE);
84 list_add(&s->list, &bnep_session_list); 80 list_add(&s->list, &bnep_session_list);
85} 81}
86 82
87static void __bnep_unlink_session(struct bnep_session *s) 83static void __bnep_unlink_session(struct bnep_session *s)
88{ 84{
89 list_del(&s->list); 85 list_del(&s->list);
90 module_put(THIS_MODULE);
91} 86}
92 87
93static int bnep_send(struct bnep_session *s, void *data, size_t len) 88static int bnep_send(struct bnep_session *s, void *data, size_t len)
@@ -528,6 +523,7 @@ static int bnep_session(void *arg)
528 523
529 up_write(&bnep_session_sem); 524 up_write(&bnep_session_sem);
530 free_netdev(dev); 525 free_netdev(dev);
526 module_put_and_exit(0);
531 return 0; 527 return 0;
532} 528}
533 529
@@ -614,9 +610,11 @@ int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
614 610
615 __bnep_link_session(s); 611 __bnep_link_session(s);
616 612
613 __module_get(THIS_MODULE);
617 s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name); 614 s->task = kthread_run(bnep_session, s, "kbnepd %s", dev->name);
618 if (IS_ERR(s->task)) { 615 if (IS_ERR(s->task)) {
619 /* Session thread start failed, gotta cleanup. */ 616 /* Session thread start failed, gotta cleanup. */
617 module_put(THIS_MODULE);
620 unregister_netdev(dev); 618 unregister_netdev(dev);
621 __bnep_unlink_session(s); 619 __bnep_unlink_session(s);
622 err = PTR_ERR(s->task); 620 err = PTR_ERR(s->task);
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 9e8940b24bba..6c9c1fd601ca 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -65,14 +65,12 @@ static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr)
65 65
66static void __cmtp_link_session(struct cmtp_session *session) 66static void __cmtp_link_session(struct cmtp_session *session)
67{ 67{
68 __module_get(THIS_MODULE);
69 list_add(&session->list, &cmtp_session_list); 68 list_add(&session->list, &cmtp_session_list);
70} 69}
71 70
72static void __cmtp_unlink_session(struct cmtp_session *session) 71static void __cmtp_unlink_session(struct cmtp_session *session)
73{ 72{
74 list_del(&session->list); 73 list_del(&session->list);
75 module_put(THIS_MODULE);
76} 74}
77 75
78static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) 76static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci)
@@ -325,6 +323,7 @@ static int cmtp_session(void *arg)
325 up_write(&cmtp_session_sem); 323 up_write(&cmtp_session_sem);
326 324
327 kfree(session); 325 kfree(session);
326 module_put_and_exit(0);
328 return 0; 327 return 0;
329} 328}
330 329
@@ -374,9 +373,11 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
374 373
375 __cmtp_link_session(session); 374 __cmtp_link_session(session);
376 375
376 __module_get(THIS_MODULE);
377 session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", 377 session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d",
378 session->num); 378 session->num);
379 if (IS_ERR(session->task)) { 379 if (IS_ERR(session->task)) {
380 module_put(THIS_MODULE);
380 err = PTR_ERR(session->task); 381 err = PTR_ERR(session->task);
381 goto unlink; 382 goto unlink;
382 } 383 }
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 4f35ecdc6c62..e3f7a8192446 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -564,7 +564,7 @@ static void hci_setup(struct hci_dev *hdev)
564{ 564{
565 hci_setup_event_mask(hdev); 565 hci_setup_event_mask(hdev);
566 566
567 if (hdev->lmp_ver > 1) 567 if (hdev->hci_ver > 1)
568 hci_send_cmd(hdev, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL); 568 hci_send_cmd(hdev, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL);
569 569
570 if (hdev->features[6] & LMP_SIMPLE_PAIR) { 570 if (hdev->features[6] & LMP_SIMPLE_PAIR) {