1. 16 12月, 2017 3 次提交
  2. 28 9月, 2017 1 次提交
  3. 29 7月, 2017 1 次提交
  4. 23 5月, 2017 1 次提交
  5. 26 3月, 2017 2 次提交
  6. 28 1月, 2017 1 次提交
  7. 26 1月, 2017 2 次提交
  8. 09 11月, 2016 2 次提交
    • L
      batman-adv: fix rare race conditions on interface removal · 9b4aec64
      Linus Lüssing 提交于
      In rare cases during shutdown the following general protection fault can
      happen:
      
        general protection fault: 0000 [#1] SMP
        Modules linked in: batman_adv(O-) [...]
        CPU: 3 PID: 1714 Comm: rmmod Tainted: G           O    4.6.0-rc6+ #1
        [...]
        Call Trace:
         [<ffffffffa0363294>] batadv_hardif_disable_interface+0x29a/0x3a6 [batman_adv]
         [<ffffffffa0373db4>] batadv_softif_destroy_netlink+0x4b/0xa4 [batman_adv]
         [<ffffffff813b52f3>] __rtnl_link_unregister+0x48/0x92
         [<ffffffff813b9240>] rtnl_link_unregister+0xc1/0xdb
         [<ffffffff8108547c>] ? bit_waitqueue+0x87/0x87
         [<ffffffffa03850d2>] batadv_exit+0x1a/0xf48 [batman_adv]
         [<ffffffff810c26f9>] SyS_delete_module+0x136/0x1b0
         [<ffffffff8144dc65>] entry_SYSCALL_64_fastpath+0x18/0xa8
         [<ffffffff8108aaca>] ? trace_hardirqs_off_caller+0x37/0xa6
        Code: 89 f7 e8 21 bd 0d e1 4d 85 e4 75 0e 31 f6 48 c7 c7 50 d7 3b a0 e8 50 16 f2 e0 49 8b 9c 24 28 01 00 00 48 85 db 0f 84 b2 00 00 00 <48> 8b 03 4d 85 ed 48 89 45 c8 74 09 4c 39 ab f8 00 00 00 75 1c
        RIP  [<ffffffffa0371852>] batadv_purge_outstanding_packets+0x1c8/0x291 [batman_adv]
         RSP <ffff88001da5fd78>
        ---[ end trace 803b9bdc6a4a952b ]---
        Kernel panic - not syncing: Fatal exception in interrupt
        Kernel Offset: disabled
        ---[ end Kernel panic - not syncing: Fatal exception in interrupt
      
      It does not happen often, but may potentially happen when frequently
      shutting down and reinitializing an interface. With some carefully
      placed msleep()s/mdelay()s it can be reproduced easily.
      
      The issue is, that on interface removal, any still running worker thread
      of a forwarding packet will race with the interface purging routine to
      free a forwarding packet. Temporarily giving up a spin-lock to be able
      to sleep in the purging routine is not safe.
      
      Furthermore, there is a potential general protection fault not just for
      the purging side shown above, but also on the worker side: Temporarily
      removing a forw_packet from the according forw_{bcast,bat}_list will make
      it impossible for the purging routine to catch and cancel it.
      
       # How this patch tries to fix it:
      
      With this patch we split the queue purging into three steps: Step 1),
      removing forward packets from the queue of an interface and by that
      claim it as our responsibility to free.
      
      Step 2), we are either lucky to cancel a pending worker before it starts
      to run. Or if it is already running, we wait and let it do its thing,
      except two things:
      
      Through the claiming in step 1) we prevent workers from a) re-arming
      themselves. And b) prevent workers from freeing packets which we still
      hold in the interface purging routine.
      
      Finally, step 3, we are sure that no forwarding packets are pending or
      even running anymore on the interface to remove. We can then safely free
      the claimed forwarding packets.
      Signed-off-by: NLinus Lüssing <linus.luessing@c0d3.blue>
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
      9b4aec64
    • S
      batman-adv: Remove dev_queue_xmit return code exception · 7d72d174
      Sven Eckelmann 提交于
      No caller of batadv_send_skb_to_orig is expecting the results to be -1
      (-EPERM) anymore when the skbuff was not consumed. They will instead expect
      that the skbuff is always consumed. Having such return code filter is
      therefore not needed anymore.
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
      7d72d174
  9. 30 10月, 2016 4 次提交
  10. 19 10月, 2016 1 次提交
  11. 09 8月, 2016 2 次提交
  12. 06 7月, 2016 1 次提交
  13. 04 7月, 2016 1 次提交
  14. 30 6月, 2016 3 次提交
  15. 13 6月, 2016 1 次提交
  16. 10 5月, 2016 1 次提交
    • S
      batman-adv: Check hard_iface refcnt before calling function · 27353446
      Sven Eckelmann 提交于
      The batadv_hardif_list list is checked in many situations and the items
      in this list are given to specialized functions to modify the routing
      behavior. At the moment each of these called functions has to check
      itself whether the received batadv_hard_iface has a refcount > 0 before
      it can increase the reference counter and use it in other objects.
      
      This can easily lead to problems because it is not easily visible where
      all callers of a function got the batadv_hard_iface object from and
      whether they already hold a valid reference.
      
      Checking the reference counter directly before calling a subfunction
      with a pointer from the batadv_hardif_list avoids this problem.
      Signed-off-by: NSven Eckelmann <sven@narfation.org>
      Signed-off-by: NMarek Lindner <mareklindner@neomailbox.ch>
      Signed-off-by: NAntonio Quartulli <a@unstable.cc>
      27353446
  17. 04 5月, 2016 1 次提交
  18. 24 4月, 2016 1 次提交
  19. 29 2月, 2016 1 次提交
    • A
      batman-adv: keep track of when unicast packets are sent · 95d39278
      Antonio Quartulli 提交于
      To enable ELP to send probing packets over wireless links
      only if needed, batman-adv must keep track of the last time
      it sent a unicast packet towards every neighbour.
      
      For this purpose a 2 main changes are introduced:
      1) a new member of the elp_neigh_node structure stores the
         last time a unicast packet was sent towards this neighbour;
      2) a wrapper function for sending unicast packets is
         implemented. This function will simply update the member
         describe din point 1) and then forward the packet to the
         real sending routine.
      
      Point 2) implies that any code-path leading to a unicast
      sending now has to use the new wrapper.
      Signed-off-by: NAntonio Quartulli <antonio@open-mesh.com>
      Signed-off-by: NMarek Lindner <mareklindner@neomailbox.ch>
      95d39278
  20. 23 2月, 2016 3 次提交
  21. 02 2月, 2016 4 次提交
  22. 09 1月, 2016 1 次提交
  23. 25 8月, 2015 1 次提交
  24. 15 8月, 2015 1 次提交