Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/if_ether.c
Show First 20 Lines • Show All 527 Lines • ▼ Show 20 Lines | if ((la->la_flags & LLE_VALID) && | ||||
if (plle) { | if (plle) { | ||||
LLE_ADDREF(la); | LLE_ADDREF(la); | ||||
*plle = la; | *plle = la; | ||||
} | } | ||||
LLE_WUNLOCK(la); | LLE_WUNLOCK(la); | ||||
return (0); | return (0); | ||||
} | } | ||||
if (la->la_flags & (LLE_REJECT|LLE_DISCARD)) { | |||||
m_freem(m); | |||||
glebius: Is it possible first unlock then m_freem? | |||||
LLE_WUNLOCK(la); | |||||
return ((la->la_flags & LLE_REJECT) ? EHOSTUNREACH : EWOULDBLOCK); | |||||
} | |||||
renew = (la->la_asked == 0 || la->la_expire != time_uptime); | renew = (la->la_asked == 0 || la->la_expire != time_uptime); | ||||
/* | /* | ||||
* There is an arptab entry, but no ethernet address | * There is an arptab entry, but no ethernet address | ||||
* response yet. Add the mbuf to the list, dropping | * response yet. Add the mbuf to the list, dropping | ||||
* the oldest packet if we have exceeded the system | * the oldest packet if we have exceeded the system | ||||
* setting. | * setting. | ||||
*/ | */ | ||||
if (m != NULL) { | if (m != NULL) { | ||||
▲ Show 20 Lines • Show All 999 Lines • Show Last 20 Lines |
Is it possible first unlock then m_freem?