* [B.A.T.M.A.N.] [PATCH 0/3] batadv_interface_rx pskb_may_pull cleanup
@ 2016-02-28 10:37 Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx Sven Eckelmann
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Sven Eckelmann @ 2016-02-28 10:37 UTC (permalink / raw)
To: b.a.t.m.a.n
[-- Attachment #1: Type: text/plain, Size: 648 bytes --]
Hi,
this patchset is about cleaning up the pskb_may_pull(skb, hdr_size) in
batadv_interface_rx. This was pointed out by Marek while he checked the
"pskb_may_pull(skb, ETH_HLEN)"/"pskb_may_pull(skb, VLAN_ETH_HLEN)" fix [1].
This patchset *does not* replace the other fix.
The patchset contains three patches because:
* first one is there to make clear that batadv_interface_rx is not
responsible for checking hdr_size
* second one is a bonus. Just noticed this useless parameter while writing
the kernel-doc
* the last patch then really removes this extra check.
Kind regards,
Sven
[1] https://patchwork.open-mesh.org/patch/15853/
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx
2016-02-28 10:37 [B.A.T.M.A.N.] [PATCH 0/3] batadv_interface_rx pskb_may_pull cleanup Sven Eckelmann
@ 2016-02-28 10:38 ` Sven Eckelmann
2016-03-20 10:00 ` Marek Lindner
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx Sven Eckelmann
2 siblings, 1 reply; 7+ messages in thread
From: Sven Eckelmann @ 2016-02-28 10:38 UTC (permalink / raw)
To: b.a.t.m.a.n
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
net/batman-adv/soft-interface.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index 7679f3a..d786dce 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -381,6 +381,24 @@ end:
return NETDEV_TX_OK;
}
+/**
+ * batadv_interface_rx - receive ethernet frame on local batman-adv interface
+ * @soft_iface: local interface which will receive the ethernet frame
+ * @skb: ethernet frame for @soft_iface
+ * @recv_if: interface on which the batman-adv packet was received
+ * @hdr_size: size of already parsed batman-adv header
+ * @orig_node: originator from which the batman-adv packet was sent
+ *
+ * Sends a ethernet frame to the receive path of the local @soft_iface.
+ * skb->data has still point to the batman-adv header with the size @hdr_size.
+ * The caller has to have parsed this header already and made sure that at least
+ * @hdr_size bytes are still available for pull in @skb.
+ *
+ * The packet may still get dropped. This can happen when the encapsulated
+ * ethernet frame is invalid or contains again an batman-adv packet. Also
+ * unicast packets will be dropped directly when it was sent between two
+ * isolated clients.
+ */
void batadv_interface_rx(struct net_device *soft_iface,
struct sk_buff *skb, struct batadv_hard_iface *recv_if,
int hdr_size, struct batadv_orig_node *orig_node)
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx
2016-02-28 10:37 [B.A.T.M.A.N.] [PATCH 0/3] batadv_interface_rx pskb_may_pull cleanup Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx Sven Eckelmann
@ 2016-02-28 10:38 ` Sven Eckelmann
2016-03-20 10:01 ` Marek Lindner
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx Sven Eckelmann
2 siblings, 1 reply; 7+ messages in thread
From: Sven Eckelmann @ 2016-02-28 10:38 UTC (permalink / raw)
To: b.a.t.m.a.n
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
net/batman-adv/routing.c | 5 ++---
net/batman-adv/soft-interface.c | 5 ++---
net/batman-adv/soft-interface.h | 4 ++--
3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 45093c6..2008b8a 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -904,7 +904,7 @@ int batadv_recv_unicast_packet(struct sk_buff *skb,
hdr_size))
goto rx_success;
- batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size,
+ batadv_interface_rx(recv_if->soft_iface, skb, hdr_size,
orig_node);
rx_success:
@@ -1114,8 +1114,7 @@ int batadv_recv_bcast_packet(struct sk_buff *skb,
goto rx_success;
/* broadcast for me */
- batadv_interface_rx(recv_if->soft_iface, skb, recv_if, hdr_size,
- orig_node);
+ batadv_interface_rx(recv_if->soft_iface, skb, hdr_size, orig_node);
rx_success:
ret = NET_RX_SUCCESS;
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index d786dce..bdda984 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -385,7 +385,6 @@ end:
* batadv_interface_rx - receive ethernet frame on local batman-adv interface
* @soft_iface: local interface which will receive the ethernet frame
* @skb: ethernet frame for @soft_iface
- * @recv_if: interface on which the batman-adv packet was received
* @hdr_size: size of already parsed batman-adv header
* @orig_node: originator from which the batman-adv packet was sent
*
@@ -400,8 +399,8 @@ end:
* isolated clients.
*/
void batadv_interface_rx(struct net_device *soft_iface,
- struct sk_buff *skb, struct batadv_hard_iface *recv_if,
- int hdr_size, struct batadv_orig_node *orig_node)
+ struct sk_buff *skb, int hdr_size,
+ struct batadv_orig_node *orig_node)
{
struct batadv_bcast_packet *batadv_bcast_packet;
struct batadv_priv *bat_priv = netdev_priv(soft_iface);
diff --git a/net/batman-adv/soft-interface.h b/net/batman-adv/soft-interface.h
index 417d30a..15c2884 100644
--- a/net/batman-adv/soft-interface.h
+++ b/net/batman-adv/soft-interface.h
@@ -27,8 +27,8 @@ struct sk_buff;
int batadv_skb_head_push(struct sk_buff *skb, unsigned int len);
void batadv_interface_rx(struct net_device *soft_iface,
- struct sk_buff *skb, struct batadv_hard_iface *recv_if,
- int hdr_size, struct batadv_orig_node *orig_node);
+ struct sk_buff *skb, int hdr_size,
+ struct batadv_orig_node *orig_node);
struct net_device *batadv_softif_create(const char *name);
void batadv_softif_destroy_sysfs(struct net_device *soft_iface);
bool batadv_softif_is_valid(const struct net_device *net_dev);
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx
2016-02-28 10:37 [B.A.T.M.A.N.] [PATCH 0/3] batadv_interface_rx pskb_may_pull cleanup Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx Sven Eckelmann
@ 2016-02-28 10:38 ` Sven Eckelmann
2016-03-20 10:01 ` Marek Lindner
2 siblings, 1 reply; 7+ messages in thread
From: Sven Eckelmann @ 2016-02-28 10:38 UTC (permalink / raw)
To: b.a.t.m.a.n
The callers of batadv_interface_rx have to make sure that enough data can
be pulled from the skb when they read the batman-adv header. The only two
functions using it are either calling pskb_may_pull with hdr_size directly
(batadv_recv_bcast_packet) or indirectly via batadv_check_unicast_packet
(batadv_recv_unicast_packet).
Reported-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
net/batman-adv/soft-interface.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index bdda984..f24dc59 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -413,10 +413,6 @@ void batadv_interface_rx(struct net_device *soft_iface,
batadv_bcast_packet = (struct batadv_bcast_packet *)skb->data;
is_bcast = (batadv_bcast_packet->packet_type == BATADV_BCAST);
- /* check if enough space is available for pulling, and pull */
- if (!pskb_may_pull(skb, hdr_size))
- goto dropped;
-
skb_pull_rcsum(skb, hdr_size);
skb_reset_mac_header(skb);
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx Sven Eckelmann
@ 2016-03-20 10:00 ` Marek Lindner
0 siblings, 0 replies; 7+ messages in thread
From: Marek Lindner @ 2016-03-20 10:00 UTC (permalink / raw)
To: b.a.t.m.a.n
[-- Attachment #1: Type: text/plain, Size: 259 bytes --]
On Sunday, February 28, 2016 11:38:50 Sven Eckelmann wrote:
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
> net/batman-adv/soft-interface.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
Applied in revision a90f291.
Thanks,
Marek
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx Sven Eckelmann
@ 2016-03-20 10:01 ` Marek Lindner
0 siblings, 0 replies; 7+ messages in thread
From: Marek Lindner @ 2016-03-20 10:01 UTC (permalink / raw)
To: b.a.t.m.a.n
[-- Attachment #1: Type: text/plain, Size: 350 bytes --]
On Sunday, February 28, 2016 11:38:51 Sven Eckelmann wrote:
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
> net/batman-adv/routing.c | 5 ++---
> net/batman-adv/soft-interface.c | 5 ++---
> net/batman-adv/soft-interface.h | 4 ++--
> 3 files changed, 6 insertions(+), 8 deletions(-)
Applied in revision 4c0f1f6.
Thanks,
Marek
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx Sven Eckelmann
@ 2016-03-20 10:01 ` Marek Lindner
0 siblings, 0 replies; 7+ messages in thread
From: Marek Lindner @ 2016-03-20 10:01 UTC (permalink / raw)
To: b.a.t.m.a.n
[-- Attachment #1: Type: text/plain, Size: 639 bytes --]
On Sunday, February 28, 2016 11:38:52 Sven Eckelmann wrote:
> The callers of batadv_interface_rx have to make sure that enough data can
> be pulled from the skb when they read the batman-adv header. The only two
> functions using it are either calling pskb_may_pull with hdr_size directly
> (batadv_recv_bcast_packet) or indirectly via batadv_check_unicast_packet
> (batadv_recv_unicast_packet).
>
> Reported-by: Marek Lindner <mareklindner@neomailbox.ch>
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> ---
> net/batman-adv/soft-interface.c | 4 ----
> 1 file changed, 4 deletions(-)
Applied in revision d1c596a.
Thanks,
Marek
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-03-20 10:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-28 10:37 [B.A.T.M.A.N.] [PATCH 0/3] batadv_interface_rx pskb_may_pull cleanup Sven Eckelmann
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 1/3] batman-adv: Add kernel-doc for batadv_interface_rx Sven Eckelmann
2016-03-20 10:00 ` Marek Lindner
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 2/3] batman-adv: Remove unused parameter recv_if of batadv_interface_rx Sven Eckelmann
2016-03-20 10:01 ` Marek Lindner
2016-02-28 10:38 ` [B.A.T.M.A.N.] [PATCH 3/3] batman-adv: Remove hdr_size skb size check in batadv_interface_rx Sven Eckelmann
2016-03-20 10:01 ` Marek Lindner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox