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 04/16] batman-adv: Use only queued fragments when merging
Date: Fri, 29 May 2015 11:05:16 +0200 [thread overview]
Message-ID: <1432890328-8247-5-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 fragment queueing code now validates the total_size of each fragment,
checks when enough fragments are queued to allow to merge them into a
single packet and if the fragments have the correct size. Therefore, it is
not required to have any other parameter for the merging function than a
list of queued fragments.
This change should avoid problems like in the past when the different skb
from the list and the function parameter were mixed incorrectly.
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 | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
index a9fc653..6ce3c84 100644
--- a/net/batman-adv/fragmentation.c
+++ b/net/batman-adv/fragmentation.c
@@ -231,19 +231,13 @@ err:
* Returns the merged skb or NULL on error.
*/
static struct sk_buff *
-batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
+batadv_frag_merge_packets(struct hlist_head *chain)
{
struct batadv_frag_packet *packet;
struct batadv_frag_list_entry *entry;
struct sk_buff *skb_out = NULL;
int size, hdr_size = sizeof(struct batadv_frag_packet);
- /* Make sure incoming skb has non-bogus data. */
- packet = (struct batadv_frag_packet *)skb->data;
- size = ntohs(packet->total_size);
- if (size > batadv_frag_size_limit())
- goto free;
-
/* Remove first entry, as this is the destination for the rest of the
* fragments.
*/
@@ -252,6 +246,9 @@ batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
skb_out = entry->skb;
kfree(entry);
+ packet = (struct batadv_frag_packet *)skb_out->data;
+ size = ntohs(packet->total_size);
+
/* Make room for the rest of the fragments. */
if (pskb_expand_head(skb_out, 0, size - skb_out->len, GFP_ATOMIC) < 0) {
kfree_skb(skb_out);
@@ -307,7 +304,7 @@ bool batadv_frag_skb_buffer(struct sk_buff **skb,
if (hlist_empty(&head))
goto out;
- skb_out = batadv_frag_merge_packets(&head, *skb);
+ skb_out = batadv_frag_merge_packets(&head);
if (!skb_out)
goto out_err;
--
2.4.2
WARNING: multiple messages have this Message-ID (diff)
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,
Sven Eckelmann <sven@narfation.org>,
Marek Lindner <mareklindner@neomailbox.ch>,
Antonio Quartulli <antonio@meshcoding.com>
Subject: [PATCH 04/16] batman-adv: Use only queued fragments when merging
Date: Fri, 29 May 2015 11:05:16 +0200 [thread overview]
Message-ID: <1432890328-8247-5-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 fragment queueing code now validates the total_size of each fragment,
checks when enough fragments are queued to allow to merge them into a
single packet and if the fragments have the correct size. Therefore, it is
not required to have any other parameter for the merging function than a
list of queued fragments.
This change should avoid problems like in the past when the different skb
from the list and the function parameter were mixed incorrectly.
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 | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c
index a9fc653..6ce3c84 100644
--- a/net/batman-adv/fragmentation.c
+++ b/net/batman-adv/fragmentation.c
@@ -231,19 +231,13 @@ err:
* Returns the merged skb or NULL on error.
*/
static struct sk_buff *
-batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
+batadv_frag_merge_packets(struct hlist_head *chain)
{
struct batadv_frag_packet *packet;
struct batadv_frag_list_entry *entry;
struct sk_buff *skb_out = NULL;
int size, hdr_size = sizeof(struct batadv_frag_packet);
- /* Make sure incoming skb has non-bogus data. */
- packet = (struct batadv_frag_packet *)skb->data;
- size = ntohs(packet->total_size);
- if (size > batadv_frag_size_limit())
- goto free;
-
/* Remove first entry, as this is the destination for the rest of the
* fragments.
*/
@@ -252,6 +246,9 @@ batadv_frag_merge_packets(struct hlist_head *chain, struct sk_buff *skb)
skb_out = entry->skb;
kfree(entry);
+ packet = (struct batadv_frag_packet *)skb_out->data;
+ size = ntohs(packet->total_size);
+
/* Make room for the rest of the fragments. */
if (pskb_expand_head(skb_out, 0, size - skb_out->len, GFP_ATOMIC) < 0) {
kfree_skb(skb_out);
@@ -307,7 +304,7 @@ bool batadv_frag_skb_buffer(struct sk_buff **skb,
if (hlist_empty(&head))
goto out;
- skb_out = batadv_frag_merge_packets(&head, *skb);
+ skb_out = batadv_frag_merge_packets(&head);
if (!skb_out)
goto out_err;
--
2.4.2
next prev parent reply other threads:[~2015-05-29 9:05 UTC|newest]
Thread overview: 36+ 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 ` 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 ` 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
2015-05-29 9:05 ` [B.A.T.M.A.N.] [PATCH 03/16] batman-adv: Check total_size when queueing fragments Antonio Quartulli
2015-05-29 9:05 ` Antonio Quartulli
2015-05-29 9:05 ` Antonio Quartulli [this message]
2015-05-29 9:05 ` [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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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-29 9:05 ` Antonio Quartulli
2015-05-31 8:08 ` [B.A.T.M.A.N.] pull request: batman-adv 2015-05-29 David Miller
2015-05-31 8:08 ` 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-5-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.