ip: stash a pointer to msghdr in struct ping_fakehdr
... instead of storing its ->mgs_iter.iov there Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
2e90b1c45e
Коммит
cacdc7d2f9
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче