mirror of
https://github.com/ipxe/ipxe
synced 2026-02-05 08:53:52 +03:00
[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>
This commit is contained in:
@@ -451,6 +451,12 @@ struct net_device {
|
||||
*/
|
||||
#define NETDEV_IRQ_UNSUPPORTED 0x0008
|
||||
|
||||
/** Network device transmission is in progress */
|
||||
#define NETDEV_TX_IN_PROGRESS 0x0010
|
||||
|
||||
/** Network device poll is in progress */
|
||||
#define NETDEV_POLL_IN_PROGRESS 0x0020
|
||||
|
||||
/** Link-layer protocol table */
|
||||
#define LL_PROTOCOLS __table ( struct ll_protocol, "ll_protocols" )
|
||||
|
||||
|
||||
Reference in New Issue
Block a user