From 3320da8906d8a7277ef54fd1b3646f85354cb66a Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Tue, 19 Apr 2005 22:32:22 -0700 Subject: [PATCH] [IPV6]: Replace bogus instances of inet->recverr While looking at this problem I noticed that IPv6 was sometimes looking at inet->recverr which is bogus. Here is a patch to correct that and use np->recverr. Signed-off-by: Herbert Xu Acked-by: Hideaki YOSHIFUJI Signed-off-by: David S. Miller --- net/ipv6/ip6_output.c | 2 +- net/ipv6/raw.c | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 49208ba75094..0f0711417c9d 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -1149,7 +1149,7 @@ int ip6_push_pending_frames(struct sock *sk) err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, skb->dst->dev, dst_output); if (err) { if (err > 0) - err = inet->recverr ? net_xmit_errno(err) : 0; + err = np->recverr ? net_xmit_errno(err) : 0; if (err) goto error; } diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 3e2ad0a70412..1352c1d9bf4d 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -533,7 +533,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length, struct flowi *fl, struct rt6_info *rt, unsigned int flags) { - struct inet_sock *inet = inet_sk(sk); + struct ipv6_pinfo *np = inet6_sk(sk); struct ipv6hdr *iph; struct sk_buff *skb; unsigned int hh_len; @@ -570,7 +570,7 @@ static int rawv6_send_hdrinc(struct sock *sk, void *from, int length, err = NF_HOOK(PF_INET6, NF_IP6_LOCAL_OUT, skb, NULL, rt->u.dst.dev, dst_output); if (err > 0) - err = inet->recverr ? net_xmit_errno(err) : 0; + err = np->recverr ? net_xmit_errno(err) : 0; if (err) goto error; out: @@ -807,8 +807,6 @@ done: ip6_dst_store(sk, dst, ipv6_addr_equal(&fl.fl6_dst, &np->daddr) ? &np->daddr : NULL); - if (err > 0) - err = np->recverr ? net_xmit_errno(err) : 0; release_sock(sk); out: