Module: xenomai-3
Branch: wip/rtnet-fixes
Commit: 237047d75dd892367626a0c64fe17ff6cf9fa2a3
URL:    
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=237047d75dd892367626a0c64fe17ff6cf9fa2a3

Author: Philippe Gerum <r...@xenomai.org>
Date:   Mon Feb  5 17:24:10 2018 +0100

net/tdma: prevent crash on detaching the TDMA discipline

See http://xenomai.org/pipermail/xenomai/2018-January/038247.html
and http://xenomai.org/pipermail/xenomai/2018-January/038249.html

---

 kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c 
b/kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c
index ad29d5d..dcad64f 100644
--- a/kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c
+++ b/kernel/drivers/net/stack/rtmac/tdma/tdma_worker.c
@@ -173,12 +173,14 @@ static struct tdma_job *do_reply_cal_job(struct tdma_priv 
*tdma,
 
 void tdma_worker(void *arg)
 {
-    struct tdma_priv    *tdma = (struct tdma_priv *)arg;
+    struct tdma_priv    *tdma = arg;
     struct tdma_job     *job;
     rtdm_lockctx_t      lockctx;
+    int ret;
 
-
-    rtdm_event_wait(&tdma->worker_wakeup);
+    ret = rtdm_event_wait(&tdma->worker_wakeup);
+    if (ret)
+           return;
 
     rtdm_lock_get_irqsave(&tdma->lock, lockctx);
 
@@ -189,7 +191,9 @@ void tdma_worker(void *arg)
         switch (job->id) {
             case WAIT_ON_SYNC:
                 rtdm_lock_put_irqrestore(&tdma->lock, lockctx);
-                rtdm_event_wait(&tdma->sync_event);
+                ret = rtdm_event_wait(&tdma->sync_event);
+               if (ret)
+                       return;
                 rtdm_lock_get_irqsave(&tdma->lock, lockctx);
                 break;
 


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai-git

Reply via email to