ANDROID: net: pppolac/pppopns: Replace msg.msg_iov with iov_iter_kvec()
Commit 1af89c1ef3b6 ("Hack: net: PPPoPNS and PPPoLAC build fixes for 4.1") fixed the build for PPPoPNS and PPPoLAC by re-introducing a field in struct msghdr which was removed upstream. Re-introducing the field doesn't get it used, so it is quite likely that the code never worked. Fix it up for good. Fixes: 1af89c1ef3b6 ("Hack: net: PPPoPNS and PPPoLAC build fixes for 4.1") Signed-off-by: Guenter Roeck <groeck@chromium.org>
This commit is contained in:
parent
4a623fb5ce
commit
9079f248f6
3 changed files with 8 additions and 14 deletions
|
@ -206,11 +206,10 @@ static void pppolac_xmit_core(struct work_struct *delivery_work)
|
||||||
while ((skb = skb_dequeue(&delivery_queue))) {
|
while ((skb = skb_dequeue(&delivery_queue))) {
|
||||||
struct sock *sk_udp = skb->sk;
|
struct sock *sk_udp = skb->sk;
|
||||||
struct kvec iov = {.iov_base = skb->data, .iov_len = skb->len};
|
struct kvec iov = {.iov_base = skb->data, .iov_len = skb->len};
|
||||||
struct msghdr msg = {
|
struct msghdr msg = { 0 };
|
||||||
.msg_iov = (struct iovec *)&iov,
|
|
||||||
.msg_iovlen = 1,
|
iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iov, 1,
|
||||||
.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT,
|
skb->len);
|
||||||
};
|
|
||||||
sk_udp->sk_prot->sendmsg(sk_udp, &msg, skb->len);
|
sk_udp->sk_prot->sendmsg(sk_udp, &msg, skb->len);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,11 +189,10 @@ static void pppopns_xmit_core(struct work_struct *delivery_work)
|
||||||
while ((skb = skb_dequeue(&delivery_queue))) {
|
while ((skb = skb_dequeue(&delivery_queue))) {
|
||||||
struct sock *sk_raw = skb->sk;
|
struct sock *sk_raw = skb->sk;
|
||||||
struct kvec iov = {.iov_base = skb->data, .iov_len = skb->len};
|
struct kvec iov = {.iov_base = skb->data, .iov_len = skb->len};
|
||||||
struct msghdr msg = {
|
struct msghdr msg = { 0 };
|
||||||
.msg_iov = (struct iovec *)&iov,
|
|
||||||
.msg_iovlen = 1,
|
iov_iter_kvec(&msg.msg_iter, WRITE | ITER_KVEC, &iov, 1,
|
||||||
.msg_flags = MSG_NOSIGNAL | MSG_DONTWAIT,
|
skb->len);
|
||||||
};
|
|
||||||
sk_raw->sk_prot->sendmsg(sk_raw, &msg, skb->len);
|
sk_raw->sk_prot->sendmsg(sk_raw, &msg, skb->len);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,10 +47,6 @@ struct linger {
|
||||||
struct msghdr {
|
struct msghdr {
|
||||||
void *msg_name; /* ptr to socket address structure */
|
void *msg_name; /* ptr to socket address structure */
|
||||||
int msg_namelen; /* size of socket address structure */
|
int msg_namelen; /* size of socket address structure */
|
||||||
#if defined(CONFIG_PPPOLAC) || defined(CONFIG_PPPOPNS)
|
|
||||||
struct iovec *msg_iov; /* scatter/gather array */
|
|
||||||
__kernel_size_t msg_iovlen; /* # elements in msg_iov */
|
|
||||||
#endif
|
|
||||||
struct iov_iter msg_iter; /* data */
|
struct iov_iter msg_iter; /* data */
|
||||||
void *msg_control; /* ancillary data */
|
void *msg_control; /* ancillary data */
|
||||||
__kernel_size_t msg_controllen; /* ancillary data buffer length */
|
__kernel_size_t msg_controllen; /* ancillary data buffer length */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue