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

Reply via email to