1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00

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
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=150710

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 {