Message ID | 20090617082327.196eda07@nehalam |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Em Wed, Jun 17, 2009 at 08:23:27AM -0700, Stephen Hemminger escreveu: > Looking at the crash in log_martians(), one suspect is that the check for > mac header being set is not correct. The value of mac_header defaults to > 0 on allocation, therefore skb_mac_header_was_set will always be true on > platforms using NET_SKBUFF_USES_OFFSET. > > Arnaldo, is this correct? > > Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Yeah, looks right, I forgot to initialize it to the value I changed the test in skb_mac_header_was_set when doing the offset patch :-\ Thanks! Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> > --- a/net/core/skbuff.c 2009-06-17 08:16:46.235188728 -0700 > +++ b/net/core/skbuff.c 2009-06-17 08:17:25.810314332 -0700 > @@ -201,6 +201,10 @@ struct sk_buff *__alloc_skb(unsigned int > skb->data = data; > skb_reset_tail_pointer(skb); > skb->end = skb->tail + size; > +#ifdef NET_SKBUFF_DATA_USES_OFFSET > + skb->mac_header = ~0U; > +#endif > + > /* make sure we initialize shinfo sequentially */ > shinfo = skb_shinfo(skb); > atomic_set(&shinfo->dataref, 1); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Arnaldo Carvalho de Melo <acme@redhat.com> Date: Wed, 17 Jun 2009 13:37:16 -0300 > Em Wed, Jun 17, 2009 at 08:23:27AM -0700, Stephen Hemminger escreveu: >> Looking at the crash in log_martians(), one suspect is that the check for >> mac header being set is not correct. The value of mac_header defaults to >> 0 on allocation, therefore skb_mac_header_was_set will always be true on >> platforms using NET_SKBUFF_USES_OFFSET. >> >> Arnaldo, is this correct? >> >> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> > > Yeah, looks right, I forgot to initialize it to the value I changed the > test in skb_mac_header_was_set when doing the offset patch :-\ > > Thanks! > > Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- a/net/core/skbuff.c 2009-06-17 08:16:46.235188728 -0700 +++ b/net/core/skbuff.c 2009-06-17 08:17:25.810314332 -0700 @@ -201,6 +201,10 @@ struct sk_buff *__alloc_skb(unsigned int skb->data = data; skb_reset_tail_pointer(skb); skb->end = skb->tail + size; +#ifdef NET_SKBUFF_DATA_USES_OFFSET + skb->mac_header = ~0U; +#endif + /* make sure we initialize shinfo sequentially */ shinfo = skb_shinfo(skb); atomic_set(&shinfo->dataref, 1);
Looking at the crash in log_martians(), one suspect is that the check for mac header being set is not correct. The value of mac_header defaults to 0 on allocation, therefore skb_mac_header_was_set will always be true on platforms using NET_SKBUFF_USES_OFFSET. Arnaldo, is this correct? Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html