From 64ceee8d87b6c2936a772ca0b5734754f7ae9ed5 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Tue, 4 Aug 2015 14:39:53 +0200 Subject: [PATCH 1/7] nat46: Fix 464xlat interface teardown Signed-off-by: Hans Dedecker --- nat46/files/464xlat.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nat46/files/464xlat.sh b/nat46/files/464xlat.sh index 8154f7f..3fbca5c 100755 --- a/nat46/files/464xlat.sh +++ b/nat46/files/464xlat.sh @@ -84,7 +84,7 @@ proto_464xlat_setup() { } proto_464xlat_teardown() { - 464xlatcfg "464xlat-$1" + 464xlatcfg "464-$1" } proto_464xlat_init_config() { From 8e12b6fd3e7763ed0440b5521bc5031ac756b521 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Tue, 4 Aug 2015 14:45:15 +0200 Subject: [PATCH 2/7] nat46: Remove unnecessary 464xlat wan forwarding rule Remove unnecessary 464xlat wan forwarding firewall rule with as outgoing interface the 464xlat interface and as destination the local IPv6 464xlat address as it's never hit. Signed-off-by: Hans Dedecker --- nat46/files/464xlat.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/nat46/files/464xlat.sh b/nat46/files/464xlat.sh index 3fbca5c..2ec1094 100755 --- a/nat46/files/464xlat.sh +++ b/nat46/files/464xlat.sh @@ -67,16 +67,6 @@ proto_464xlat_setup() { json_add_string src_ip $ip6addr json_add_string target ACCEPT json_close_object - json_add_object "" - json_add_string type rule - json_add_string family inet6 - json_add_string proto all - json_add_string direction out - json_add_string dest "$zone" - json_add_string src "$zone" - json_add_string dest_ip $ip6addr - json_add_string target ACCEPT - json_close_object json_close_array proto_close_data From ad556e87598f9b2a1561900b882f385137ff85e4 Mon Sep 17 00:00:00 2001 From: Simon Wunderlich Date: Tue, 4 Aug 2015 17:57:43 +0200 Subject: [PATCH 3/7] alfred: bump version to 2015.1 From the CHANGELOG: * add support to run on interfaces with multiple link-local addresses * various code cleanups * bugs squashed: - reduce of maximum payload size to always fit into UDP datagrams Signed-off-by: Simon Wunderlich --- alfred/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alfred/Makefile b/alfred/Makefile index 3fccbb9..8f49b5a 100644 --- a/alfred/Makefile +++ b/alfred/Makefile @@ -11,9 +11,9 @@ include $(TOPDIR)/rules.mk # The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git # PKG_NAME:=alfred -PKG_VERSION:=2015.0 +PKG_VERSION:=2015.1 PKG_RELEASE:=0 -PKG_MD5SUM:=53e2436dbc506e69f9675b69385ae131 +PKG_MD5SUM:=fcce70cd8da764ee91c8cd2cbfa14362 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) From 99a3f8dcb578505ce12ae0714a18a34189a7dc26 Mon Sep 17 00:00:00 2001 From: Marek Lindner Date: Wed, 5 Aug 2015 02:54:06 +0800 Subject: [PATCH 4/7] batman-adv: upgrade package to latest release 2015.1 Signed-off-by: Marek Lindner --- batman-adv/Makefile | 8 +- ...ower-layer-header-length-to-headroom.patch | 88 ++++++ ...d-u32-overflow-during-gateway-select.patch | 42 --- ...n-adv-avoid-DAT-to-mess-up-LAN-state.patch | 74 ----- ...v-Make-DAT-capability-changes-atomic.patch | 54 ---- ...dv-Make-NC-capability-changes-atomic.patch | 40 --- ...dv-Make-TT-capability-changes-atomic.patch | 60 ----- ...Make-MCAST-capability-changes-atomic.patch | 50 ---- ...otential-synchronization-issues-in-m.patch | 254 ------------------ ...ompile-error-on-deactivated-MCAST-fe.patch | 58 ---- ...ernel-crash-due-to-missing-NULL-chec.patch | 93 ------- ...ct-tt_local_entry-from-concurrent-de.patch | 55 ---- ...tect-tt-request-from-double-deletion.patch | 58 ---- ...alize-up-down-values-when-adding-a-g.patch | 42 --- ...e-broadcast-packets-scheduled-for-pu.patch | 32 --- ...-adv-Fix-broken-DAT-capability-check.patch | 53 ---- ...n-adv-Fix-broken-NC-capability-check.patch | 53 ---- ...n-adv-Fix-broken-TT-capability-check.patch | 54 ---- ...dv-Fix-broken-MCAST-capability-check.patch | 82 ------ 19 files changed, 92 insertions(+), 1158 deletions(-) create mode 100644 batman-adv/patches/0001-batman-adv-Add-lower-layer-header-length-to-headroom.patch delete mode 100644 batman-adv/patches/0001-batman-adv-Avoid-u32-overflow-during-gateway-select.patch delete mode 100644 batman-adv/patches/0002-batman-adv-avoid-DAT-to-mess-up-LAN-state.patch delete mode 100644 batman-adv/patches/0003-batman-adv-Make-DAT-capability-changes-atomic.patch delete mode 100644 batman-adv/patches/0004-batman-adv-Make-NC-capability-changes-atomic.patch delete mode 100644 batman-adv/patches/0005-batman-adv-Make-TT-capability-changes-atomic.patch delete mode 100644 batman-adv/patches/0006-batman-adv-Make-MCAST-capability-changes-atomic.patch delete mode 100644 batman-adv/patches/0007-batman-adv-Fix-potential-synchronization-issues-in-m.patch delete mode 100644 batman-adv/patches/0008-batman-adv-Fix-compile-error-on-deactivated-MCAST-fe.patch delete mode 100644 batman-adv/patches/0009-batman-adv-fix-kernel-crash-due-to-missing-NULL-chec.patch delete mode 100644 batman-adv/patches/0010-batman-adv-protect-tt_local_entry-from-concurrent-de.patch delete mode 100644 batman-adv/patches/0011-batman-adv-protect-tt-request-from-double-deletion.patch delete mode 100644 batman-adv/patches/0012-batman-adv-initialize-up-down-values-when-adding-a-g.patch delete mode 100644 batman-adv/patches/0013-batman-adv-remove-broadcast-packets-scheduled-for-pu.patch delete mode 100644 batman-adv/patches/0014-batman-adv-Fix-broken-DAT-capability-check.patch delete mode 100644 batman-adv/patches/0015-batman-adv-Fix-broken-NC-capability-check.patch delete mode 100644 batman-adv/patches/0016-batman-adv-Fix-broken-TT-capability-check.patch delete mode 100644 batman-adv/patches/0017-batman-adv-Fix-broken-MCAST-capability-check.patch diff --git a/batman-adv/Makefile b/batman-adv/Makefile index 8a932aa..7e43de4 100644 --- a/batman-adv/Makefile +++ b/batman-adv/Makefile @@ -10,9 +10,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=batman-adv -PKG_VERSION:=2015.0 +PKG_VERSION:=2015.1 PKG_RELEASE:=1 -PKG_MD5SUM:=178b082266a8bfb3041178a0c821d843 +PKG_MD5SUM:=45f98d315b4290dc208e01190193c514 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) @@ -29,7 +29,7 @@ define KernelPackage/batman-adv SUBMENU:=Network Support DEPENDS:=+KMOD_BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-crypto-core +kmod-crypto-crc32c +kmod-lib-crc32c TITLE:=B.A.T.M.A.N. Adv - FILES:=$(PKG_BUILD_DIR)/batman-adv.$(LINUX_KMOD_SUFFIX) + FILES:=$(PKG_BUILD_DIR)/net/batman-adv/batman-adv.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,50,batman-adv) endef @@ -65,7 +65,7 @@ MAKE_BATMAN_ADV_ARGS += \ define Build/Prepare $(call Build/Prepare/Default) $(SED) '/#define _NET_BATMAN_ADV_MAIN_H_/a\#undef CONFIG_MODULE_STRIPPED' \ - $(PKG_BUILD_DIR)/main.h + $(PKG_BUILD_DIR)/net/batman-adv/main.h endef define Build/Compile diff --git a/batman-adv/patches/0001-batman-adv-Add-lower-layer-header-length-to-headroom.patch b/batman-adv/patches/0001-batman-adv-Add-lower-layer-header-length-to-headroom.patch new file mode 100644 index 0000000..c5adedb --- /dev/null +++ b/batman-adv/patches/0001-batman-adv-Add-lower-layer-header-length-to-headroom.patch @@ -0,0 +1,88 @@ +batman-adv: Add lower layer header length to headroom + +The maximum of hard_header_len and needed_headroom of all slave interfaces +of a batman-adv device must be used to define the batman-adv device +headroom/header_len. This is required to avoid too small headroom problems +when these slave devices try to send the encapsulated packet. + +The batman-adv therefore uses: + + needed_headroom = max(0, dev[0].needed_headroom, ..., + dev[n].needed_headroom) + hard_header_len = max(ETH_HLEN, dev[0].hard_header_len, ..., + dev[n].hard_header_len) + ETH_HLEN + + max(sizeof(batadv_*cast_packet)) + +Signed-off-by: Sven Eckelmann +--- + net/batman-adv/hard-interface.c | 33 +++++++++++++++++++++++++++++++++ + net/batman-adv/soft-interface.c | 2 +- + 2 files changed, 34 insertions(+), 1 deletion(-) + +diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c +index f4a15d2e5eaf..a501aae1077b 100644 +--- a/net/batman-adv/hard-interface.c ++++ b/net/batman-adv/hard-interface.c +@@ -252,12 +252,45 @@ static void batadv_check_known_mac_addr(const struct net_device *net_dev) + rcu_read_unlock(); + } + ++/** ++ * batadv_hardif_recalc_headroom() - Recalculate skbuff headroom parameters ++ * @soft_iface: netdev struct of the mesh interface ++ */ ++static void batadv_hardif_recalc_headroom(struct net_device *soft_iface) ++{ ++ const struct batadv_hard_iface *hard_iface; ++ unsigned short hard_header_len = ETH_HLEN; ++ unsigned short needed_headroom = 0; ++ ++ rcu_read_lock(); ++ list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { ++ if ((hard_iface->if_status != BATADV_IF_ACTIVE) && ++ (hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED)) ++ continue; ++ ++ if (hard_iface->soft_iface != soft_iface) ++ continue; ++ ++ hard_header_len = max_t(unsigned short, hard_header_len, ++ hard_iface->net_dev->hard_header_len); ++ ++ needed_headroom = max_t(unsigned short, needed_headroom, ++ hard_iface->net_dev->needed_headroom); ++ } ++ rcu_read_unlock(); ++ ++ soft_iface->needed_headroom = needed_headroom; ++ soft_iface->hard_header_len = hard_header_len + batadv_max_header_len(); ++} ++ + int batadv_hardif_min_mtu(struct net_device *soft_iface) + { + struct batadv_priv *bat_priv = netdev_priv(soft_iface); + const struct batadv_hard_iface *hard_iface; + int min_mtu = INT_MAX; + ++ batadv_hardif_recalc_headroom(soft_iface); ++ + rcu_read_lock(); + list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { + if ((hard_iface->if_status != BATADV_IF_ACTIVE) && +diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c +index 36b23f31df2a..b4c110791203 100644 +--- a/net/batman-adv/soft-interface.c ++++ b/net/batman-adv/soft-interface.c +@@ -948,7 +948,7 @@ static void batadv_softif_init_early(struct net_device *dev) + */ + dev->mtu = ETH_DATA_LEN; + /* reserve more space in the skbuff for our header */ +- dev->hard_header_len = batadv_max_header_len(); ++ dev->hard_header_len = ETH_HLEN + batadv_max_header_len(); + + /* generate random address */ + eth_hw_addr_random(dev); +-- +2.5.0 + + diff --git a/batman-adv/patches/0001-batman-adv-Avoid-u32-overflow-during-gateway-select.patch b/batman-adv/patches/0001-batman-adv-Avoid-u32-overflow-during-gateway-select.patch deleted file mode 100644 index b7232e7..0000000 --- a/batman-adv/patches/0001-batman-adv-Avoid-u32-overflow-during-gateway-select.patch +++ /dev/null @@ -1,42 +0,0 @@ -From f63c54bba31d2c86269982fd8efdfb618f1daabe Mon Sep 17 00:00:00 2001 -From: Ruben Wisniewski -Date: Tue, 26 May 2015 18:34:27 +0200 -Subject: [PATCH 01/17] batman-adv: Avoid u32 overflow during gateway select - -The gateway selection based on fast connections is using a single value -calculated from the average tq (0-255) and the download bandwidth (in -100Kibit). The formula for the first step (tq ** 2 * 10000 * bandwidth) -tends to overflow a u32 with low bandwidth settings like 50 [100KiBit] -and a tq value of over 92. - -Changing this to a 64 bit unsigned integer allows to support a -bandwidth_down with up to ~2.8e10 [100KiBit] and a perfect tq of 255. This -is ~6.6 times higher than the maximum possible value of the gateway -announcement TVLV. - -This problem only affects the non-default gw_sel_class 1. - -Signed-off-by: Ruben Wisniewsi -[sven@narfation.org: rewritten commit message, changed to kernel type] -Signed-off-by: Sven Eckelmann -Signed-off-by: Marek Lindner ---- - gateway_client.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gateway_client.c b/gateway_client.c -index a85eaca..3f32357 100644 ---- a/gateway_client.c -+++ b/gateway_client.c -@@ -133,7 +133,7 @@ batadv_gw_get_best_gw_node(struct batadv_priv *bat_priv) - struct batadv_neigh_node *router; - struct batadv_neigh_ifinfo *router_ifinfo; - struct batadv_gw_node *gw_node, *curr_gw = NULL; -- uint32_t max_gw_factor = 0, tmp_gw_factor = 0; -+ uint64_t max_gw_factor = 0, tmp_gw_factor = 0; - uint32_t gw_divisor; - uint8_t max_tq = 0; - uint8_t tq_avg; --- -2.1.4 - diff --git a/batman-adv/patches/0002-batman-adv-avoid-DAT-to-mess-up-LAN-state.patch b/batman-adv/patches/0002-batman-adv-avoid-DAT-to-mess-up-LAN-state.patch deleted file mode 100644 index b335f4f..0000000 --- a/batman-adv/patches/0002-batman-adv-avoid-DAT-to-mess-up-LAN-state.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 9bbd794030657fe0d38590cd67d4801b989cebf9 Mon Sep 17 00:00:00 2001 -From: Antonio Quartulli -Date: Mon, 1 Jun 2015 17:29:57 +0200 -Subject: [PATCH 02/17] batman-adv: avoid DAT to mess up LAN state - -When a node running DAT receives an ARP request from the LAN for the -first time, it is likely that this node will request the ARP entry -through the distributed ARP table (DAT) in the mesh. - -Once a DAT reply is received the asking node must check if the MAC -address for which the IP address has been asked is local. If it is, the -node must drop the ARP reply bceause the client should have replied on -its own locally. - -Forwarding this reply means fooling any L2 bridge (e.g. Ethernet -switches) lying between the batman-adv node and the LAN. This happens -because the L2 bridge will think that the client sending the ARP reply -lies somewhere in the mesh, while this node is sitting in the same LAN. - -Reported-by: Simon Wunderlich -Signed-off-by: Antonio Quartulli -Signed-off-by: Marek Lindner ---- - distributed-arp-table.c | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/distributed-arp-table.c b/distributed-arp-table.c -index da1742d..0d791dc 100644 ---- a/distributed-arp-table.c -+++ b/distributed-arp-table.c -@@ -1107,6 +1107,9 @@ void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv, - * @bat_priv: the bat priv with all the soft interface information - * @skb: packet to check - * @hdr_size: size of the encapsulation header -+ * -+ * Returns true if the packet was snooped and consumed by DAT. False if the -+ * packet has to be delivered to the interface - */ - bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, - struct sk_buff *skb, int hdr_size) -@@ -1114,7 +1117,7 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, - uint16_t type; - __be32 ip_src, ip_dst; - uint8_t *hw_src, *hw_dst; -- bool ret = false; -+ bool dropped = false; - unsigned short vid; - - if (!atomic_read(&bat_priv->distributed_arp_table)) -@@ -1143,12 +1146,17 @@ bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, - /* if this REPLY is directed to a client of mine, let's deliver the - * packet to the interface - */ -- ret = !batadv_is_my_client(bat_priv, hw_dst, vid); -+ dropped = !batadv_is_my_client(bat_priv, hw_dst, vid); -+ -+ /* if this REPLY is sent on behalf of a client of mine, let's drop the -+ * packet because the client will reply by itself -+ */ -+ dropped |= batadv_is_my_client(bat_priv, hw_src, vid); - out: -- if (ret) -+ if (dropped) - kfree_skb(skb); -- /* if ret == false -> packet has to be delivered to the interface */ -- return ret; -+ /* if dropped == false -> deliver to the interface */ -+ return dropped; - } - - /** --- -2.1.4 - diff --git a/batman-adv/patches/0003-batman-adv-Make-DAT-capability-changes-atomic.patch b/batman-adv/patches/0003-batman-adv-Make-DAT-capability-changes-atomic.patch deleted file mode 100644 index 4152a52..0000000 --- a/batman-adv/patches/0003-batman-adv-Make-DAT-capability-changes-atomic.patch +++ /dev/null @@ -1,54 +0,0 @@ -From bfd0fbaef270ac4ed8e4457a38ef8d91190c0540 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Tue, 16 Jun 2015 17:10:22 +0200 -Subject: [PATCH 03/17] batman-adv: Make DAT capability changes atomic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One -OGM handler might undo the set/clear of a specific bit from another -handler run in between. - -Fix this by using the atomic set_bit()/clear_bit() functions. - -Fixes: 2b1c07b918d2 ("batman-adv: tvlv - add distributed arp table container") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - distributed-arp-table.c | 4 ++-- - types.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/distributed-arp-table.c b/distributed-arp-table.c -index 0d791dc..b2cc19b 100644 ---- a/distributed-arp-table.c -+++ b/distributed-arp-table.c -@@ -682,9 +682,9 @@ static void batadv_dat_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - uint16_t tvlv_value_len) - { - if (flags & BATADV_TVLV_HANDLER_OGM_CIFNOTFND) -- orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_DAT; -+ clear_bit(BATADV_ORIG_CAPA_HAS_DAT, &orig->capabilities); - else -- orig->capabilities |= BATADV_ORIG_CAPA_HAS_DAT; -+ set_bit(BATADV_ORIG_CAPA_HAS_DAT, &orig->capabilities); - } - - /** -diff --git a/types.h b/types.h -index 28f2461..e33b5aa 100644 ---- a/types.h -+++ b/types.h -@@ -256,7 +256,7 @@ struct batadv_orig_node { - struct hlist_node mcast_want_all_ipv4_node; - struct hlist_node mcast_want_all_ipv6_node; - #endif -- uint8_t capabilities; -+ unsigned long capabilities; - uint8_t capa_initialized; - atomic_t last_ttvn; - unsigned char *tt_buff; --- -2.1.4 - diff --git a/batman-adv/patches/0004-batman-adv-Make-NC-capability-changes-atomic.patch b/batman-adv/patches/0004-batman-adv-Make-NC-capability-changes-atomic.patch deleted file mode 100644 index 935a6cd..0000000 --- a/batman-adv/patches/0004-batman-adv-Make-NC-capability-changes-atomic.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 586df9e2537b51c0df7ce99576c3cee1681b64de Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Tue, 16 Jun 2015 17:10:23 +0200 -Subject: [PATCH 04/17] batman-adv: Make NC capability changes atomic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One -OGM handler might undo the set/clear of a specific bit from another -handler run in between. - -Fix this by using the atomic set_bit()/clear_bit() functions. - -Fixes: 7dd9d8992b0c ("batman-adv: tvlv - add network coding container") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - network-coding.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/network-coding.c b/network-coding.c -index 89e1d47..3ce493e 100644 ---- a/network-coding.c -+++ b/network-coding.c -@@ -105,9 +105,9 @@ static void batadv_nc_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - uint16_t tvlv_value_len) - { - if (flags & BATADV_TVLV_HANDLER_OGM_CIFNOTFND) -- orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_NC; -+ clear_bit(BATADV_ORIG_CAPA_HAS_NC, &orig->capabilities); - else -- orig->capabilities |= BATADV_ORIG_CAPA_HAS_NC; -+ set_bit(BATADV_ORIG_CAPA_HAS_NC, &orig->capabilities); - } - - /** --- -2.1.4 - diff --git a/batman-adv/patches/0005-batman-adv-Make-TT-capability-changes-atomic.patch b/batman-adv/patches/0005-batman-adv-Make-TT-capability-changes-atomic.patch deleted file mode 100644 index c6e9078..0000000 --- a/batman-adv/patches/0005-batman-adv-Make-TT-capability-changes-atomic.patch +++ /dev/null @@ -1,60 +0,0 @@ -From a51fa16ecf3f079518baaa56bffae343bd5694f0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Tue, 16 Jun 2015 17:10:24 +0200 -Subject: [PATCH 05/17] batman-adv: Make TT capability changes atomic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One -OGM handler might undo the set/clear of a specific bit from another -handler run in between. - -Fix this by using the atomic set_bit()/clear_bit() functions. - -Fixes: 5d2121af6d31 ("batman-adv: introduce capability initialization bitfield") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - translation-table.c | 4 ++-- - types.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/translation-table.c b/translation-table.c -index b098e53..e95a424 100644 ---- a/translation-table.c -+++ b/translation-table.c -@@ -1843,7 +1843,7 @@ void batadv_tt_global_del_orig(struct batadv_priv *bat_priv, - } - spin_unlock_bh(list_lock); - } -- orig_node->capa_initialized &= ~BATADV_ORIG_CAPA_HAS_TT; -+ clear_bit(BATADV_ORIG_CAPA_HAS_TT, &orig_node->capa_initialized); - } - - static bool batadv_tt_global_to_purge(struct batadv_tt_global_entry *tt_global, -@@ -2802,7 +2802,7 @@ static void _batadv_tt_update_changes(struct batadv_priv *bat_priv, - return; - } - } -- orig_node->capa_initialized |= BATADV_ORIG_CAPA_HAS_TT; -+ set_bit(BATADV_ORIG_CAPA_HAS_TT, &orig_node->capa_initialized); - } - - static void batadv_tt_fill_gtable(struct batadv_priv *bat_priv, -diff --git a/types.h b/types.h -index e33b5aa..c6ec558 100644 ---- a/types.h -+++ b/types.h -@@ -257,7 +257,7 @@ struct batadv_orig_node { - struct hlist_node mcast_want_all_ipv6_node; - #endif - unsigned long capabilities; -- uint8_t capa_initialized; -+ unsigned long capa_initialized; - atomic_t last_ttvn; - unsigned char *tt_buff; - int16_t tt_buff_len; --- -2.1.4 - diff --git a/batman-adv/patches/0006-batman-adv-Make-MCAST-capability-changes-atomic.patch b/batman-adv/patches/0006-batman-adv-Make-MCAST-capability-changes-atomic.patch deleted file mode 100644 index d1d7beb..0000000 --- a/batman-adv/patches/0006-batman-adv-Make-MCAST-capability-changes-atomic.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 201a54ba710ab7f40b82ad3c109f702c47d0761f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Tue, 16 Jun 2015 17:10:25 +0200 -Subject: [PATCH 06/17] batman-adv: Make MCAST capability changes atomic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One -OGM handler might undo the set/clear of a specific bit from another -handler run in between. - -Fix this by using the atomic set_bit()/clear_bit() functions. - -Fixes: 77ec494490d6 ("batman-adv: Announce new capability via multicast TVLV") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - multicast.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/multicast.c b/multicast.c -index 09f2838..00612bf 100644 ---- a/multicast.c -+++ b/multicast.c -@@ -684,7 +684,7 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - !(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST)) { - if (orig_initialized) - atomic_dec(&bat_priv->mcast.num_disabled); -- orig->capabilities |= BATADV_ORIG_CAPA_HAS_MCAST; -+ set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); - /* If mcast support is being switched off or if this is an initial - * OGM without mcast support then increase the disabled mcast - * node counter. -@@ -693,10 +693,10 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - (orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST || - !orig_initialized)) { - atomic_inc(&bat_priv->mcast.num_disabled); -- orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_MCAST; -+ clear_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); - } - -- orig->capa_initialized |= BATADV_ORIG_CAPA_HAS_MCAST; -+ set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized); - - if (orig_mcast_enabled && tvlv_value && - (tvlv_value_len >= sizeof(mcast_flags))) --- -2.1.4 - diff --git a/batman-adv/patches/0007-batman-adv-Fix-potential-synchronization-issues-in-m.patch b/batman-adv/patches/0007-batman-adv-Fix-potential-synchronization-issues-in-m.patch deleted file mode 100644 index 66d61b3..0000000 --- a/batman-adv/patches/0007-batman-adv-Fix-potential-synchronization-issues-in-m.patch +++ /dev/null @@ -1,254 +0,0 @@ -From 7f220ed1f063be00833bd34a013c8f3f45884031 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Tue, 16 Jun 2015 17:10:26 +0200 -Subject: [PATCH 07/17] batman-adv: Fix potential synchronization issues in - mcast tvlv handler -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -So far the mcast tvlv handler did not anticipate the processing of -multiple incoming OGMs from the same originator at the same time. This -can lead to various issues: - -* Broken refcounting: For instance two mcast handlers might both assume - that an originator just got multicast capabilities and will together - wrongly decrease mcast.num_disabled by two, potentially leading to - an integer underflow. - -* Potential kernel panic on hlist_del_rcu(): Two mcast handlers might - one after another try to do an - hlist_del_rcu(&orig->mcast_want_all_*_node). The second one will - cause memory corruption / crashes. - (Reported by: Sven Eckelmann ) - -Right in the beginning the code path makes assumptions about the current -multicast related state of an originator and bases all updates on that. The -easiest and least error prune way to fix the issues in this case is to -serialize multiple mcast handler invocations with a spinlock. - -Fixes: 77ec494490d6 ("batman-adv: Announce new capability via multicast TVLV") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - multicast.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++------------- - originator.c | 4 ++++ - types.h | 3 +++ - 3 files changed, 56 insertions(+), 13 deletions(-) - -diff --git a/multicast.c b/multicast.c -index 00612bf..b75bcc3 100644 ---- a/multicast.c -+++ b/multicast.c -@@ -565,19 +565,26 @@ batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, - * - * If the BATADV_MCAST_WANT_ALL_UNSNOOPABLES flag of this originator, - * orig, has toggled then this method updates counter and list accordingly. -+ * -+ * Caller needs to hold orig->mcast_handler_lock. - */ - static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv, - struct batadv_orig_node *orig, - uint8_t mcast_flags) - { -+ struct hlist_node *node = &orig->mcast_want_all_unsnoopables_node; -+ struct hlist_head *head = &bat_priv->mcast.want_all_unsnoopables_list; -+ - /* switched from flag unset to set */ - if (mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES && - !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES)) { - atomic_inc(&bat_priv->mcast.num_want_all_unsnoopables); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_add_head_rcu(&orig->mcast_want_all_unsnoopables_node, -- &bat_priv->mcast.want_all_unsnoopables_list); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(!hlist_unhashed(node)); -+ -+ hlist_add_head_rcu(node, head); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - /* switched from flag set to unset */ - } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES) && -@@ -585,7 +592,10 @@ static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv, - atomic_dec(&bat_priv->mcast.num_want_all_unsnoopables); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_del_rcu(&orig->mcast_want_all_unsnoopables_node); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(hlist_unhashed(node)); -+ -+ hlist_del_init_rcu(node); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - } - } -@@ -598,19 +608,26 @@ static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv, - * - * If the BATADV_MCAST_WANT_ALL_IPV4 flag of this originator, orig, has - * toggled then this method updates counter and list accordingly. -+ * -+ * Caller needs to hold orig->mcast_handler_lock. - */ - static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv, - struct batadv_orig_node *orig, - uint8_t mcast_flags) - { -+ struct hlist_node *node = &orig->mcast_want_all_ipv4_node; -+ struct hlist_head *head = &bat_priv->mcast.want_all_ipv4_list; -+ - /* switched from flag unset to set */ - if (mcast_flags & BATADV_MCAST_WANT_ALL_IPV4 && - !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_IPV4)) { - atomic_inc(&bat_priv->mcast.num_want_all_ipv4); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_add_head_rcu(&orig->mcast_want_all_ipv4_node, -- &bat_priv->mcast.want_all_ipv4_list); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(!hlist_unhashed(node)); -+ -+ hlist_add_head_rcu(node, head); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - /* switched from flag set to unset */ - } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_IPV4) && -@@ -618,7 +635,10 @@ static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv, - atomic_dec(&bat_priv->mcast.num_want_all_ipv4); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_del_rcu(&orig->mcast_want_all_ipv4_node); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(hlist_unhashed(node)); -+ -+ hlist_del_init_rcu(node); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - } - } -@@ -631,19 +651,26 @@ static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv, - * - * If the BATADV_MCAST_WANT_ALL_IPV6 flag of this originator, orig, has - * toggled then this method updates counter and list accordingly. -+ * -+ * Caller needs to hold orig->mcast_handler_lock. - */ - static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv, - struct batadv_orig_node *orig, - uint8_t mcast_flags) - { -+ struct hlist_node *node = &orig->mcast_want_all_ipv6_node; -+ struct hlist_head *head = &bat_priv->mcast.want_all_ipv6_list; -+ - /* switched from flag unset to set */ - if (mcast_flags & BATADV_MCAST_WANT_ALL_IPV6 && - !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_IPV6)) { - atomic_inc(&bat_priv->mcast.num_want_all_ipv6); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_add_head_rcu(&orig->mcast_want_all_ipv6_node, -- &bat_priv->mcast.want_all_ipv6_list); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(!hlist_unhashed(node)); -+ -+ hlist_add_head_rcu(node, head); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - /* switched from flag set to unset */ - } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_IPV6) && -@@ -651,7 +678,10 @@ static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv, - atomic_dec(&bat_priv->mcast.num_want_all_ipv6); - - spin_lock_bh(&bat_priv->mcast.want_lists_lock); -- hlist_del_rcu(&orig->mcast_want_all_ipv6_node); -+ /* flag checks above + mcast_handler_lock prevents this */ -+ BUG_ON(hlist_unhashed(node)); -+ -+ hlist_del_init_rcu(node); - spin_unlock_bh(&bat_priv->mcast.want_lists_lock); - } - } -@@ -674,6 +704,11 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - uint8_t mcast_flags = BATADV_NO_FLAGS; - bool orig_initialized; - -+ if (orig_mcast_enabled && tvlv_value && -+ (tvlv_value_len >= sizeof(mcast_flags))) -+ mcast_flags = *(uint8_t *)tvlv_value; -+ -+ spin_lock_bh(&orig->mcast_handler_lock); - orig_initialized = orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST; - - /* If mcast support is turned on decrease the disabled mcast node -@@ -698,15 +733,12 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - - set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized); - -- if (orig_mcast_enabled && tvlv_value && -- (tvlv_value_len >= sizeof(mcast_flags))) -- mcast_flags = *(uint8_t *)tvlv_value; -- - batadv_mcast_want_unsnoop_update(bat_priv, orig, mcast_flags); - batadv_mcast_want_ipv4_update(bat_priv, orig, mcast_flags); - batadv_mcast_want_ipv6_update(bat_priv, orig, mcast_flags); - - orig->mcast_flags = mcast_flags; -+ spin_unlock_bh(&orig->mcast_handler_lock); - } - - /** -@@ -740,6 +772,8 @@ void batadv_mcast_purge_orig(struct batadv_orig_node *orig) - { - struct batadv_priv *bat_priv = orig->bat_priv; - -+ spin_lock_bh(&orig->mcast_handler_lock); -+ - if (!(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST) && - orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST) - atomic_dec(&bat_priv->mcast.num_disabled); -@@ -747,4 +781,6 @@ void batadv_mcast_purge_orig(struct batadv_orig_node *orig) - batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS); - batadv_mcast_want_ipv4_update(bat_priv, orig, BATADV_NO_FLAGS); - batadv_mcast_want_ipv6_update(bat_priv, orig, BATADV_NO_FLAGS); -+ -+ spin_unlock_bh(&orig->mcast_handler_lock); - } -diff --git a/originator.c b/originator.c -index e3900e4..a2ba182 100644 ---- a/originator.c -+++ b/originator.c -@@ -658,11 +658,15 @@ struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, - INIT_HLIST_HEAD(&orig_node->neigh_list); - INIT_LIST_HEAD(&orig_node->vlan_list); - INIT_HLIST_HEAD(&orig_node->ifinfo_list); -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); - spin_lock_init(&orig_node->bcast_seqno_lock); - spin_lock_init(&orig_node->neigh_list_lock); - spin_lock_init(&orig_node->tt_buff_lock); - spin_lock_init(&orig_node->tt_lock); - spin_lock_init(&orig_node->vlan_list_lock); -+ spin_lock_init(&orig_node->mcast_handler_lock); - - batadv_nc_init_orig(orig_node); - -diff --git a/types.h b/types.h -index c6ec558..65dc6bf 100644 ---- a/types.h -+++ b/types.h -@@ -204,6 +204,7 @@ struct batadv_orig_bat_iv { - * @batadv_dat_addr_t: address of the orig node in the distributed hash - * @last_seen: time when last packet from this node was received - * @bcast_seqno_reset: time when the broadcast seqno window was reset -+ * @mcast_handler_lock: synchronizes mcast-capability and -flag changes - * @mcast_flags: multicast flags announced by the orig node - * @mcast_want_all_unsnoop_node: a list node for the - * mcast.want_all_unsnoopables list -@@ -251,6 +252,8 @@ struct batadv_orig_node { - unsigned long last_seen; - unsigned long bcast_seqno_reset; - #ifdef CONFIG_BATMAN_ADV_MCAST -+ /* synchronizes mcast tvlv specific orig changes */ -+ spinlock_t mcast_handler_lock; - uint8_t mcast_flags; - struct hlist_node mcast_want_all_unsnoopables_node; - struct hlist_node mcast_want_all_ipv4_node; --- -2.1.4 - diff --git a/batman-adv/patches/0008-batman-adv-Fix-compile-error-on-deactivated-MCAST-fe.patch b/batman-adv/patches/0008-batman-adv-Fix-compile-error-on-deactivated-MCAST-fe.patch deleted file mode 100644 index c854522..0000000 --- a/batman-adv/patches/0008-batman-adv-Fix-compile-error-on-deactivated-MCAST-fe.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 256776ef8562744f90ac9379364df4cf88291b49 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Thu, 18 Jun 2015 06:47:19 +0200 -Subject: [PATCH 08/17] batman-adv: Fix compile error on deactivated MCAST - feature -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some members of "struct batadv_orig_node" are not available if compiling -without the multicast optimizations feature. - -Fix this by moving their initialization into the right #ifdef's. - -Fixes: 7f220ed1f063 ("batman-adv: Fix potential synchronization issues in mcast tvlv handler") -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - originator.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/originator.c b/originator.c -index a2ba182..a5276db 100644 ---- a/originator.c -+++ b/originator.c -@@ -658,15 +658,11 @@ struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, - INIT_HLIST_HEAD(&orig_node->neigh_list); - INIT_LIST_HEAD(&orig_node->vlan_list); - INIT_HLIST_HEAD(&orig_node->ifinfo_list); -- INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); -- INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); -- INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); - spin_lock_init(&orig_node->bcast_seqno_lock); - spin_lock_init(&orig_node->neigh_list_lock); - spin_lock_init(&orig_node->tt_buff_lock); - spin_lock_init(&orig_node->tt_lock); - spin_lock_init(&orig_node->vlan_list_lock); -- spin_lock_init(&orig_node->mcast_handler_lock); - - batadv_nc_init_orig(orig_node); - -@@ -682,8 +678,13 @@ struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, - orig_node->last_seen = jiffies; - reset_time = jiffies - 1 - msecs_to_jiffies(BATADV_RESET_PROTECTION_MS); - orig_node->bcast_seqno_reset = reset_time; -+ - #ifdef CONFIG_BATMAN_ADV_MCAST - orig_node->mcast_flags = BATADV_NO_FLAGS; -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); -+ INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); -+ spin_lock_init(&orig_node->mcast_handler_lock); - #endif - - /* create a vlan object for the "untagged" LAN */ --- -2.1.4 - diff --git a/batman-adv/patches/0009-batman-adv-fix-kernel-crash-due-to-missing-NULL-chec.patch b/batman-adv/patches/0009-batman-adv-fix-kernel-crash-due-to-missing-NULL-chec.patch deleted file mode 100644 index 3e19c0e..0000000 --- a/batman-adv/patches/0009-batman-adv-fix-kernel-crash-due-to-missing-NULL-chec.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 2c2dfd886a400057ccbc66f1507c94ed909d2a89 Mon Sep 17 00:00:00 2001 -From: Marek Lindner -Date: Tue, 9 Jun 2015 21:24:36 +0800 -Subject: [PATCH 09/17] batman-adv: fix kernel crash due to missing NULL checks - -batadv_softif_vlan_get() may return NULL which has to be verified -by the caller. - -Fixes: 9729d20 ("batman-adv: fix TT VLAN inconsistency on VLAN re-add") - -Reported-by: Ryan Thompson -Signed-off-by: Marek Lindner -Acked-by: Antonio Quartulli ---- - soft-interface.c | 3 +++ - translation-table.c | 19 +++++++++++++++---- - 2 files changed, 18 insertions(+), 4 deletions(-) - -diff --git a/soft-interface.c b/soft-interface.c -index da89336..7841a4b 100644 ---- a/soft-interface.c -+++ b/soft-interface.c -@@ -455,6 +455,9 @@ out: - */ - void batadv_softif_vlan_free_ref(struct batadv_softif_vlan *vlan) - { -+ if (!vlan) -+ return; -+ - if (atomic_dec_and_test(&vlan->refcount)) { - spin_lock_bh(&vlan->bat_priv->softif_vlan_list_lock); - hlist_del_rcu(&vlan->list); -diff --git a/translation-table.c b/translation-table.c -index e95a424..807a4e6 100644 ---- a/translation-table.c -+++ b/translation-table.c -@@ -26,6 +26,7 @@ - #include "bridge_loop_avoidance.h" - #include "multicast.h" - -+#include - #include - - /* hash class keys */ -@@ -575,6 +576,9 @@ bool batadv_tt_local_add(struct net_device *soft_iface, const uint8_t *addr, - - /* increase the refcounter of the related vlan */ - vlan = batadv_softif_vlan_get(bat_priv, vid); -+ if (WARN(!vlan, "adding TT local entry %pM to non-existent VLAN %d", -+ addr, BATADV_PRINT_VID(vid))) -+ goto out; - - batadv_dbg(BATADV_DBG_TT, bat_priv, - "Creating new local tt entry: %pM (vid: %d, ttvn: %d)\n", -@@ -1047,6 +1051,9 @@ uint16_t batadv_tt_local_remove(struct batadv_priv *bat_priv, - - /* decrease the reference held for this vlan */ - vlan = batadv_softif_vlan_get(bat_priv, vid); -+ if (!vlan) -+ goto out; -+ - batadv_softif_vlan_free_ref(vlan); - batadv_softif_vlan_free_ref(vlan); - -@@ -1147,8 +1154,10 @@ static void batadv_tt_local_table_free(struct batadv_priv *bat_priv) - /* decrease the reference held for this vlan */ - vlan = batadv_softif_vlan_get(bat_priv, - tt_common_entry->vid); -- batadv_softif_vlan_free_ref(vlan); -- batadv_softif_vlan_free_ref(vlan); -+ if (vlan) { -+ batadv_softif_vlan_free_ref(vlan); -+ batadv_softif_vlan_free_ref(vlan); -+ } - - batadv_tt_local_entry_free_ref(tt_local); - } -@@ -3188,8 +3197,10 @@ static void batadv_tt_local_purge_pending_clients(struct batadv_priv *bat_priv) - - /* decrease the reference held for this vlan */ - vlan = batadv_softif_vlan_get(bat_priv, tt_common->vid); -- batadv_softif_vlan_free_ref(vlan); -- batadv_softif_vlan_free_ref(vlan); -+ if (vlan) { -+ batadv_softif_vlan_free_ref(vlan); -+ batadv_softif_vlan_free_ref(vlan); -+ } - - batadv_tt_local_entry_free_ref(tt_local); - } --- -2.1.4 - diff --git a/batman-adv/patches/0010-batman-adv-protect-tt_local_entry-from-concurrent-de.patch b/batman-adv/patches/0010-batman-adv-protect-tt_local_entry-from-concurrent-de.patch deleted file mode 100644 index 5cc27ee..0000000 --- a/batman-adv/patches/0010-batman-adv-protect-tt_local_entry-from-concurrent-de.patch +++ /dev/null @@ -1,55 +0,0 @@ -From af912d77181f252e6fdd324592d006e30bc82909 Mon Sep 17 00:00:00 2001 -From: Marek Lindner -Date: Wed, 17 Jun 2015 20:01:36 +0800 -Subject: [PATCH 10/17] batman-adv: protect tt_local_entry from concurrent - delete events - -The tt_local_entry deletion performed in batadv_tt_local_remove() was neither -protecting against simultaneous deletes nor checking whether the element was -still part of the list before calling hlist_del_rcu(). - -Replacing the hlist_del_rcu() call with batadv_hash_remove() provides adequate -protection via hash spinlocks as well as an is-element-still-in-hash check to -avoid 'blind' hash removal. - -Fixes: 2443ba3 ("batman-adv: roaming handling mechanism redesign") - -Reported-by: alfonsname@web.de -Signed-off-by: Marek Lindner -Acked-by: Antonio Quartulli ---- - translation-table.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/translation-table.c b/translation-table.c -index 807a4e6..dfe8896 100644 ---- a/translation-table.c -+++ b/translation-table.c -@@ -1019,6 +1019,7 @@ uint16_t batadv_tt_local_remove(struct batadv_priv *bat_priv, - struct batadv_tt_local_entry *tt_local_entry; - uint16_t flags, curr_flags = BATADV_NO_FLAGS; - struct batadv_softif_vlan *vlan; -+ void *tt_entry_exists; - - tt_local_entry = batadv_tt_local_hash_find(bat_priv, addr, vid); - if (!tt_local_entry) -@@ -1046,7 +1047,15 @@ uint16_t batadv_tt_local_remove(struct batadv_priv *bat_priv, - * immediately purge it - */ - batadv_tt_local_event(bat_priv, tt_local_entry, BATADV_TT_CLIENT_DEL); -- hlist_del_rcu(&tt_local_entry->common.hash_entry); -+ -+ tt_entry_exists = batadv_hash_remove(bat_priv->tt.local_hash, -+ batadv_compare_tt, -+ batadv_choose_tt, -+ &tt_local_entry->common); -+ if (!tt_entry_exists) -+ goto out; -+ -+ /* extra call to free the local tt entry */ - batadv_tt_local_entry_free_ref(tt_local_entry); - - /* decrease the reference held for this vlan */ --- -2.1.4 - diff --git a/batman-adv/patches/0011-batman-adv-protect-tt-request-from-double-deletion.patch b/batman-adv/patches/0011-batman-adv-protect-tt-request-from-double-deletion.patch deleted file mode 100644 index dd0e26f..0000000 --- a/batman-adv/patches/0011-batman-adv-protect-tt-request-from-double-deletion.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 9bac35c1e4fab662522371f81147963e19693409 Mon Sep 17 00:00:00 2001 -From: Marek Lindner -Date: Mon, 22 Jun 2015 00:36:28 +0800 -Subject: [PATCH 11/17] batman-adv: protect tt request from double deletion - -The list_del() calls were changed to list_del_init() to prevent -an accidental double deletion in batadv_tt_req_node_new(). - -Signed-off-by: Marek Lindner -Acked-by: Antonio Quartulli ---- - translation-table.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/translation-table.c b/translation-table.c -index dfe8896..b6c0f52 100644 ---- a/translation-table.c -+++ b/translation-table.c -@@ -2194,7 +2194,7 @@ static void batadv_tt_req_list_free(struct batadv_priv *bat_priv) - spin_lock_bh(&bat_priv->tt.req_list_lock); - - list_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { -- list_del(&node->list); -+ list_del_init(&node->list); - kfree(node); - } - -@@ -2230,7 +2230,7 @@ static void batadv_tt_req_purge(struct batadv_priv *bat_priv) - list_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { - if (batadv_has_timed_out(node->issued_at, - BATADV_TT_REQUEST_TIMEOUT)) { -- list_del(&node->list); -+ list_del_init(&node->list); - kfree(node); - } - } -@@ -2512,7 +2512,8 @@ out: - batadv_hardif_free_ref(primary_if); - if (ret && tt_req_node) { - spin_lock_bh(&bat_priv->tt.req_list_lock); -- list_del(&tt_req_node->list); -+ /* list_del_init() verifies tt_req_node still is in the list */ -+ list_del_init(&tt_req_node->list); - spin_unlock_bh(&bat_priv->tt.req_list_lock); - kfree(tt_req_node); - } -@@ -2949,7 +2950,7 @@ static void batadv_handle_tt_response(struct batadv_priv *bat_priv, - list_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { - if (!batadv_compare_eth(node->addr, resp_src)) - continue; -- list_del(&node->list); -+ list_del_init(&node->list); - kfree(node); - } - --- -2.1.4 - diff --git a/batman-adv/patches/0012-batman-adv-initialize-up-down-values-when-adding-a-g.patch b/batman-adv/patches/0012-batman-adv-initialize-up-down-values-when-adding-a-g.patch deleted file mode 100644 index 04b3758..0000000 --- a/batman-adv/patches/0012-batman-adv-initialize-up-down-values-when-adding-a-g.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 3c92b633715b7eca80dc7a2347e0e4dbcce1f018 Mon Sep 17 00:00:00 2001 -From: Simon Wunderlich -Date: Wed, 24 Jun 2015 14:50:19 +0200 -Subject: [PATCH 12/17] batman-adv: initialize up/down values when adding a - gateway - -Without this initialization, gateways which actually announce up/down -bandwidth of 0/0 could be added. If these nodes get purged via -_batadv_purge_orig() later, the gw_node structure does not get removed -since batadv_gw_node_delete() updates the gw_node with up/down -bandwidth of 0/0, and the updating function then discards the change -and does not free gw_node. - -This results in leaking the gw_node structures, which references other -structures: gw_node -> orig_node -> orig_node_ifinfo -> hardif. When -removing the interface later, the open reference on the hardif may cause -hangs with the infamous "unregister_netdevice: waiting for mesh1 to -become free. Usage count = 1" message. - -Signed-off-by: Simon Wunderlich -Acked-by: Antonio Quartulli -Signed-off-by: Marek Lindner ---- - gateway_client.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/gateway_client.c b/gateway_client.c -index 3f32357..d8e3ead 100644 ---- a/gateway_client.c -+++ b/gateway_client.c -@@ -419,6 +419,8 @@ static void batadv_gw_node_add(struct batadv_priv *bat_priv, - - INIT_HLIST_NODE(&gw_node->list); - gw_node->orig_node = orig_node; -+ gw_node->bandwidth_down = ntohl(gateway->bandwidth_down); -+ gw_node->bandwidth_up = ntohl(gateway->bandwidth_up); - atomic_set(&gw_node->refcount, 1); - - spin_lock_bh(&bat_priv->gw.list_lock); --- -2.1.4 - diff --git a/batman-adv/patches/0013-batman-adv-remove-broadcast-packets-scheduled-for-pu.patch b/batman-adv/patches/0013-batman-adv-remove-broadcast-packets-scheduled-for-pu.patch deleted file mode 100644 index b7a27ef..0000000 --- a/batman-adv/patches/0013-batman-adv-remove-broadcast-packets-scheduled-for-pu.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 07bec2d4dec83f024baf166b95cf037be3a7eca5 Mon Sep 17 00:00:00 2001 -From: Simon Wunderlich -Date: Wed, 24 Jun 2015 14:50:20 +0200 -Subject: [PATCH 13/17] batman-adv: remove broadcast packets scheduled for - purged outgoing if - -When an interface is purged, the broadcast packets scheduled for this -interface should get purged as well. - -Signed-off-by: Simon Wunderlich -Signed-off-by: Marek Lindner ---- - send.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/send.c b/send.c -index 23635bd..a7e84b2 100644 ---- a/send.c -+++ b/send.c -@@ -598,7 +598,8 @@ batadv_purge_outstanding_packets(struct batadv_priv *bat_priv, - * we delete only packets belonging to the given interface - */ - if ((hard_iface) && -- (forw_packet->if_incoming != hard_iface)) -+ (forw_packet->if_incoming != hard_iface) && -+ (forw_packet->if_outgoing != hard_iface)) - continue; - - spin_unlock_bh(&bat_priv->forw_bcast_list_lock); --- -2.1.4 - diff --git a/batman-adv/patches/0014-batman-adv-Fix-broken-DAT-capability-check.patch b/batman-adv/patches/0014-batman-adv-Fix-broken-DAT-capability-check.patch deleted file mode 100644 index bffabb3..0000000 --- a/batman-adv/patches/0014-batman-adv-Fix-broken-DAT-capability-check.patch +++ /dev/null @@ -1,53 +0,0 @@ -From de4666781c5a64cd55aa6688f77de95f8f66b2c0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Fri, 3 Jul 2015 18:29:56 +0200 -Subject: [PATCH 14/17] batman-adv: Fix broken DAT capability check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The introduction of set_bit() and clear_bit() calls in batman-adv -wrongly passed bitmasks and not the bit numbers to these functions. -This leads to broken capability checks. - -Fixing this by making the capability enum a non-bitmasked one and by -that passing non-masked values to set_bit()/clear_bit(). - -Fixes: bfd0fbaef270 ("batman-adv: Make DAT capability changes atomic") -Reported-by: Def -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - distributed-arp-table.c | 2 +- - types.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/distributed-arp-table.c b/distributed-arp-table.c -index b2cc19b..c0c514d 100644 ---- a/distributed-arp-table.c -+++ b/distributed-arp-table.c -@@ -422,7 +422,7 @@ static bool batadv_is_orig_node_eligible(struct batadv_dat_candidate *res, - int j; - - /* check if orig node candidate is running DAT */ -- if (!(candidate->capabilities & BATADV_ORIG_CAPA_HAS_DAT)) -+ if (!(test_bit(BATADV_ORIG_CAPA_HAS_DAT, &candidate->capabilities))) - goto out; - - /* Check if this node has already been selected... */ -diff --git a/types.h b/types.h -index 65dc6bf..08a6343 100644 ---- a/types.h -+++ b/types.h -@@ -299,7 +299,7 @@ struct batadv_orig_node { - * (= orig node announces a tvlv of type BATADV_TVLV_MCAST) - */ - enum batadv_orig_capabilities { -- BATADV_ORIG_CAPA_HAS_DAT = BIT(0), -+ BATADV_ORIG_CAPA_HAS_DAT, - BATADV_ORIG_CAPA_HAS_NC = BIT(1), - BATADV_ORIG_CAPA_HAS_TT = BIT(2), - BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), --- -2.1.4 - diff --git a/batman-adv/patches/0015-batman-adv-Fix-broken-NC-capability-check.patch b/batman-adv/patches/0015-batman-adv-Fix-broken-NC-capability-check.patch deleted file mode 100644 index 86ecd92..0000000 --- a/batman-adv/patches/0015-batman-adv-Fix-broken-NC-capability-check.patch +++ /dev/null @@ -1,53 +0,0 @@ -From dfb27e75b5586e356e88b9d827d772a6cbdf3cc1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Fri, 3 Jul 2015 18:29:57 +0200 -Subject: [PATCH 15/17] batman-adv: Fix broken NC capability check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The introduction of set_bit() and clear_bit() calls in batman-adv -wrongly passed bitmasks and not the bit numbers to these functions. -This leads to broken capability checks. - -Fixing this by making the capability enum a non-bitmasked one and by -that passing non-masked values to set_bit()/clear_bit(). - -Fixes: 586df9e2537b ("batman-adv: Make NC capability changes atomic") -Reported-by: Def -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - network-coding.c | 2 +- - types.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/network-coding.c b/network-coding.c -index 3ce493e..0309c2c 100644 ---- a/network-coding.c -+++ b/network-coding.c -@@ -871,7 +871,7 @@ void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, - goto out; - - /* check if orig node is network coding enabled */ -- if (!(orig_node->capabilities & BATADV_ORIG_CAPA_HAS_NC)) -+ if (!(test_bit(BATADV_ORIG_CAPA_HAS_NC, &orig_node->capabilities))) - goto out; - - /* accept ogms from 'good' neighbors and single hop neighbors */ -diff --git a/types.h b/types.h -index 08a6343..cb7ccb1 100644 ---- a/types.h -+++ b/types.h -@@ -300,7 +300,7 @@ struct batadv_orig_node { - */ - enum batadv_orig_capabilities { - BATADV_ORIG_CAPA_HAS_DAT, -- BATADV_ORIG_CAPA_HAS_NC = BIT(1), -+ BATADV_ORIG_CAPA_HAS_NC, - BATADV_ORIG_CAPA_HAS_TT = BIT(2), - BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), - }; --- -2.1.4 - diff --git a/batman-adv/patches/0016-batman-adv-Fix-broken-TT-capability-check.patch b/batman-adv/patches/0016-batman-adv-Fix-broken-TT-capability-check.patch deleted file mode 100644 index 5295026..0000000 --- a/batman-adv/patches/0016-batman-adv-Fix-broken-TT-capability-check.patch +++ /dev/null @@ -1,54 +0,0 @@ -From a4824ffaa200050a0b3e68101ebe074a7c45b7d5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Fri, 3 Jul 2015 18:29:58 +0200 -Subject: [PATCH 16/17] batman-adv: Fix broken TT capability check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The introduction of set_bit() and clear_bit() calls in batman-adv -wrongly passed bitmasks and not the bit numbers to these functions. -This leads to broken capability checks. - -Fixing this by making the capability enum a non-bitmasked one and by -that passing non-masked values to set_bit()/clear_bit(). - -Fixes: a51fa16ecf3f ("batman-adv: Make TT capability changes atomic") -Reported-by: Def -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - translation-table.c | 3 ++- - types.h | 2 +- - 2 files changed, 3 insertions(+), 2 deletions(-) - -diff --git a/translation-table.c b/translation-table.c -index b6c0f52..d73b103 100644 ---- a/translation-table.c -+++ b/translation-table.c -@@ -3323,7 +3323,8 @@ static void batadv_tt_update_orig(struct batadv_priv *bat_priv, - bool has_tt_init; - - tt_vlan = (struct batadv_tvlv_tt_vlan_data *)tt_buff; -- has_tt_init = orig_node->capa_initialized & BATADV_ORIG_CAPA_HAS_TT; -+ has_tt_init = test_bit(BATADV_ORIG_CAPA_HAS_TT, -+ &orig_node->capa_initialized); - - /* orig table not initialised AND first diff is in the OGM OR the ttvn - * increased by one -> we can apply the attached changes -diff --git a/types.h b/types.h -index cb7ccb1..6f4486c 100644 ---- a/types.h -+++ b/types.h -@@ -301,7 +301,7 @@ struct batadv_orig_node { - enum batadv_orig_capabilities { - BATADV_ORIG_CAPA_HAS_DAT, - BATADV_ORIG_CAPA_HAS_NC, -- BATADV_ORIG_CAPA_HAS_TT = BIT(2), -+ BATADV_ORIG_CAPA_HAS_TT, - BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), - }; - --- -2.1.4 - diff --git a/batman-adv/patches/0017-batman-adv-Fix-broken-MCAST-capability-check.patch b/batman-adv/patches/0017-batman-adv-Fix-broken-MCAST-capability-check.patch deleted file mode 100644 index 8930543..0000000 --- a/batman-adv/patches/0017-batman-adv-Fix-broken-MCAST-capability-check.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 1798ad3fb6ba72f8c6f96024b27ad27193648787 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Linus=20L=C3=BCssing?= -Date: Fri, 3 Jul 2015 18:29:59 +0200 -Subject: [PATCH 17/17] batman-adv: Fix broken MCAST capability check -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The introduction of set_bit() and clear_bit() calls in batman-adv -wrongly passed bitmasks and not the bit numbers to these functions. -This leads to broken capability checks. - -Fixing this by making the capability enum a non-bitmasked one and by -that passing non-masked values to set_bit()/clear_bit(). - -Fixes: 201a54ba710a ("batman-adv: Make MCAST capability changes atomic") -Reported-by: Def -Signed-off-by: Linus Lüssing -Signed-off-by: Marek Lindner ---- - multicast.c | 11 ++++++----- - types.h | 2 +- - 2 files changed, 7 insertions(+), 6 deletions(-) - -diff --git a/multicast.c b/multicast.c -index b75bcc3..ee8317f 100644 ---- a/multicast.c -+++ b/multicast.c -@@ -709,14 +709,15 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - mcast_flags = *(uint8_t *)tvlv_value; - - spin_lock_bh(&orig->mcast_handler_lock); -- orig_initialized = orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST; -+ orig_initialized = test_bit(BATADV_ORIG_CAPA_HAS_MCAST, -+ &orig->capa_initialized); - - /* If mcast support is turned on decrease the disabled mcast node - * counter only if we had increased it for this node before. If this - * is a completely new orig_node no need to decrease the counter. - */ - if (orig_mcast_enabled && -- !(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST)) { -+ !(test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities))) { - if (orig_initialized) - atomic_dec(&bat_priv->mcast.num_disabled); - set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); -@@ -725,7 +726,7 @@ static void batadv_mcast_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, - * node counter. - */ - } else if (!orig_mcast_enabled && -- (orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST || -+ (test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities) || - !orig_initialized)) { - atomic_inc(&bat_priv->mcast.num_disabled); - clear_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); -@@ -774,8 +775,8 @@ void batadv_mcast_purge_orig(struct batadv_orig_node *orig) - - spin_lock_bh(&orig->mcast_handler_lock); - -- if (!(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST) && -- orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST) -+ if (!(test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities)) && -+ test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized)) - atomic_dec(&bat_priv->mcast.num_disabled); - - batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS); -diff --git a/types.h b/types.h -index 6f4486c..3baf595 100644 ---- a/types.h -+++ b/types.h -@@ -302,7 +302,7 @@ enum batadv_orig_capabilities { - BATADV_ORIG_CAPA_HAS_DAT, - BATADV_ORIG_CAPA_HAS_NC, - BATADV_ORIG_CAPA_HAS_TT, -- BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), -+ BATADV_ORIG_CAPA_HAS_MCAST, - }; - - /** --- -2.1.4 - From 7ddd4320c244bf501a0695d47b2c0c5aed771a30 Mon Sep 17 00:00:00 2001 From: Marek Lindner Date: Wed, 5 Aug 2015 02:56:49 +0800 Subject: [PATCH 5/7] batctl: upgrade package to latest release 2015.1 Signed-off-by: Marek Lindner --- batctl/Makefile | 4 +- ...et-if_ether.h-instead-of-linux-if_et.patch | 66 ------------------- ...l-Add-required-includes-to-all-files.patch | 54 --------------- 3 files changed, 2 insertions(+), 122 deletions(-) delete mode 100644 batctl/patches/0001-batctl-use-netinet-if_ether.h-instead-of-linux-if_et.patch delete mode 100644 batctl/patches/0002-batctl-Add-required-includes-to-all-files.patch diff --git a/batctl/Makefile b/batctl/Makefile index 74bb384..8cf2d17 100644 --- a/batctl/Makefile +++ b/batctl/Makefile @@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=batctl -PKG_VERSION:=2015.0 +PKG_VERSION:=2015.1 PKG_RELEASE:=1 -PKG_MD5SUM:=d28ad89d71888ad6b99a1f6b30c9d47c +PKG_MD5SUM:=3db00af0b3cf55136babe06aa666e15f PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) diff --git a/batctl/patches/0001-batctl-use-netinet-if_ether.h-instead-of-linux-if_et.patch b/batctl/patches/0001-batctl-use-netinet-if_ether.h-instead-of-linux-if_et.patch deleted file mode 100644 index db6f139..0000000 --- a/batctl/patches/0001-batctl-use-netinet-if_ether.h-instead-of-linux-if_et.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 6423e3e5cdc1f79625dbf90ff6444b0ad8b02185 Mon Sep 17 00:00:00 2001 -From: Alex Suykov -Date: Mon, 6 Apr 2015 17:29:13 +0300 -Subject: [PATCH] batctl: use netinet/if_ether.h instead of linux/if_ether.h - -musl does not allow including netinet/* and linux/* headers together. -batctl includes netinet/if_ether.h indirectly via net/ethernet.h, -so netinet/if_ether.h must be used instead of linux/if_ether.h. - -Signed-off-by: Alex Suykov -Acked-by: Sven Eckelmann -Signed-off-by: Marek Lindner ---- - ping.c | 2 +- - tcpdump.h | 2 +- - traceroute.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/ping.c b/ping.c -index bdca222..7880a82 100644 ---- a/ping.c -+++ b/ping.c -@@ -34,7 +34,7 @@ - #include - #include - #include --#include -+#include - - #include "main.h" - #include "ping.h" -diff --git a/tcpdump.h b/tcpdump.h -index 5d936f2..3c9126c 100644 ---- a/tcpdump.h -+++ b/tcpdump.h -@@ -23,7 +23,7 @@ - #define _BATCTL_TCPDUMP_H - - #include --#include -+#include - #include - #include - #include "main.h" -diff --git a/traceroute.c b/traceroute.c -index 4ebfec2..373fe90 100644 ---- a/traceroute.c -+++ b/traceroute.c -@@ -22,13 +22,13 @@ - - - #include -+#include - #include - #include - #include - #include - #include - #include --#include - #include - #include - #include --- -2.1.4 - diff --git a/batctl/patches/0002-batctl-Add-required-includes-to-all-files.patch b/batctl/patches/0002-batctl-Add-required-includes-to-all-files.patch deleted file mode 100644 index cc2d176..0000000 --- a/batctl/patches/0002-batctl-Add-required-includes-to-all-files.patch +++ /dev/null @@ -1,54 +0,0 @@ -From fb51f72f3fe911103abe565ebe88b7545a18d963 Mon Sep 17 00:00:00 2001 -From: Sven Eckelmann -Date: Fri, 17 Apr 2015 19:40:28 +0200 -Subject: [PATCH] batctl: Add required includes to all files - -The header files could not be build indepdent from each other. This is happened -because headers didn't include the files for things they've used. This was -problematic because the success of a build depended on the knowledge about the -right order of local includes. - -Also source files were not including everything they've used explicitly. -Instead they required that transitive includes are always stable. This is -problematic because some transitive includes are not obvious, depend on config -settings and may not be stable in the future. - -The order for include blocks are: - - * primary headers (main.h and the *.h file of a *.c file) - * global linux headers - * required local headers - * extra forward declarations for pointers in function/struct declarations - -The only exceptions are linux/bitops.h and linux/if_ether.h in packet.h. This -header file is shared with userspace applications like batctl and must -therefore build together with userspace applications. The header linux/bitops.h -is not part of the uapi headers and linux/if_ether.h conflicts with the musl -implementation of netinet/if_ether.h. The maintainers rejected the use of -__KERNEL__ preprocessor checks and thus these two headers are only in main.h. -All files using packet.h first have to include main.h to work correctly. - -Reported-by: Markus Pargmann -Signed-off-by: Sven Eckelmann -Signed-off-by: Marek Lindner ---- - packet.h | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/packet.h b/packet.h -index b81fbbf..7a9cb7a 100644 ---- a/packet.h -+++ b/packet.h -@@ -18,6 +18,9 @@ - #ifndef _NET_BATMAN_ADV_PACKET_H_ - #define _NET_BATMAN_ADV_PACKET_H_ - -+#include -+#include -+ - /** - * enum batadv_packettype - types for batman-adv encapsulated packets - * @BATADV_IV_OGM: originator messages for B.A.T.M.A.N. IV --- -2.1.4 - From 5bcc48d5d032dd53ae58d03014b59e879eec2c3f Mon Sep 17 00:00:00 2001 From: Axel Neumann Date: Fri, 7 Aug 2015 13:33:59 +0200 Subject: [PATCH 6/7] [bmx7] update to latest semtor-branch version --- bmx7/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bmx7/Makefile b/bmx7/Makefile index e611ffa..9f2e937 100644 --- a/bmx7/Makefile +++ b/bmx7/Makefile @@ -32,8 +32,8 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=git://github.com/axn/bmx6.git #PKG_SOURCE_URL:=file:///home/neumann/bmx6/bmx6.git -PKG_REV:=2865a2fe21e6dae00b43b3b91ba0625af9757c09 -PKG_VERSION:=r2015072121 +PKG_REV:=c893847b458294e4559b8523f3397fbee4b32a8f +PKG_VERSION:=r2015080722 PKG_RELEASE:=4 PKG_LICENSE:=GPL-2.0 From cfefe9fccae2332d147fd9bae7c72d15a42d1982 Mon Sep 17 00:00:00 2001 From: Axel Neumann Date: Fri, 7 Aug 2015 20:42:49 +0200 Subject: [PATCH 7/7] [bmx6] update to latest bmx6-master branch (fix rule corruption on the fly) --- bmx6/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bmx6/Makefile b/bmx6/Makefile index 4ac6af4..425c298 100644 --- a/bmx6/Makefile +++ b/bmx6/Makefile @@ -31,8 +31,8 @@ PKG_SOURCE_PROTO:=git #PKG_SOURCE_URL:=git://bmx6.net/bmx6.git PKG_SOURCE_URL:=git://github.com/axn/bmx6.git -PKG_REV:=8f26909e8808ed7fab0359afc15a3e44563fbd40 -PKG_VERSION:=r2015061604 +PKG_REV:=2a87b770d3f9c254e3927dc159e2f425f2e0e83a +PKG_VERSION:=r2015080701 PKG_RELEASE:=4 PKG_LICENSE:=GPL-2.0