[REPORT] net: e1000e: possible data races

From: Jia-Ju Bai
Date: Wed Oct 03 2018 - 09:18:48 EST


CPU0:
e1000e_get_stats64
line 5944: spin_lock()
e1000e_update_stats
line 4949: hw->mac.tx_packet_delta = er32(TPT); [WRITE]

CPU1:
e1000_watchdog_task
e1000e_update_adaptive
line 1762: mac->tx_packet_delta [READ]
line 1763: mac->tx_packet_delta [READ]
line 1776: mac->tx_packet_delta [READ]

As for mac->tx_packet_delta, the WRITE operation in CPU0 is performed
with holding a spinlock, but the READ operations in CPU1 are performed
without holding this spinlock, so there may exist data races.

These possible races are detected by a runtime testing.
I do not find a good way to fix these races, so I only report them.


Best wishes,
Jia-Ju Bai