On Thu, May 12, 2011 at 04:43:22PM -0700, Stephen Hemminger wrote:
> > > There were two more follow on commits in stable related to this.
> > > I recommend merging 2.6.38.6 which includes these.
> >
> > The problem still exists in the current 2.6.38.6. Backing out 5f1c356a
> > still solves the problem there.
> >
> > I have not yet tried anything outside the stable-2.6.38.y tree, but it
> > seems like these same changes are present there, and it's unlikely that
> > other releases will work any better.
>
> Does this fix the problem? The tap driver allocates an skb and throws
> it into the receive path, but the skb does not have the same padding
> as normal skb's received.
>
> --- a/drivers/net/tun.c 2011-05-12 16:36:15.231347935 -0700
> +++ b/drivers/net/tun.c 2011-05-12 16:36:38.503464573 -0700
> @@ -614,7 +614,7 @@ static __inline__ ssize_t tun_get_user(s
> }
>
> if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) {
> - align = NET_IP_ALIGN;
> + align = NET_IP_ALIGN + NET_SKB_PAD;
> if (unlikely(len < ETH_HLEN ||
> (gso.hdr_len && gso.hdr_len < ETH_HLEN)))
> return -EINVAL;
>
Sorry, this does not fix the problem.
noah
Attachment:
signature.asc
Description: Digital signature