Message ID | 1257276085-13681-1-git-send-email-gilad@codefidence.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Gilad Ben-Yossef <gilad@codefidence.com> Date: Tue, 3 Nov 2009 21:21:25 +0200 > Trying to parse the option of a SYN packet that we have > no route entry for should just use global wide defaults > for route entry options. > > Signed-off-by: Gilad Ben-Yossef <gilad@codefidence.com> The tester has indicated that this doesn't solve things for them. I suspect there is another dependency on 'dst' not being NULL in another path somewhere. So until this is fully resolved I'm holding off on applying this patch. -- 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
David Miller wrote: > From: Gilad Ben-Yossef <gilad@codefidence.com> > Date: Tue, 3 Nov 2009 21:21:25 +0200 > > >> Trying to parse the option of a SYN packet that we have >> no route entry for should just use global wide defaults >> for route entry options. >> >> Signed-off-by: Gilad Ben-Yossef <gilad@codefidence.com> >> > > The tester has indicated that this doesn't solve things > for them. I suspect there is another dependency on 'dst' > not being NULL in another path somewhere. > > So until this is fully resolved I'm holding off on applying > this patch. > > Yes, indeed. I managed to replicate it here. Looking into it right now. Thanks, Gilad
diff --git a/include/net/dst.h b/include/net/dst.h index b562be3..0654c27 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -114,7 +114,7 @@ dst_metric(const struct dst_entry *dst, int metric) static inline u32 dst_feature(const struct dst_entry *dst, u32 feature) { - return dst_metric(dst, RTAX_FEATURES) & feature; + return (dst ? dst_metric(dst, RTAX_FEATURES) & feature : 0); } static inline u32 dst_mtu(const struct dst_entry *dst) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4262da5..57e99e1 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3704,8 +3704,6 @@ void tcp_parse_options(struct sk_buff *skb, struct tcp_options_received *opt_rx, struct tcphdr *th = tcp_hdr(skb); int length = (th->doff * 4) - sizeof(struct tcphdr); - BUG_ON(!estab && !dst); - ptr = (unsigned char *)(th + 1); opt_rx->saw_tstamp = 0;
Trying to parse the option of a SYN packet that we have no route entry for should just use global wide defaults for route entry options. Signed-off-by: Gilad Ben-Yossef <gilad@codefidence.com> --- include/net/dst.h | 2 +- net/ipv4/tcp_input.c | 2 -- 2 files changed, 1 insertions(+), 3 deletions(-)