ipv6: check raw payload size correctly in ioctl
authorJamie Bainbridge <jbainbri@redhat.com>
Wed, 26 Apr 2017 00:43:27 +0000 (10:43 +1000)
committerWilly Tarreau <w@1wt.eu>
Tue, 20 Jun 2017 12:04:54 +0000 (14:04 +0200)
commit36805c5166899a5a013821d3e15b84409ae1ceb6
treef0ad8bf0e59de345c7a9941c1d967ab500d30670
parentd46354fc25ca29a05ed43194b56d2b1f6816f934
ipv6: check raw payload size correctly in ioctl

commit 105f5528b9bbaa08b526d3405a5bcd2ff0c953c8 upstream.

In situations where an skb is paged, the transport header pointer and
tail pointer can be the same because the skb contents are in frags.

This results in ioctl(SIOCINQ/FIONREAD) incorrectly returning a
length of 0 when the length to receive is actually greater than zero.

skb->len is already correctly set in ip6_input_finish() with
pskb_pull(), so use skb->len as it always returns the correct result
for both linear and paged data.

Signed-off-by: Jamie Bainbridge <jbainbri@redhat.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
net/ipv6/raw.c