[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20130920.151017.2125552741552759738.davem@davemloft.net>
Date: Fri, 20 Sep 2013 15:10:17 -0400 (EDT)
From: David Miller <davem@...emloft.net>
To: arvid.brodin@...n.com
Cc: netdev@...r.kernel.org, shemminger@...tta.com, joe@...ches.com,
jboticario@...il.com, balferreira@...glemail.com,
elias.molina@....es
Subject: Re: [PATCH v4] net/hsr: Add support for the High-availability
Seamless Redundancy protocol (HSRv0)
From: Arvid Brodin <arvid.brodin@...n.com>
Date: Thu, 19 Sep 2013 03:11:58 +0200
> +/* If dev is a HSR master, return 1; otherwise, return 0.
> + */
> +bool is_hsr_master(struct net_device *dev)
Bool takes on either 'true' or 'false', not '1' or '0'.
> +#if !defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> + /* We need to memmove the whole header to work around
> + * alignment problems caused by the 6-byte HSR tag.
> + */
> + memmove(skb_deliver->data - HSR_TAGLEN, skb_deliver->data,
> + skb_headlen(skb_deliver));
> + skb_deliver->data -= HSR_TAGLEN;
> + skb_deliver->tail -= HSR_TAGLEN;
> +#endif
You can't do this.
First of all, you have no idea if subtracting skb->data a given amount
will underflow the skb buffer start. You aren't even checking, all
of the standard skb_*() data adjustment interfaces do.
Secondly, everything after the header is now at the wrong offset from
the beginning of the packet.
You will have to memmove() the entire packet if you want to realign
where it starts.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists