[maint,v2] batman-adv: fix elp packet data reservation
Commit Message
The skb_reserve() call only reserved headroom for the mac header, but
not the elp packet header itself.
Fixing this by using skb_put()'ing towards the skb tail instead of
skb_push()'ing towards the skb head.
Fixes: a4b88af77e28 ("batman-adv: ELP - adding basic infrastructure")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
---
Changes in v2:
* just switch from skb_push() to skb_put()
=> skb_put() actually returns the right point in the skb and is
equivalent to a second skb->data assignment after skb_put() in this case
* batamn-adv -> batman-adv
* explicitly directed to maint
net/batman-adv/bat_v_elp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Dienstag, 23. August 2016 03:13:03 CEST Linus Lüssing wrote:
> The skb_reserve() call only reserved headroom for the mac header, but
> not the elp packet header itself.
>
> Fixing this by using skb_put()'ing towards the skb tail instead of
> skb_push()'ing towards the skb head.
>
> Fixes: a4b88af77e28 ("batman-adv: ELP - adding basic infrastructure")
> Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
> ---
Reviewed-by: Sven Eckelmann <sven@narfation.org>
Kind regards,
Sven
On Tuesday, August 23, 2016 8:32:26 AM HKT Sven Eckelmann wrote:
> On Dienstag, 23. August 2016 03:13:03 CEST Linus Lüssing wrote:
> > The skb_reserve() call only reserved headroom for the mac header, but
> > not the elp packet header itself.
> >
> > Fixing this by using skb_put()'ing towards the skb tail instead of
> > skb_push()'ing towards the skb head.
> >
> > Fixes: a4b88af77e28 ("batman-adv: ELP - adding basic infrastructure")
> > Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
> > ---
>
> Reviewed-by: Sven Eckelmann <sven@narfation.org>
Applied in revision 0b75ad1.
Thanks,
Marek
@@ -334,7 +334,7 @@ int batadv_v_elp_iface_enable(struct batadv_hard_iface *hard_iface)
goto out;
skb_reserve(hard_iface->bat_v.elp_skb, ETH_HLEN + NET_IP_ALIGN);
- elp_buff = skb_push(hard_iface->bat_v.elp_skb, BATADV_ELP_HLEN);
+ elp_buff = skb_put(hard_iface->bat_v.elp_skb, BATADV_ELP_HLEN);
elp_packet = (struct batadv_elp_packet *)elp_buff;
memset(elp_packet, 0, BATADV_ELP_HLEN);