From: Antonio Quartulli <antonio@meshcoding.com>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, b.a.t.m.a.n@lists.open-mesh.org,
Antonio Quartulli <antonio@meshcoding.com>,
Marek Lindner <mareklindner@neomailbox.ch>
Subject: [B.A.T.M.A.N.] [PATCH 03/16] batman-adv: Check total_size when queueing fragments
Date: Fri, 29 May 2015 11:05:15 +0200 [thread overview]
Message-ID: <1432890328-8247-4-git-send-email-antonio@meshcoding.com> (raw)
In-Reply-To: <1432890328-8247-1-git-send-email-antonio@meshcoding.com>
From: Sven Eckelmann <sven@narfation.org>
The fragmentation code was replaced in
610bfc6bc99bc83680d190ebc69359a05fc7f605 ("batman-adv: Receive fragmented
packets and merge") by an implementation which handles the queueing+merging
of fragments based on their size and the total_size of the non-fragmented
packet. This total_size is announced by each fragment. The new
implementation doesn't check if the the total_size information of the
packets inside one chain is consistent.
This is consistency check is recommended to allow using any of the packets
in the queue to decide whether all fragments of a packet are received or
not.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Acked-by: Martin Hundebøll <martin@hundeboll.net>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
---
net/batman-adv/fragmentation.c | 7 +++++--
net/batman-adv/types.h | 2 ++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
index af495cc..a9fc653 100644
--- a/net/batman-adv/fragmentation.c
+++ b/net/batman-adv/fragmentation.c
@@ -161,6 +161,7 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node,
hlist_add_head(&frag_entry_new->list, &chain->head);
chain->size = skb->len - hdr_size;
chain->timestamp = jiffies;
+ chain->total_size = ntohs(frag_packet->total_size);
ret = true;
goto out;
}
@@ -195,9 +196,11 @@ static bool batadv_frag_insert_packet(struct batadv_orig_node *orig_node,
out:
if (chain->size > batadv_frag_size_limit() ||
- ntohs(frag_packet->total_size) > batadv_frag_size_limit()) {
+ chain->total_size != ntohs(frag_packet->total_size) ||
+ chain->total_size > batadv_frag_size_limit()) {
/* Clear chain if total size of either the list or the packet
- * exceeds the maximum size of one merged packet.
+ * exceeds the maximum size of one merged packet. Don't allow
+ * packets to have different total_size.
*/
batadv_frag_clear_chain(&chain->head);
chain->size = 0;
diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
index 28f2461..e95db42 100644
--- a/net/batman-adv/types.h
+++ b/net/batman-adv/types.h
@@ -132,6 +132,7 @@ struct batadv_orig_ifinfo {
* @timestamp: time (jiffie) of last received fragment
* @seqno: sequence number of the fragments in the list
* @size: accumulated size of packets in list
+ * @total_size: expected size of the assembled packet
*/
struct batadv_frag_table_entry {
struct hlist_head head;
@@ -139,6 +140,7 @@ struct batadv_frag_table_entry {
unsigned long timestamp;
uint16_t seqno;
uint16_t size;
+ uint16_t total_size;
};
/**
--
2.4.2
next prev parent reply other threads:[~2015-05-29 9:05 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-29 9:05 [B.A.T.M.A.N.] pull request: batman-adv 2015-05-29 Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 01/16] batman-adv: Start new development cycle Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 02/16] batman-adv: update copyright years for 2015 Antonio Quartulli
2015-05-29 9:05 ` Antonio Quartulli [this message]
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 04/16] batman-adv: Use only queued fragments when merging Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 05/16] batman-adv: debugfs, avoid compiling for !DEBUG_FS Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 06/16] batman-adv: tvlv realloc, move error handling into if block Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 07/16] batman-adv: Makefile, Sort alphabetically Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 08/16] batman-adv: iv_ogm_iface_enable, direct return values Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 09/16] batman-adv: iv_ogm_aggr_packet, bool return value Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 10/16] batman-adv: iv_ogm_send_to_if, declare char* as const Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 11/16] batman-adv: Use safer default config for optional features Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 12/16] batman-adv: checkpatch - comparison to NULL could be rewritten Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 13/16] batman-adv: checkpatch - spaces preferred around that '*' Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 14/16] batman-adv: iv_ogm_can_aggregate, code readability Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 15/16] batman-adv: iv_ogm_orig_update, remove unnecessary brackets Antonio Quartulli
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 16/16] batman-adv: Use common declaration order in *_send_skb_(packet|unicast) Antonio Quartulli
2015-05-31 8:08 ` [B.A.T.M.A.N.] pull request: batman-adv 2015-05-29 David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1432890328-8247-4-git-send-email-antonio@meshcoding.com \
--to=antonio@meshcoding.com \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
--cc=davem@davemloft.net \
--cc=mareklindner@neomailbox.ch \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).