Skip to content

Commit

Permalink
Merge branch 'udp-hdrs-fixes'
Browse files Browse the repository at this point in the history
Willem de Bruijn says:

====================
fix two more udp pull header issues

Follow up patches to the fixes to RxRPC and SunRPC. A scan of the
code showed two other interfaces that expect UDP packets to have
a udphdr when queued: read packet length with ioctl SIOCINQ and
receive payload checksum with socket option IP_CHECKSUM.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Apr 14, 2016
2 parents 99717bd + 31c2e49 commit fbf405e
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 4 deletions.
3 changes: 2 additions & 1 deletion net/ipv4/ip_sockglue.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ static void ip_cmsg_recv_checksum(struct msghdr *msg, struct sk_buff *skb,
return;

if (offset != 0)
csum = csum_sub(csum, csum_partial(skb->data, offset, 0));
csum = csum_sub(csum, csum_partial(skb_transport_header(skb),
offset, 0));

put_cmsg(msg, SOL_IP, IP_CHECKSUM, sizeof(__wsum), &csum);
}
Expand Down
4 changes: 1 addition & 3 deletions net/ipv4/udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1282,8 +1282,6 @@ int udp_ioctl(struct sock *sk, int cmd, unsigned long arg)
* of this packet since that is all
* that will be read.
*/
amount -= sizeof(struct udphdr);

return put_user(amount, (int __user *)arg);
}

Expand Down Expand Up @@ -1377,7 +1375,7 @@ int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
*addr_len = sizeof(*sin);
}
if (inet->cmsg_flags)
ip_cmsg_recv_offset(msg, skb, sizeof(struct udphdr));
ip_cmsg_recv_offset(msg, skb, sizeof(struct udphdr) + off);

err = copied;
if (flags & MSG_TRUNC)
Expand Down

0 comments on commit fbf405e

Please sign in to comment.