aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2011-08-05 10:53:52 -0400
committerGustavo F. Padovan <padovan@profusion.mobi>2011-08-11 18:50:28 -0400
commit687beaa0d1d937c327e2f97b4b4fa6c23ca70624 (patch)
tree157353f922d5505df1971ad7c9deeaf34fb05f52 /net
parentff062ea109217329b88693bc9081da893eb8b71b (diff)
Bluetooth: cmtp: Fix session cleanup on failed conn add
Once the session thread is running, cleanup must be handled by the session thread only. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/cmtp/core.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 42cb2f4c0db1..521baa4fe835 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -382,16 +382,17 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
382 382
383 if (!(session->flags & (1 << CMTP_LOOPBACK))) { 383 if (!(session->flags & (1 << CMTP_LOOPBACK))) {
384 err = cmtp_attach_device(session); 384 err = cmtp_attach_device(session);
385 if (err < 0) 385 if (err < 0) {
386 goto detach; 386 atomic_inc(&session->terminate);
387 wake_up_process(session->task);
388 up_write(&cmtp_session_sem);
389 return err;
390 }
387 } 391 }
388 392
389 up_write(&cmtp_session_sem); 393 up_write(&cmtp_session_sem);
390 return 0; 394 return 0;
391 395
392detach:
393 cmtp_detach_device(session);
394
395unlink: 396unlink:
396 __cmtp_unlink_session(session); 397 __cmtp_unlink_session(session);
397 398