]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ipv6: check raw payload size correctly in ioctl
authorJamie Bainbridge <jbainbri@redhat.com>
Wed, 26 Apr 2017 00:43:27 +0000 (10:43 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 May 2017 15:37:42 +0000 (08:37 -0700)
commitf62c45868079be031b647faa5d42f689aa96d26b
tree1afc79940656133f77feecdb1a2adce22740663d
parent466dfcd1d81a083b1f4fea82bd5f4416afd5eaf6
ipv6: check raw payload size correctly in ioctl

[ Upstream commit 105f5528b9bbaa08b526d3405a5bcd2ff0c953c8 ]

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: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv6/raw.c