diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-02-05 10:40:09 -0500 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-03-09 11:07:41 -0500 |
| commit | e208c8f94392286aaf77c6d8f2a8b4d22fa3f1d7 (patch) | |
| tree | 1b21d5dfb0acb565aba34b27849fe5bc8c1e28c5 /lib/workqueue.c | |
| parent | c67667e74cfbb4e4f2edd3b70609cf9716d5c432 (diff) | |
bgpd, lib, zebra: Switch to work_queue_free_and_null
The work_queue_free function free'd up the wq pointer but
did not set it too NULL. This of course causes situations
where we may use the work_queue after it is freed. Let's
modify the work_queue to set the pointer for you.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/workqueue.c')
| -rw-r--r-- | lib/workqueue.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/workqueue.c b/lib/workqueue.c index d4ff3ee6ce..1af51c06c1 100644 --- a/lib/workqueue.c +++ b/lib/workqueue.c @@ -101,7 +101,7 @@ struct work_queue *work_queue_new(struct thread_master *m, return new; } -void work_queue_free(struct work_queue *wq) +void work_queue_free_original(struct work_queue *wq) { if (wq->thread != NULL) thread_cancel(wq->thread); @@ -119,6 +119,12 @@ void work_queue_free(struct work_queue *wq) return; } +void work_queue_free_and_null(struct work_queue **wq) +{ + work_queue_free_original(*wq); + *wq = NULL; +} + bool work_queue_is_scheduled(struct work_queue *wq) { return (wq->thread != NULL); |
