linux_dsm_epyc7002/net/batman-adv
Sven Eckelmann d9124268d8 batman-adv: Fix out-of-order fragmentation support
batadv_frag_insert_packet was unable to handle out-of-order packets because it
dropped them directly. This is caused by the way the fragmentation lists is
checked for the correct place to insert a fragmentation entry.

The fragmentation code keeps the fragments in lists. The fragmentation entries
are kept in descending order of sequence number. The list is traversed and each
entry is compared with the new fragment. If the current entry has a smaller
sequence number than the new fragment then the new one has to be inserted
before the current entry. This ensures that the list is still in descending
order.

An out-of-order packet with a smaller sequence number than all entries in the
list still has to be added to the end of the list. The used hlist has no
information about the last entry in the list inside hlist_head and thus the
last entry has to be calculated differently. Currently the code assumes that
the iterator variable of hlist_for_each_entry can be used for this purpose
after the hlist_for_each_entry finished. This is obviously wrong because the
iterator variable is always NULL when the list was completely traversed.

Instead the information about the last entry has to be stored in a different
variable.

This problem was introduced in 610bfc6bc9
("batman-adv: Receive fragmented packets and merge").

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
2014-08-05 09:12:16 +02: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: fix neigh_ifinfo imbalance 2014-05-10 10:58:42 +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 net: add __pskb_copy_fclone and pskb_copy_for_clone 2014-06-11 15:38:02 -07:00
distributed-arp-table.h batman-adv: improve DAT documentation 2014-03-22 09:18:59 +01:00
fragmentation.c batman-adv: Fix out-of-order fragmentation support 2014-08-05 09:12:16 +02:00
fragmentation.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
gateway_client.c batman-adv: increase orig refcount when storing ref in gw_node 2014-05-15 20:03:17 +02:00
gateway_client.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
gateway_common.c batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01: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: update copyright years for 2014 2014-01-12 14:41:19 +01: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-05-18 15:04:00 +02:00
Makefile batman-adv: Multicast Listener Announcements via Translation Table 2014-03-22 09:18:56 +01:00
multicast.c batman-adv: fix NULL pointer dereferences 2014-05-31 10:07:14 +02:00
multicast.h batman-adv: Modified forwarding behaviour for multicast packets 2014-03-22 09:18:57 +01:00
network-coding.c net: add __pskb_copy_fclone and pskb_copy_for_clone 2014-06-11 15:38:02 -07:00
network-coding.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
originator.c batman-adv: fix indirect hard_iface NULL dereference 2014-05-15 20:03:16 +02: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: prefer ether_addr_copy to memcpy 2014-03-22 08:50:26 +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: fix TT VLAN inconsistency on VLAN re-add 2014-07-21 09:49:30 +02:00
soft-interface.h batman-adv: update copyright years for 2014 2014-01-12 14:41:19 +01:00
sysfs.c batman-adv: remove semi-colon after macro definition 2014-05-18 15:04:00 +02: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