linux/net
Herbert Xu 89c22d8c3b net: Fix skb csum races when peeking
When we calculate the checksum on the recv path, we store the
result in the skb as an optimisation in case we need the checksum
again down the line.

This is in fact bogus for the MSG_PEEK case as this is done without
any locking.  So multiple threads can peek and then store the result
to the same skb, potentially resulting in bogus skb states.

This patch fixes this by only storing the result if the skb is not
shared.  This preserves the optimisations for the few cases where
it can be done safely due to locking or other reasons, e.g., SIOCINQ.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-15 15:59:58 -07:00
..
6lowpan
9p Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-07-04 19:36:06 -07:00
802
8021q
appletalk
atm
ax25 NET: AX.25: Stop heartbeat timer on disconnect. 2015-07-15 15:59:58 -07:00
batman-adv
bluetooth bluetooth: fix list handling 2015-07-04 19:11:33 -07:00
bridge bridge: mdb: allow the user to delete mdb entry if there's a querier 2015-07-10 18:18:00 -07:00
caif
can can: replace timestamp as unique skb attribute 2015-07-12 21:13:22 +02:00
ceph libceph: treat sockaddr_storage with uninitialized family as blank 2015-07-09 20:30:34 +03:00
core net: Fix skb csum races when peeking 2015-07-15 15:59:58 -07:00
dcb
dccp
decnet
dns_resolver
dsa net: dsa: Fix off-by-one in switch address parsing 2015-07-11 23:25:16 -07:00
ethernet
hsr
ieee802154
ipv4 net: inet_diag: always export IPV6_V6ONLY sockopt for listening sockets 2015-07-10 23:25:24 -07:00
ipv6 ipv6: Make MLD packets to only be processed locally 2015-07-03 09:52:38 -07:00
ipx
irda
iucv
key Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-06-24 16:49:49 -07:00
l2tp
lapb
llc
mac80211 Minor merge needed, due to function move. 2015-07-01 10:49:25 -07:00
mac802154 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-06-24 16:49:49 -07:00
mpls
netfilter netfilter: nfnetlink: keep going batch handling on missing modules 2015-07-02 17:59:33 +02:00
netlabel
netlink netlink: Delete an unnecessary check before the function call "module_put" 2015-07-03 09:27:43 -07:00
netrom netfilter: Remove spurios included of netfilter.h 2015-06-18 21:14:32 +02:00
nfc
openvswitch
packet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-24 02:58:51 -07:00
phonet
rds net-RDS: Delete an unnecessary check before the function call "module_put" 2015-07-03 09:27:42 -07:00
rfkill
rose Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-24 02:58:51 -07:00
rxrpc
sched net: sched: flower fix typo 2015-06-25 05:23:02 -07:00
sctp sctp: Fix race between OOTB responce and route removal 2015-06-29 09:28:42 -07:00
sunrpc NFS client updates for Linux 4.2 2015-07-02 11:32:23 -07:00
switchdev net: switchdev: don't abort unsupported operations 2015-07-11 21:29:55 -07:00
tipc net/tipc: initialize security state for new connection socket 2015-07-08 16:08:23 -07:00
unix
vmw_vsock
wimax
wireless
x25
xfrm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-06-24 16:49:49 -07:00
compat.c
Kconfig
Makefile
socket.c
sysctl_net.c