batman-adv: upgrade package to latest release 2013.4.0
authorMarek Lindner <mareklindner@neomailbox.ch>
Mon, 14 Oct 2013 19:19:03 +0000 (03:19 +0800)
committerMarek Lindner <mareklindner@neomailbox.ch>
Mon, 14 Oct 2013 19:19:03 +0000 (03:19 +0800)
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
batman-adv/Makefile
batman-adv/patches/0001-batman-adv-fix-potential-kernel-paging-errors-for-un.patch [deleted file]
batman-adv/patches/0002-batman-adv-Unmap-fragment-page-once-iterator-is-done.patch [deleted file]
batman-adv/patches/0003-batman-adv-fix-variable-name-in-compat-code.patch [deleted file]
batman-adv/patches/0004-batman-adv-set-the-TAG-flag-for-the-vid-passed-to-BL.patch [deleted file]

index eda923f2bed8b393c3e58bf28c9d697eecc4cf08..e586b5dc599f055ee1c24f5b7c65d1b41d4e99c6 100644 (file)
@@ -10,11 +10,11 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=batman-adv
 
-PKG_VERSION:=2013.3.0
-BATCTL_VERSION:=2013.3.0
-PKG_RELEASE:=6
-PKG_MD5SUM:=d070c0879cd8fe8125315a4566fabd2d
-BATCTL_MD5SUM:=747535b0296f0013a6f99373a51d41fc
+PKG_VERSION:=2013.4.0
+BATCTL_VERSION:=2013.4.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=6590caa324709289e3cb142273a5ff57
+BATCTL_MD5SUM:=42e269cc710bbc9a8fd17628201d4258
 
 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/batman-adv/patches/0001-batman-adv-fix-potential-kernel-paging-errors-for-un.patch b/batman-adv/patches/0001-batman-adv-fix-potential-kernel-paging-errors-for-un.patch
deleted file mode 100644 (file)
index 7d715e2..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-From c98c3e521913b8dd5fee4d3b90dc9ed7a47e5bee Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Linus=20L=C3=BCssing?= <linus.luessing@web.de>
-Date: Tue, 6 Aug 2013 20:21:15 +0200
-Subject: [PATCH 1/4] batman-adv: fix potential kernel paging errors for
- unicast transmissions
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There are several functions which might reallocate skb data. Currently
-some places keep reusing their old ethhdr pointer regardless of whether
-they became invalid after such a reallocation or not. This potentially
-leads to kernel paging errors.
-
-This patch fixes these by refetching the ethdr pointer after the
-potential reallocations.
-
-Signed-off-by: Linus Lüssing <linus.luessing@web.de>
-Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
----
- bridge_loop_avoidance.c |  2 ++
- gateway_client.c        | 13 ++++++++++++-
- gateway_client.h        |  3 +--
- soft-interface.c        |  9 ++++++++-
- unicast.c               | 13 ++++++++++---
- 5 files changed, 33 insertions(+), 7 deletions(-)
-
-diff --git a/bridge_loop_avoidance.c b/bridge_loop_avoidance.c
-index e14531f..264de88 100644
---- a/bridge_loop_avoidance.c
-+++ b/bridge_loop_avoidance.c
-@@ -1529,6 +1529,8 @@ out:
-  * in these cases, the skb is further handled by this function and
-  * returns 1, otherwise it returns 0 and the caller shall further
-  * process the skb.
-+ *
-+ * This call might reallocate skb data.
-  */
- int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
-                 unsigned short vid)
-diff --git a/gateway_client.c b/gateway_client.c
-index f105219..7614af3 100644
---- a/gateway_client.c
-+++ b/gateway_client.c
-@@ -508,6 +508,7 @@ out:
-       return 0;
- }
-+/* this call might reallocate skb data */
- static bool batadv_is_type_dhcprequest(struct sk_buff *skb, int header_len)
- {
-       int ret = false;
-@@ -568,6 +569,7 @@ out:
-       return ret;
- }
-+/* this call might reallocate skb data */
- bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
- {
-       struct ethhdr *ethhdr;
-@@ -619,6 +621,12 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
-       if (!pskb_may_pull(skb, *header_len + sizeof(*udphdr)))
-               return false;
-+
-+      /* skb->data might have been reallocated by pskb_may_pull() */
-+      ethhdr = (struct ethhdr *)skb->data;
-+      if (ntohs(ethhdr->h_proto) == ETH_P_8021Q)
-+              ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
-+
-       udphdr = (struct udphdr *)(skb->data + *header_len);
-       *header_len += sizeof(*udphdr);
-@@ -634,12 +642,14 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
-       return true;
- }
-+/* this call might reallocate skb data */
- bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
--                          struct sk_buff *skb, struct ethhdr *ethhdr)
-+                          struct sk_buff *skb)
- {
-       struct batadv_neigh_node *neigh_curr = NULL, *neigh_old = NULL;
-       struct batadv_orig_node *orig_dst_node = NULL;
-       struct batadv_gw_node *curr_gw = NULL;
-+      struct ethhdr *ethhdr;
-       bool ret, out_of_range = false;
-       unsigned int header_len = 0;
-       uint8_t curr_tq_avg;
-@@ -648,6 +658,7 @@ bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
-       if (!ret)
-               goto out;
-+      ethhdr = (struct ethhdr *)skb->data;
-       orig_dst_node = batadv_transtable_search(bat_priv, ethhdr->h_source,
-                                                ethhdr->h_dest);
-       if (!orig_dst_node)
-diff --git a/gateway_client.h b/gateway_client.h
-index 039902d..1037d75 100644
---- a/gateway_client.h
-+++ b/gateway_client.h
-@@ -34,7 +34,6 @@ void batadv_gw_node_delete(struct batadv_priv *bat_priv,
- void batadv_gw_node_purge(struct batadv_priv *bat_priv);
- int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset);
- bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len);
--bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
--                          struct sk_buff *skb, struct ethhdr *ethhdr);
-+bool batadv_gw_out_of_range(struct batadv_priv *bat_priv, struct sk_buff *skb);
- #endif /* _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ */
-diff --git a/soft-interface.c b/soft-interface.c
-index 700d0b4..0f04e1c 100644
---- a/soft-interface.c
-+++ b/soft-interface.c
-@@ -180,6 +180,9 @@ static int batadv_interface_tx(struct sk_buff *skb,
-       if (batadv_bla_tx(bat_priv, skb, vid))
-               goto dropped;
-+      /* skb->data might have been reallocated by batadv_bla_tx() */
-+      ethhdr = (struct ethhdr *)skb->data;
-+
-       /* Register the client MAC in the transtable */
-       if (!is_multicast_ether_addr(ethhdr->h_source))
-               batadv_tt_local_add(soft_iface, ethhdr->h_source, skb->skb_iif);
-@@ -220,6 +223,10 @@ static int batadv_interface_tx(struct sk_buff *skb,
-               default:
-                       break;
-               }
-+
-+              /* reminder: ethhdr might have become unusable from here on
-+               * (batadv_gw_is_dhcp_target() might have reallocated skb data)
-+               */
-       }
-       /* ethernet packet should be broadcasted */
-@@ -266,7 +273,7 @@ static int batadv_interface_tx(struct sk_buff *skb,
-       /* unicast packet */
-       } else {
-               if (atomic_read(&bat_priv->gw_mode) != BATADV_GW_MODE_OFF) {
--                      ret = batadv_gw_out_of_range(bat_priv, skb, ethhdr);
-+                      ret = batadv_gw_out_of_range(bat_priv, skb);
-                       if (ret)
-                               goto dropped;
-               }
-diff --git a/unicast.c b/unicast.c
-index dc8b5d4..688a041 100644
---- a/unicast.c
-+++ b/unicast.c
-@@ -326,7 +326,9 @@ static bool batadv_unicast_push_and_fill_skb(struct sk_buff *skb, int hdr_size,
-  * @skb: the skb containing the payload to encapsulate
-  * @orig_node: the destination node
-  *
-- * Returns false if the payload could not be encapsulated or true otherwise
-+ * Returns false if the payload could not be encapsulated or true otherwise.
-+ *
-+ * This call might reallocate skb data.
-  */
- static bool batadv_unicast_prepare_skb(struct sk_buff *skb,
-                                      struct batadv_orig_node *orig_node)
-@@ -343,7 +345,9 @@ static bool batadv_unicast_prepare_skb(struct sk_buff *skb,
-  * @orig_node: the destination node
-  * @packet_subtype: the batman 4addr packet subtype to use
-  *
-- * Returns false if the payload could not be encapsulated or true otherwise
-+ * Returns false if the payload could not be encapsulated or true otherwise.
-+ *
-+ * This call might reallocate skb data.
-  */
- bool batadv_unicast_4addr_prepare_skb(struct batadv_priv *bat_priv,
-                                     struct sk_buff *skb,
-@@ -401,7 +405,7 @@ int batadv_unicast_generic_send_skb(struct batadv_priv *bat_priv,
-       struct batadv_neigh_node *neigh_node;
-       int data_len = skb->len;
-       int ret = NET_RX_DROP;
--      unsigned int dev_mtu;
-+      unsigned int dev_mtu, header_len;
-       /* get routing information */
-       if (is_multicast_ether_addr(ethhdr->h_dest)) {
-@@ -429,10 +433,12 @@ find_router:
-       switch (packet_type) {
-       case BATADV_UNICAST:
-               batadv_unicast_prepare_skb(skb, orig_node);
-+              header_len = sizeof(struct batadv_unicast_packet);
-               break;
-       case BATADV_UNICAST_4ADDR:
-               batadv_unicast_4addr_prepare_skb(bat_priv, skb, orig_node,
-                                                packet_subtype);
-+              header_len = sizeof(struct batadv_unicast_4addr_packet);
-               break;
-       default:
-               /* this function supports UNICAST and UNICAST_4ADDR only. It
-@@ -441,6 +447,7 @@ find_router:
-               goto out;
-       }
-+      ethhdr = (struct ethhdr *)(skb->data + header_len);
-       unicast_packet = (struct batadv_unicast_packet *)skb->data;
-       /* inform the destination node that we are still missing a correct route
--- 
-1.8.4.rc3
-
diff --git a/batman-adv/patches/0002-batman-adv-Unmap-fragment-page-once-iterator-is-done.patch b/batman-adv/patches/0002-batman-adv-Unmap-fragment-page-once-iterator-is-done.patch
deleted file mode 100644 (file)
index 75378f7..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-From 0d941e82ab5f92faf33bee6abdde519056f3ac2d Mon Sep 17 00:00:00 2001
-From: Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>
-Date: Wed, 26 Jun 2013 11:37:51 +0200
-Subject: [PATCH 2/4] batman-adv: Unmap fragment page once iterator is done
-
-Callers of skb_seq_read() are currently forced to call skb_abort_seq_read()
-even when consuming all the data because the last call to skb_seq_read (the
-one that returns 0 to indicate the end) fails to unmap the last fragment page.
-
-With this patch callers will be allowed to traverse the SKB data by calling
-skb_prepare_seq_read() once and repeatedly calling skb_seq_read() as originally
-intended (and documented in the original commit 677e90eda), that is, only call
-skb_abort_seq_read() if the sequential read is actually aborted.
-
-Signed-off-by: Wedson Almeida Filho <wedsonaf@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
-Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
----
- compat.h | 8 ++++++++
- main.c   | 1 -
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/compat.h b/compat.h
-index 17ef089..346a824 100644
---- a/compat.h
-+++ b/compat.h
-@@ -306,6 +306,14 @@ static int __batadv_interface_set_mac_addr(x, y)
- #define netdev_notifier_info_to_dev(ptr) ptr
-+/* older kernels still need to call skb_abort_seq_read() */
-+#define skb_seq_read(consumed, data, st) \
-+      ({ \
-+              int len = skb_seq_read(consumed, data, st); \
-+              if (len == 0) \
-+                      skb_abort_seq_read(st); \
-+              len; \
-+      })
- #endif /* < KERNEL_VERSION(3, 11, 0) */
- #endif /* _NET_BATMAN_ADV_COMPAT_H_ */
-diff --git a/main.c b/main.c
-index 51aafd6..08125f3 100644
---- a/main.c
-+++ b/main.c
-@@ -473,7 +473,6 @@ __be32 batadv_skb_crc32(struct sk_buff *skb, u8 *payload_ptr)
-               crc = crc32c(crc, data, len);
-               consumed += len;
-       }
--      skb_abort_seq_read(&st);
-       return htonl(crc);
- }
--- 
-1.8.4.rc3
-
diff --git a/batman-adv/patches/0003-batman-adv-fix-variable-name-in-compat-code.patch b/batman-adv/patches/0003-batman-adv-fix-variable-name-in-compat-code.patch
deleted file mode 100644 (file)
index ac25d85..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From e39bc52671fb33e7d79e58cd5838be75e12abeb8 Mon Sep 17 00:00:00 2001
-From: Antonio Quartulli <ordex@autistici.org>
-Date: Sun, 18 Aug 2013 12:40:03 +0200
-Subject: [PATCH 3/4] batman-adv: fix variable name in compat code
-
-compat code introduced by
-0d941e82ab5f92faf33bee6abdde519056f3ac2d
-("batman-adv: Unmap fragment page once iterator is done")
-is declaring a variable having the same name of one used in
-the batman-adv code. Rename it to prevent sparse warnings.
-
-Signed-off-by: Antonio Quartulli <ordex@autistici.org>
-Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
----
- compat.h | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/compat.h b/compat.h
-index 346a824..35ed4d9 100644
---- a/compat.h
-+++ b/compat.h
-@@ -309,10 +309,10 @@ static int __batadv_interface_set_mac_addr(x, y)
- /* older kernels still need to call skb_abort_seq_read() */
- #define skb_seq_read(consumed, data, st) \
-       ({ \
--              int len = skb_seq_read(consumed, data, st); \
--              if (len == 0) \
-+              int __len = skb_seq_read(consumed, data, st); \
-+              if (__len == 0) \
-                       skb_abort_seq_read(st); \
--              len; \
-+              __len; \
-       })
- #endif /* < KERNEL_VERSION(3, 11, 0) */
--- 
-1.8.4.rc3
-
diff --git a/batman-adv/patches/0004-batman-adv-set-the-TAG-flag-for-the-vid-passed-to-BL.patch b/batman-adv/patches/0004-batman-adv-set-the-TAG-flag-for-the-vid-passed-to-BL.patch
deleted file mode 100644 (file)
index 1b93b8f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From 59221041095c2b83205caab3dbabc94d7a6f32f9 Mon Sep 17 00:00:00 2001
-From: Antonio Quartulli <antonio@open-mesh.com>
-Date: Wed, 11 Sep 2013 19:14:44 +0200
-Subject: [PATCH 4/4] batman-adv: set the TAG flag for the vid passed to BLA
-
-When receiving or sending a packet a packet on a VLAN, the
-vid has to be marked with the TAG flag in order to make any
-component in batman-adv understand that the packet is coming
-from a really tagged network.
-
-This fix the Bridge Loop Avoidance behaviour which was not
-able to send announces over VLAN interfaces.
-
-Introduced by 0b1da1765fdb00ca5d53bc95c9abc70dfc9aae5b
-("batman-adv: change VID semantic in the BLA code")
-
-Signed-off-by: Antonio Quartulli <antonio@open-mesh.org>
-Acked-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
-Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
----
- soft-interface.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/soft-interface.c b/soft-interface.c
-index 0f04e1c..33b6144 100644
---- a/soft-interface.c
-+++ b/soft-interface.c
-@@ -168,6 +168,7 @@ static int batadv_interface_tx(struct sk_buff *skb,
-       case ETH_P_8021Q:
-               vhdr = (struct vlan_ethhdr *)skb->data;
-               vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
-+              vid |= BATADV_VLAN_HAS_TAG;
-               if (vhdr->h_vlan_encapsulated_proto != ethertype)
-                       break;
-@@ -329,6 +330,7 @@ void batadv_interface_rx(struct net_device *soft_iface,
-       case ETH_P_8021Q:
-               vhdr = (struct vlan_ethhdr *)skb->data;
-               vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
-+              vid |= BATADV_VLAN_HAS_TAG;
-               if (vhdr->h_vlan_encapsulated_proto != ethertype)
-                       break;
--- 
-1.8.4.rc3
-