summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/transport/ChangeLog5
-rw-r--r--runtime/transport/transport.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog
index 11461fef..c7db329c 100644
--- a/runtime/transport/ChangeLog
+++ b/runtime/transport/ChangeLog
@@ -1,3 +1,8 @@
+2006-06-13 Martin Hunt <hunt@redhat.com>
+
+ * transport.c (_stp_transport_close): Destroy workqueue when
+ done.
+
2006-06-09 Martin Hunt <hunt@redhat.com>
* transport.c: Using the default workqueue was causing problems
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index 26e6dd9a..5b0b4ff2 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -168,9 +168,9 @@ static void _stp_work_queue (void *data)
/* if exit flag is set AND we have finished with probe_start() */
if (unlikely(_stp_exit_flag && atomic_read(&_stp_start_finished))) {
+ _stp_cleanup_and_exit(0);
cancel_delayed_work(&stp_exit);
flush_workqueue(_stp_wq);
- _stp_cleanup_and_exit(0);
wake_up_interruptible(&_stp_proc_wq);
} else
queue_delayed_work(_stp_wq, &stp_exit, STP_WORK_TIMER);
@@ -185,9 +185,9 @@ static void _stp_work_queue (void *data)
void _stp_transport_close()
{
kbug("************** transport_close *************\n");
- cancel_delayed_work(&stp_exit);
- flush_workqueue(_stp_wq);
_stp_cleanup_and_exit(1);
+ cancel_delayed_work(&stp_exit);
+ destroy_workqueue(_stp_wq);
wake_up_interruptible(&_stp_proc_wq);
#ifdef STP_RELAYFS
if (_stp_transport_mode == STP_TRANSPORT_RELAYFS)