I'm seeing on messages like: Data modified on freelist: word 5 of object 0xe02ac000 size 0xffc previous type devbuf (0xdeadbeed != 0xdeadbeef
on my access point with athn(4). I tracked this down to a reference count issue in ieee80211_ioctl(); word 5 is exactly where ni_refcnt happens to be in struct ieee80211_node, and 0xdeadbeed is exactl what you get if you decrease it after you've freed. verified this by adding some debug code to ieee80211_release_node(). Calling ieee80211_release_node() at that spot in ieee80211_ioctl() doesn't make sense, since we don't hold a reference to the node. My guess is that ieee80211_node_leave() is the proper function to call here. This seems to fix the issue. ok? Index: ieee80211_ioctl.c =================================================================== RCS file: /cvs/src/sys/net80211/ieee80211_ioctl.c,v retrieving revision 1.33 diff -u -p -r1.33 ieee80211_ioctl.c --- ieee80211_ioctl.c 12 Sep 2009 19:37:27 -0000 1.33 +++ ieee80211_ioctl.c 4 Sep 2010 19:09:25 -0000 @@ -701,7 +701,7 @@ ieee80211_ioctl(struct ifnet *ifp, u_lon IEEE80211_FC0_SUBTYPE_DEAUTH, IEEE80211_REASON_AUTH_LEAVE); - ieee80211_release_node(ic, ni); + ieee80211_node_leave(ic, ni); } break; case SIOCG80211ALLNODES: