This is a race condition fix if the timer expire occurs when the last
frame is arrived otherwise we cleanup the list entry twice.

Signed-off-by: Alexander Aring <alex.ar...@gmail.com>
---
 net/ieee802154/6lowpan.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
index 10cf032..37c952e 100644
--- a/net/ieee802154/6lowpan.c
+++ b/net/ieee802154/6lowpan.c
@@ -1255,8 +1255,11 @@ static int lowpan_check_frag_complete(struct 
lowpan_fragment *frame)
        if (frame->bytes_rcv != frame->length)
                return ret;
 
+       ret = try_to_del_timer_sync(&frame->timer);
+       if (ret == -1)
+               return ret;
+
        list_del(&frame->list);
-       del_timer_sync(&frame->timer);
 
        ret = lowpan_give_skb_to_devices(frame->skb);
        kfree(frame);
-- 
1.8.4


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to