Linus Lüssing
9d31b3ce81
batman-adv: fix potential TT client + orig-node memory leak
...
This patch fixes a potential memory leak which can occur once an
originator times out. On timeout the according global translation table
entry might not get purged correctly. Furthermore, the non purged TT
entry will cause its orig-node to leak, too. Which additionally can lead
to the new multicast optimization feature not kicking in because of a
therefore bogus counter.
In detail: The batadv_tt_global_entry->orig_list holds the reference to
the orig-node. Usually this reference is released after
BATADV_PURGE_TIMEOUT through: _batadv_purge_orig()->
batadv_purge_orig_node()->batadv_update_route()->_batadv_update_route()->
batadv_tt_global_del_orig() which purges this global tt entry and
releases the reference to the orig-node.
However, if between two batadv_purge_orig_node() calls the orig-node
timeout grew to 2*BATADV_PURGE_TIMEOUT then this call path isn't
reached. Instead the according orig-node is removed from the
originator hash in _batadv_purge_orig(), the batadv_update_route()
part is skipped and won't be reached anymore.
Fixing the issue by moving batadv_tt_global_del_orig() out of the rcu
callback.
Signed-off-by: Linus Lüssing <[email protected] >
Acked-by: Antonio Quartulli <[email protected] >
Signed-off-by: Marek Lindner <[email protected] >
Signed-off-by: Antonio Quartulli <[email protected] >
2015-01-06 11:07:01 +01:00
..
bat_algo.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
bat_iv_ogm.c
batman-adv: prefer kmalloc_array to kmalloc when possible
2014-08-04 16:02:10 +02:00
bitarray.c
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
bitarray.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
bridge_loop_avoidance.c
batman-adv: drop QinQ claim frames in bridge loop avoidance
2014-07-21 09:05:31 +02:00
bridge_loop_avoidance.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
debugfs.c
batman-adv: remove semi-colon after macro definition
2014-05-18 15:04:00 +02:00
debugfs.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
distributed-arp-table.c
batman-adv: prefer kmalloc_array to kmalloc when possible
2014-08-04 16:02:10 +02:00
distributed-arp-table.h
batman-adv: improve DAT documentation
2014-03-22 09:18:59 +01:00
fragmentation.c
batman-adv: Unify fragment size calculation
2014-12-23 23:13:37 -05:00
fragmentation.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
gateway_client.c
batman-adv: avoid NULL dereferences and fix if check
2014-12-23 23:13:37 -05:00
gateway_client.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
gateway_common.c
batman-adv: replace strnicmp with strncasecmp
2014-10-14 02:18:24 +02:00
gateway_common.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
hard-interface.c
batman: fix a bogus warning from batadv_is_on_batman_iface()
2014-05-22 17:23:00 -04:00
hard-interface.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
hash.c
batman-adv: prefer kmalloc_array to kmalloc when possible
2014-08-04 16:02:10 +02:00
hash.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
icmp_socket.c
batman-adv: prefer ether_addr_copy to memcpy
2014-03-22 08:50:26 +01:00
icmp_socket.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
Kconfig
batman-adv: Multicast Listener Announcements via Translation Table
2014-03-22 09:18:56 +01:00
main.c
batman-adv: Send multicast packets to nodes with a WANT_ALL flag
2014-03-22 09:18:58 +01:00
main.h
batman-adv: Start new development cycle
2014-08-05 09:42:17 +02:00
Makefile
batman-adv: Multicast Listener Announcements via Translation Table
2014-03-22 09:18:56 +01:00
multicast.c
batman-adv: fix multicast counter when purging originators
2015-01-06 11:06:04 +01:00
multicast.h
batman-adv: Modified forwarding behaviour for multicast packets
2014-03-22 09:18:57 +01:00
network-coding.c
batman-adv: fix lock class for decoding hash in network-coding.c
2015-01-06 11:05:12 +01:00
network-coding.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
originator.c
batman-adv: fix potential TT client + orig-node memory leak
2015-01-06 11:07:01 +01:00
originator.h
batman-adv: avoid potential race condition when adding a new neighbour
2014-02-17 17:17:01 +01:00
packet.h
batman-adv: improve the TT flags documentation
2014-03-22 09:18:59 +01:00
routing.c
batman-adv: fix and simplify condition when bonding should be used
2015-01-06 11:05:07 +01:00
routing.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
send.c
batman-adv: Send multicast packets to nodes with a WANT_ALL flag
2014-03-22 09:18:58 +01:00
send.h
batman-adv: Modified forwarding behaviour for multicast packets
2014-03-22 09:18:57 +01:00
soft-interface.c
batman-adv: increase default hop penalty
2014-08-05 09:42:13 +02:00
soft-interface.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
sysfs.c
batman-adv: Use kasprintf
2014-07-07 17:00:31 -07:00
sysfs.h
batman-adv: update copyright years for 2014
2014-01-12 14:41:19 +01:00
translation-table.c
batman-adv: fix TT VLAN inconsistency on VLAN re-add
2014-07-21 09:49:30 +02:00
translation-table.h
batman-adv: Modified forwarding behaviour for multicast packets
2014-03-22 09:18:57 +01:00
types.h
batman-adv: fix TT VLAN inconsistency on VLAN re-add
2014-07-21 09:49:30 +02:00