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:
Bill Paul 2005-12-16 17:21:28 +00:00
parent 1a40739a00
commit a807264e92

View File

@ -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;
}