In ndis_rxeof_eth(), avoid acquiring the NDIS miniport block spinlock for
serialized miniports when updating the packet list. This fixes a deadlock that can occur with the Ralink RT2500 driver when using wpa_supplicant.
This commit is contained in:
parent
1a40739a00
commit
a807264e92
@ -1129,11 +1129,13 @@ ndis_rxeof_eth(adapter, ctx, addr, hdr, hdrlen, lookahead, lookaheadlen, pktlen)
|
||||
priv = (ndis_ethpriv *)&p->np_protocolreserved;
|
||||
priv->nep_ctx = ctx;
|
||||
|
||||
KeAcquireSpinLock(&block->nmb_lock, &irql);
|
||||
if (!NDIS_SERIALIZED(block))
|
||||
KeAcquireSpinLock(&block->nmb_lock, &irql);
|
||||
|
||||
InsertTailList((&block->nmb_packetlist), (&p->np_list));
|
||||
|
||||
KeReleaseSpinLock(&block->nmb_lock, irql);
|
||||
if (!NDIS_SERIALIZED(block))
|
||||
KeReleaseSpinLock(&block->nmb_lock, irql);
|
||||
|
||||
return;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user