Message ID | 1222852317-7177-1-git-send-email-den@openvz.org |
---|---|
State | Accepted, archived |
Headers | show |
From: "Denis V. Lunev" <den@openvz.org> Date: Wed, 1 Oct 2008 13:11:57 +0400 > The following actions are possible: > tcp_v6_rcv > skb->dev = NULL; > tcp_v6_do_rcv > tcp_v6_hnd_req > tcp_check_req > req->rsk_ops->send_ack == tcp_v6_send_ack > > So, skb->dev can be NULL in tcp_v6_send_ack. We must obtain namespace > from dst entry. > > Thanks to Vitaliy Gusev <vgusev@openvz.org> for initial problem finding > in IPv4 code. > > Signed-off-by: Denis V. Lunev <den@openvz.org> Applied, thanks for resending this part for me. -- 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
Em Wed, Oct 01, 2008 at 01:11:57PM +0400, Denis V. Lunev escreveu: > The following actions are possible: > tcp_v6_rcv > skb->dev = NULL; > tcp_v6_do_rcv > tcp_v6_hnd_req > tcp_check_req > req->rsk_ops->send_ack == tcp_v6_send_ack > > So, skb->dev can be NULL in tcp_v6_send_ack. We must obtain namespace > from dst entry. > > Thanks to Vitaliy Gusev <vgusev@openvz.org> for initial problem finding > in IPv4 code. > > Signed-off-by: Denis V. Lunev <den@openvz.org> > --- > net/ipv4/tcp_ipv4.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) Forgot to update the diffstat? :-) Nah, just nitpicking :-P > diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c > index b585c85..10e22fd 100644 > --- a/net/ipv6/tcp_ipv6.c > +++ b/net/ipv6/tcp_ipv6.c > @@ -1050,7 +1050,7 @@ static void tcp_v6_send_ack(struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32 > struct tcphdr *th = tcp_hdr(skb), *t1; > struct sk_buff *buff; > struct flowi fl; > - struct net *net = dev_net(skb->dev); > + struct net *net = dev_net(skb->dst->dev); > struct sock *ctl_sk = net->ipv6.tcp_sk; > unsigned int tot_len = sizeof(struct tcphdr); > __be32 *topt; > -- > 1.5.6.4 > > -- > 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 -- 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, 1 Oct 2008 10:34:09 -0300 > Em Wed, Oct 01, 2008 at 01:11:57PM +0400, Denis V. Lunev escreveu: > > Signed-off-by: Denis V. Lunev <den@openvz.org> > > --- > > net/ipv4/tcp_ipv4.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > Forgot to update the diffstat? :-) Nah, just nitpicking :-P Now I don't feel so bad about not noticing this :) -- 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/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index b585c85..10e22fd 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -1050,7 +1050,7 @@ static void tcp_v6_send_ack(struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32 struct tcphdr *th = tcp_hdr(skb), *t1; struct sk_buff *buff; struct flowi fl; - struct net *net = dev_net(skb->dev); + struct net *net = dev_net(skb->dst->dev); struct sock *ctl_sk = net->ipv6.tcp_sk; unsigned int tot_len = sizeof(struct tcphdr); __be32 *topt;
The following actions are possible: tcp_v6_rcv skb->dev = NULL; tcp_v6_do_rcv tcp_v6_hnd_req tcp_check_req req->rsk_ops->send_ack == tcp_v6_send_ack So, skb->dev can be NULL in tcp_v6_send_ack. We must obtain namespace from dst entry. Thanks to Vitaliy Gusev <vgusev@openvz.org> for initial problem finding in IPv4 code. Signed-off-by: Denis V. Lunev <den@openvz.org> --- net/ipv4/tcp_ipv4.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)