aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2015-08-25 09:49:53 +0100
committerDavid S. Miller <davem@davemloft.net>2015-08-25 16:33:16 -0700
commitaac27c7a0d76683f7f4bdf41cec174db2819f635 (patch)
tree59e47d089c52d3ab854823bd00a96e90510cb797 /drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
parentnet: phy: add locking to phy_read_mmd_indirect()/phy_write_mmd_indirect() (diff)
downloadlinux-dev-aac27c7a0d76683f7f4bdf41cec174db2819f635.tar.xz
linux-dev-aac27c7a0d76683f7f4bdf41cec174db2819f635.zip
net: fec: use reinit_completion() in mdio accessor functions
Rather than re-initialising the entire completion on every mdio access, use reinit_completion() which only resets the completion count. This avoids possible reinitialisation of the contained spinlock and waitqueue while they may be in use (eg, mid-completion.) Such an event could occur if there's a long delay in interrupt handling causing the mdio accessor to time out, then a second access comes in while the interrupt handler on a different CPU has called complete(). Another scenario where this has been observed is while locking has been missing at the phy layer, allowing concurrent attempts to access the MDIO bus. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions