]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[netdevice] Ensure driver transmit() and poll() will not be re-entered
authorMichael Brown <mcb30@ipxe.org>
Sat, 10 Apr 2021 15:53:52 +0000 (16:53 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sat, 10 Apr 2021 15:53:52 +0000 (16:53 +0100)
commit78749542fc6d31ad41ecc350dea364e21362f985
tree8ba0a9148d7a3fa3addc9a63e9c69584116b8c4f
parent0be8491b717fec6697dbf6ef8ac07604e062ecb1
[netdevice] Ensure driver transmit() and poll() will not be re-entered

When CONSOLE_SYSLOG is used, a DBG() from within a network device
driver may cause its transmit() or poll() methods to be unexpectedly
re-entered.  Since these methods are not intended to be re-entrant,
this can lead to undefined behaviour.

Add an explicit re-entrancy guard to both methods.  Note that this
must operate at a per-netdevice level, since there are legitimate
circumstances under which the netdev_tx() or netdev_poll() functions
may be re-entered (e.g. when using VLAN devices).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/include/ipxe/netdevice.h
src/net/netdevice.c