Mesh HWMP PERR bug fixes.

* When calling ieee80211_mesh_rt_flush_peer, the rt->rt_dest argument
  should not be passed because it can get freed before invalidating
  the other routes that depends on it to compare with next_hop.
  Use PERR_DADDR(i) instead;

Approved by:	adrian (mentor)
This commit is contained in:
monthadar 2013-02-07 21:30:58 +00:00
parent ecd76b4133
commit 6c23af63de

View File

@ -1570,7 +1570,7 @@ hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni,
"PERR, unknown reason code %u\n", PERR_DFLAGS(i)); "PERR, unknown reason code %u\n", PERR_DFLAGS(i));
goto done; /* XXX: stats?? */ goto done; /* XXX: stats?? */
} }
ieee80211_mesh_rt_flush_peer(vap, rt->rt_dest); ieee80211_mesh_rt_flush_peer(vap, PERR_DADDR(i));
KASSERT(j < 32, ("PERR, error ndest >= 32 (%u)", j)); KASSERT(j < 32, ("PERR, error ndest >= 32 (%u)", j));
} }
if (j == 0) { if (j == 0) {