Message ID | 1363223884.29475.0.camel@edumazet-glaptop |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Mar 14, 2013 at 02:18:04AM +0100, Eric Dumazet wrote: > Ah thanks for this, as this definitely makes more sense ;) > > Could you try the following fix ? > > diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c > index b6d30ac..87f4ecb 100644 > --- a/net/ipv4/ip_fragment.c > +++ b/net/ipv4/ip_fragment.c > @@ -529,6 +529,7 @@ found: > qp->q.meat == qp->q.len) > return ip_frag_reasm(qp, prev, dev); > > + skb_dst_force(skb); > inet_frag_lru_move(&qp->q); > return -EINPROGRESS; > Thanks Eric, with this patch I can no longer reproduce the oops :-)
On Thu, 2013-03-14 at 14:45 +0000, Tom Parkin wrote: > On Thu, Mar 14, 2013 at 02:18:04AM +0100, Eric Dumazet wrote: > > Ah thanks for this, as this definitely makes more sense ;) > > > > Could you try the following fix ? > > > > diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c > > index b6d30ac..87f4ecb 100644 > > --- a/net/ipv4/ip_fragment.c > > +++ b/net/ipv4/ip_fragment.c > > @@ -529,6 +529,7 @@ found: > > qp->q.meat == qp->q.len) > > return ip_frag_reasm(qp, prev, dev); > > > > + skb_dst_force(skb); > > inet_frag_lru_move(&qp->q); > > return -EINPROGRESS; > > > > Thanks Eric, with this patch I can no longer reproduce the oops :-) Thanks for testing. I am considering an alternative patch : We can drop the reference instead, and use the dst of the last skb. This would help to not dirty the dst refcount. I'll send an updated version. -- 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
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index b6d30ac..87f4ecb 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c @@ -529,6 +529,7 @@ found: qp->q.meat == qp->q.len) return ip_frag_reasm(qp, prev, dev); + skb_dst_force(skb); inet_frag_lru_move(&qp->q); return -EINPROGRESS;