linux_dsm_epyc7002/drivers/net
Jacob Keller bbc4e7d273 i40e: fix race condition with PTP_TX_IN_PROGRESS bits
Hardware related to the i40e driver has a limitation on Tx PTP packets.
This requires us to limit the driver to timestamping a single packet at
once. This is done using a state bitlock which enforces that only one
timestamp request is honored at a time.

Unfortunately this suffers from a race condition. The bit lock is not
cleared until after skb_tstamp_tx() is called notifying applications of
a new Tx timestamp. Even a well behaved application sending only one
packet at a time and waiting for a response can wake up and send a new
timestamped packet request before the bit lock is cleared. This results
in needlessly dropping some Tx timestamp requests.

We can fix this by unlocking the state bit as soon as we read the
Timestamp register, as this is the first point at which it is safe to
timestamp another packet.

To avoid issues with the skb pointer, we'll use a copy of the pointer
and set the global variable in the driver structure to NULL first. This
ensures that the next timestamp request does not modify our local copy
of the skb pointer.

Now, a well behaved application which has at most one outstanding
timestamp request will not accidentally race with the driver unlock bit.
Obviously an application attempting to timestamp faster than one request
at a time will have some timestamp requests skipped. Unfortunately there
is nothing we can do about that.

Reported-by: David Mirabito <davidm@metamako.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-05-31 03:03:33 -07:00
..
appletalk Annotate hardware config module parameters in drivers/net/appletalk/ 2017-04-20 12:02:32 +01:00
arcnet Annotate hardware config module parameters in drivers/net/arcnet/ 2017-04-20 12:02:32 +01:00
bonding bonding: Prevent duplicate userspace notification 2017-05-27 18:51:41 -04:00
caif virtio: wrap find_vqs 2017-05-02 23:41:42 +03:00
can can: m_can: add deep Suspend/Resume support 2017-05-18 10:32:48 +02:00
cris
dsa net: dsa: b53: remove unused dev argument 2017-05-30 18:13:41 -04:00
ethernet i40e: fix race condition with PTP_TX_IN_PROGRESS bits 2017-05-31 03:03:33 -07:00
fddi format-security: move static strings to const 2017-05-08 17:15:14 -07:00
fjes
hamradio Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
hippi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-09 15:42:31 -07:00
hyperv netvsc: make sure napi enabled before vmbus_open 2017-05-04 11:08:36 -04:00
ieee802154 net: ieee802154: fix potential null pointer dereference 2017-05-23 20:12:53 +02:00
ipvlan ipvlan: use pernet operations and restrict l3s hooks to master netns 2017-04-25 10:43:22 -04:00
irda Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-15 15:50:49 -07:00
phy net: phy: Add Cortina CS4340 driver 2017-05-30 12:42:27 -04:00
plip
ppp
slip
team Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-26 22:39:08 -04:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
vmxnet3 vmxnet3: ensure that adapter is in proper state during force_close 2017-05-12 12:23:52 -04:00
wan net/wan/fsl_ucc_hdlc: fix muram allocation error 2017-05-22 12:28:45 -04:00
wimax drivers: net: wimax: i2400m: i2400m-usb: Use time_after for time comparison 2017-05-09 09:40:33 -04:00
wireless Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
xen-netback
dummy.c
eql.c
geneve.c geneve: fix fill_info when using collect_metadata 2017-05-25 12:51:16 -04:00
gtp.c net: fix potential null pointer dereference 2017-05-25 12:54:02 -04:00
ifb.c
Kconfig VSOCK: Add vsockmon device 2017-04-24 12:35:56 -04:00
LICENSE.SRC
loopback.c
macsec.c macsec: double accounting of dropped rx/tx packets 2017-05-22 11:55:18 -04:00
macvlan.c macvlan: Fix performance issues with vlan tagged packets 2017-05-15 14:18:11 -04:00
macvtap.c
Makefile VSOCK: Add vsockmon device 2017-04-24 12:35:56 -04:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c tap: support receiving skb from msg_control 2017-05-18 10:07:41 -04:00
tun.c tun: support receiving skb through msg_control 2017-05-18 10:07:41 -04:00
veth.c
virtio_net.c virtio-net: enable TSO/checksum offloads for Q-in-Q vlans 2017-05-24 16:27:14 -04:00
vrf.c driver: vrf: Fix one possible use-after-free issue 2017-05-11 12:13:11 -04:00
vsockmon.c VSOCK: Add vsockmon device 2017-04-24 12:35:56 -04:00
vxlan.c vxlan: do not output confusing error message 2017-04-30 22:30:13 -04:00
xen-netfront.c xen-netfront: avoid crashing on resume after a failure in talk_to_netback() 2017-05-11 21:38:50 -04:00