Messages in this thread Patches in this message | | | From | NeilBrown <> | Date | Fri, 2 Mar 2007 15:28:30 +1100 | Subject | [PATCH 002 of 3] knfsd: Avoid checksum checks when collecting metadata for a UDP packet. |
| |
When recv_msg is called with a size of 0 and MSG_PEEK (and sunrpc/svcsock.c does), it is clear that we only interested in metadata (from/to addresses) and not the data, so don't do any checksum checking at this point. Leave that until the data is requested.
Signed-off-by: Neil Brown <neilb@suse.de>
### Diffstat output ./net/ipv4/udp.c | 3 +++ ./net/ipv6/udp.c | 4 ++++ 2 files changed, 7 insertions(+)
diff .prev/net/ipv4/udp.c ./net/ipv4/udp.c --- .prev/net/ipv4/udp.c 2007-03-02 14:20:13.000000000 +1100 +++ ./net/ipv4/udp.c 2007-03-02 15:13:50.000000000 +1100 @@ -846,6 +846,9 @@ try_again: goto csum_copy_err; copy_only = 1; } + if (len == 0 && (flags & MSG_PEEK)) + /* avoid checksum concerns when just getting metadata */ + copy_only = 1; if (copy_only) err = skb_copy_datagram_iovec(skb, sizeof(struct udphdr), diff .prev/net/ipv6/udp.c ./net/ipv6/udp.c --- .prev/net/ipv6/udp.c 2007-03-02 14:20:13.000000000 +1100 +++ ./net/ipv6/udp.c 2007-03-02 15:13:50.000000000 +1100 @@ -151,6 +151,10 @@ try_again: copy_only = 1; } + if (len == 0 && (flags & MSG_PEEK)) + /* avoid checksum concerns when just getting metadata */ + copy_only = 1; + if (copy_only) err = skb_copy_datagram_iovec(skb, sizeof(struct udphdr), msg->msg_iov, copied ); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |