Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cacdc7d2 authored by Al Viro's avatar Al Viro
Browse files

ip: stash a pointer to msghdr in struct ping_fakehdr



... instead of storing its ->mgs_iter.iov there

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 2e90b1c4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
};
+3 −4
Original line number Diff line number Diff line
@@ -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 @@ static int ping_v4_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
	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;

+1 −2
Original line number Diff line number Diff line
@@ -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;