batman-adv: avoid skb_linearise() if not needed
Commit Message
Whenever we want to access headers only, we do not need to linearise the whole
packet. Instead we can use pskb_may_pull()
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
---
routing.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
Comments
On Friday, March 16, 2012 11:52:31 Antonio Quartulli wrote:
> Whenever we want to access headers only, we do not need to linearise the
> whole packet. Instead we can use pskb_may_pull()
Applied in revision 782b0f4.
Thanks,
Marek
@@ -915,8 +915,9 @@ static int check_unicast_ttvn(struct bat_priv *bat_priv,
/* Check whether I have to reroute the packet */
if (seq_before(unicast_packet->ttvn, curr_ttvn) || tt_poss_change) {
- /* Linearize the skb before accessing it */
- if (skb_linearize(skb) < 0)
+ /* check if there is enough data before accessing it */
+ if (pskb_may_pull(skb, sizeof(struct unicast_packet) +
+ ETH_HLEN) < 0)
return 0;
ethhdr = (struct ethhdr *)(skb->data +