In em_process_receive_interrupts() store and clear adapter->fmt. This

make function reenterable. In the runtime the race is masked by serializing
of em_process_receive_interrupts() either by interrupt thread, or by
polling. The race can be triggered when polling is switched on or off.
This commit is contained in:
Gleb Smirnoff 2005-09-29 13:23:34 +00:00
parent e6f7c17ebd
commit 482b02b3f3

View File

@ -2911,12 +2911,14 @@ em_process_receive_interrupts(struct adapter * adapter, int count)
adapter->fmp = NULL);
if (adapter->fmp != NULL) {
struct mbuf *m = adapter->fmp;
adapter->fmp = NULL;
EM_UNLOCK(adapter);
(*ifp->if_input)(ifp, adapter->fmp);
(*ifp->if_input)(ifp, m);
EM_LOCK(adapter);
}
#endif
adapter->fmp = NULL;
adapter->lmp = NULL;
}
} else {