net: ipv6: Fix ipv6_recv_error signature
authorMark Brown <broonie@linaro.org>
Fri, 4 Apr 2014 12:27:31 +0000 (13:27 +0100)
committerMark Brown <broonie@linaro.org>
Tue, 8 Apr 2014 18:51:32 +0000 (19:51 +0100)
When the ipv6 ping code was backported the code appears to have been
cherry picked from upstream without adjusting the signature of
ipv6_recv_error(). In upstream and in the cherry pick the final addr_len
parameter has been dropped but the v3.10 definition had this argument.
Adjust the definition and all callers to follow the upstream pattern.

Signed-off-by: Mark Brown <broonie@linaro.org>
include/net/ipv6.h
net/ipv6/datagram.c
net/ipv6/raw.c
net/ipv6/udp.c

index 08a85885dbb9beaadd795199ecb9e38be0e6e9c8..687d92a3a3c703798a50485ab874631c17b53cab 100644 (file)
@@ -799,8 +799,7 @@ extern int                  compat_ipv6_getsockopt(struct sock *sk,
 extern int                     ip6_datagram_connect(struct sock *sk, 
                                                     struct sockaddr *addr, int addr_len);
 
-extern int                     ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len,
-                                               int *addr_len);
+extern int                     ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
 extern int                     ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len,
                                                 int *addr_len);
 extern void                    ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 port,
index 8997340e37429960cc499eb3067ce71ed99a09d9..1aef8b22ba73494a7edc0f7edba0a2541d057420 100644 (file)
@@ -318,7 +318,7 @@ void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu)
 /*
  *     Handle MSG_ERRQUEUE
  */
-int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
+int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len)
 {
        struct ipv6_pinfo *np = inet6_sk(sk);
        struct sock_exterr_skb *serr;
@@ -369,7 +369,6 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
                                               &sin->sin6_addr);
                        sin->sin6_scope_id = 0;
                }
-               *addr_len = sizeof(*sin);
        }
 
        memcpy(&errhdr.ee, &serr->ee, sizeof(struct sock_extended_err));
index 464b1c9c08e49f258fd1a48bcd9c49aff7b05cd5..dff1f4b2c668f94fcb48582ce77975e9b214091b 100644 (file)
@@ -459,8 +459,10 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
        if (flags & MSG_OOB)
                return -EOPNOTSUPP;
 
-       if (flags & MSG_ERRQUEUE)
-               return ipv6_recv_error(sk, msg, len, addr_len);
+       if (flags & MSG_ERRQUEUE) {
+               *addr_len = sizeof(struct sockaddr_in6);
+               return ipv6_recv_error(sk, msg, len);
+       }
 
        if (np->rxpmtu && np->rxopt.bits.rxpmtu)
                return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
index 6b298dc614e3d2d926d4962d93d3d5d52fdeb251..c46539a1df565c3abf4dd87926f21b58e371e567 100644 (file)
@@ -373,8 +373,10 @@ int udpv6_recvmsg(struct kiocb *iocb, struct sock *sk,
        int is_udp4;
        bool slow;
 
-       if (flags & MSG_ERRQUEUE)
-               return ipv6_recv_error(sk, msg, len, addr_len);
+       if (flags & MSG_ERRQUEUE) {
+               *addr_len = sizeof(struct sockaddr_in6);
+               return ipv6_recv_error(sk, msg, len);
+       }
 
        if (np->rxpmtu && np->rxopt.bits.rxpmtu)
                return ipv6_recv_rxpmtu(sk, msg, len, addr_len);