avoid lock recursion by deferring the link check until after LLE lock is dropped
This commit is contained in:
parent
8c975889a8
commit
ee6326a30b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=186468
@ -603,6 +603,7 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
|
||||
int is_override;
|
||||
char *lladdr = NULL;
|
||||
int lladdrlen = 0;
|
||||
int checklink = 0;
|
||||
struct ifaddr *ifa;
|
||||
struct llentry *ln = NULL;
|
||||
union nd_opts ndopts;
|
||||
@ -739,7 +740,7 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
|
||||
* non-reachable to probably reachable, and might
|
||||
* affect the status of associated prefixes..
|
||||
*/
|
||||
pfxlist_onlink_check();
|
||||
checklink = 1;
|
||||
}
|
||||
} else {
|
||||
int llchange;
|
||||
@ -886,6 +887,9 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
|
||||
if (chain)
|
||||
nd6_output_flush(ifp, ifp, chain, &sin6, NULL);
|
||||
}
|
||||
if (checklink)
|
||||
pfxlist_onlink_check();
|
||||
|
||||
m_freem(m);
|
||||
return;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user