ip: stash a pointer to msghdr in struct ping_fakehdr
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 28 Nov 2014 01:34:16 +0000 (20:34 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 4 Feb 2015 06:34:14 +0000 (01:34 -0500)
... instead of storing its ->mgs_iter.iov there

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
include/net/ping.h
net/ipv4/ping.c
net/ipv6/ping.c

index f074060..cc16d41 100644 (file)
@@ -59,7 +59,7 @@ extern struct pingv6_ops pingv6_ops;
 
 struct pingfakehdr {
        struct icmphdr icmph;
-       struct iovec *iov;
+       struct msghdr *msg;
        sa_family_t family;
        __wsum wcheck;
 };
index 2a3720f..9e15ba7 100644 (file)
@@ -602,14 +602,14 @@ int ping_getfrag(void *from, char *to,
                if (fraglen < sizeof(struct icmphdr))
                        BUG();
                if (csum_partial_copy_fromiovecend(to + sizeof(struct icmphdr),
-                           pfh->iov, 0, fraglen - sizeof(struct icmphdr),
+                           pfh->msg->msg_iter.iov, 0, fraglen - sizeof(struct icmphdr),
                            &pfh->wcheck))
                        return -EFAULT;
        } else if (offset < sizeof(struct icmphdr)) {
                        BUG();
        } else {
                if (csum_partial_copy_fromiovecend
-                               (to, pfh->iov, offset - sizeof(struct icmphdr),
+                               (to, pfh->msg->msg_iter.iov, offset - sizeof(struct icmphdr),
                                 fraglen, &pfh->wcheck))
                        return -EFAULT;
        }
@@ -811,8 +811,7 @@ back_from_confirm:
        pfh.icmph.checksum = 0;
        pfh.icmph.un.echo.id = inet->inet_sport;
        pfh.icmph.un.echo.sequence = user_icmph.un.echo.sequence;
-       /* XXX: stripping const */
-       pfh.iov = (struct iovec *)msg->msg_iter.iov;
+       pfh.msg = msg;
        pfh.wcheck = 0;
        pfh.family = AF_INET;
 
index 2d31483..bd46f73 100644 (file)
@@ -163,8 +163,7 @@ int ping_v6_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
        pfh.icmph.checksum = 0;
        pfh.icmph.un.echo.id = inet->inet_sport;
        pfh.icmph.un.echo.sequence = user_icmph.icmp6_sequence;
-       /* XXX: stripping const */
-       pfh.iov = (struct iovec *)msg->msg_iter.iov;
+       pfh.msg = msg;
        pfh.wcheck = 0;
        pfh.family = AF_INET6;