[IPV6]: Replace bogus instances of inet->recverr
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 20 Apr 2005 05:32:22 +0000 (22:32 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Apr 2005 05:32:22 +0000 (22:32 -0700)
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 <herbert@gondor.apana.org.au>
Acked-by: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_output.c
net/ipv6/raw.c

index 49208ba75094a32c18987070727b4f6998d78680..0f0711417c9da71d7595e6019033b8976d479b03 100644 (file)
@@ -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;
        }
index 3e2ad0a7041274f7e6b8aab83685c414d195ab31..1352c1d9bf4d35f6619d3dce4996b69578bdb2d2 100644 (file)
@@ -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: