LOR - COM LOCK
Edgar Martinez
emartinez at kbcnetworks.com
Fri Oct 7 21:02:19 UTC 2011
Jan 1 00:00:36 wlanmon: (RTM_IEEE80211_ASSOC) [wlan3] [00:80:81:8d:9d:83]
ath1: stuck beacon; resetting (bmiss count 4)
Jan 1 00:01:32 wlanmon: (RTM_IEEE80211_JOIN) [wlan1] [00:c0:c1:cb:6c:c2]
Expensive timeout(9) function: 0xc05aa150(0xc58c3b80) 0.013488188 s
Jan 1 00:16:45 wlanmon: (RTM_IEEE80211_ASSOC) [wlan2] [00:c0:c1:cb:6c:c3]
lock order reversal:
1st 0xc59126c0 ath1_node_lock (ath1_node_lock) @ /usr/src/sys/net80211/ieee80211_ioctl.c:1326
2nd 0xc5911014 ath1_com_lock (ath1_com_lock) @ /usr/src/sys/net80211/ieee80211_node.c:2510
KDB: stack backtrace:
X_db_sym_numargs(c079c78c) at 0xc047bb55 = X_db_sym_numargs+0x135
kdb_backtrace(c0966138,c5810320,cead294c,c05b3942,0,...) at 0xc059f6b8 = kdb_backtrace+0x28
witness_display_spinlock(0,0,c0966138,c096613c,c0800798,...) at 0xc05b2a8e = witness_display_spinlock+0x6e
witness_checkorder(c5911014,9,c07b7246,9ce,0,...) at 0xc05b3942 = witness_checkorder+0x6f2
_mtx_lock_flags(c5911014,0,c07b7246,9ce,c5911014,...) at 0xc0567c82 = _mtx_lock_flags+0x82
ieee80211_node_leave(c61e4000) at 0xc065712b = ieee80211_node_leave+0x8b
ieee80211_parse_beacon(cead29d0,c61e4000,cead29fa,c59126ac,c5a6b000,...) at 0xc064db3b = ieee80211_parse_beacon+0x22cb
ieee80211_parse_beacon(2) at 0xc064e6de = ieee80211_parse_beacon+0x2e6e
ieee80211_parse_beacon(c5a40a14,0,c5a6b000,c070cc66,cead2a54,...) at 0xc064efed = ieee80211_parse_beacon+0x377d
ieee80211_parse_beacon(c5911000,c07acd14,c078e45a,c60b01a0,c5abe320,...) at 0xc064f7a3 = ieee80211_parse_beacon+0x3f33
ieee80211_ioctl(c594dc00,801c69ea,c5abe320) at 0xc0651263 = ieee80211_ioctl+0x273
in_control(c60b01a0,801c69ea,c5abe320,c594dc00,c5a0d2e0,...) at 0xc0673755 = in_control+0x1b5
ifioctl(c60b01a0,801c69ea,c5abe320,c5a0d2e0) at 0xc0616824 = ifioctl+0x14a4
soo_ioctl(c5a326c8,801c69ea,c5abe320,c5846800,c5a0d2e0) at 0xc05baa73 = soo_ioctl+0x343
kern_ioctl(c5a0d2e0,8,801c69ea,c5abe320) at 0xc05b5bce = kern_ioctl+0x1ae
sys_ioctl(c5a0d2e0,cead2cec,282,0,0,...) at 0xc05b5d15 = sys_ioctl+0x105
syscall(cead2d28) at 0xc073fffb = syscall+0x21b
Xint0x80_syscall() at 0xc072e311 = Xint0x80_syscall+0x21
--- syscall (54, FreeBSD ELF32, sys_ioctl), eip = 0x28226c57, esp = 0xbfbfeb6c, ebp = 0xbfbfebb8 --- Jan 1 00:20:17 wlanmon: (RTM_IEEE80211_LEAVE) [wlan1] [00:c0:c1:cb:6c:c2] stray irq7
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4) stray irq7
ath1: stuck beacon; resetting (bmiss count 148)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 242) stray irq7
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
0xc065712b is in ieee80211_node_leave (/usr/src/sys/net80211/ieee80211_node.c:2511).
2506 */
2507 if (vap->iv_auth->ia_node_leave != NULL)
2508 vap->iv_auth->ia_node_leave(ni);
2509
2510 IEEE80211_LOCK(ic);
2511 IEEE80211_AID_CLR(vap, ni->ni_associd);
2512 ni->ni_associd = 0;
2513 vap->iv_sta_assoc--;
2514 ic->ic_sta_assoc--;
2515
0xc064db3b is in domlme (/usr/src/sys/net80211/ieee80211_ioctl.c:1312).
1307 mop->reason);
1308 } else {
1309 IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DISASSOC,
1310 mop->reason);
1311 }
1312 ieee80211_node_leave(ni);
1313 }
1314
1315 static int
1316 setmlme_dropsta(struct ieee80211vap *vap,
0xc064e6de is in setmlme_common (/usr/src/sys/net80211/ieee80211_ioctl.c:1330).
1325 if (!IEEE80211_ADDR_EQ(mac, ic->ic_ifp->if_broadcastaddr)) {
1326 IEEE80211_NODE_LOCK(nt);
1327 ni = ieee80211_find_node_locked(nt, mac);
1328 if (ni != NULL) {
1329 domlme(mlmeop, ni);
1330 ieee80211_free_node(ni);
1331 } else
1332 error = ENOENT;
1333 IEEE80211_NODE_UNLOCK(nt);
1334 } else {
0xc064efed is in ieee80211_ioctl_setmlme (/usr/src/sys/net80211/ieee80211_ioctl.c:1550).
1545 vap->iv_des_ssid[0].len, vap->iv_des_ssid[0].ssid);
1546 else if (mlme.im_op == IEEE80211_MLME_ASSOC)
1547 return setmlme_assoc_adhoc(vap, mlme.im_macaddr,
1548 mlme.im_ssid_len, mlme.im_ssid);
1549 else
1550 return setmlme_common(vap, mlme.im_op,
1551 mlme.im_macaddr, mlme.im_reason);
1552 }
1553
1554 static __noinline int
0xc064f7a3 is in ieee80211_ioctl_set80211 (/usr/src/sys/net80211/ieee80211_ioctl.c:2769).
2764 break;
2765 case IEEE80211_IOC_DELKEY:
2766 error = ieee80211_ioctl_delkey(vap, ireq);
2767 break;
2768 case IEEE80211_IOC_MLME:
2769 error = ieee80211_ioctl_setmlme(vap, ireq);
2770 break;
2771 case IEEE80211_IOC_COUNTERMEASURES:
2772 if (ireq->i_val) {
2773 if ((vap->iv_flags & IEEE80211_F_WPA) == 0)
0xc0651263 is in ieee80211_ioctl (/usr/src/sys/net80211/ieee80211_ioctl.c:3322).
3317 (struct ieee80211req *) data);
3318 break;
3319 case SIOCS80211:
3320 error = priv_check(curthread, PRIV_NET80211_MANAGE);
3321 if (error == 0)
3322 error = ieee80211_ioctl_set80211(vap, cmd,
3323 (struct ieee80211req *) data);
3324 break;
3325 case SIOCG80211STATS:
3326 ifr = (struct ifreq *)data;
0xc0673755 is in in_control (/usr/src/sys/netinet/in.c:293).
288 return in_lifaddr_ioctl(so, cmd, data, ifp, td);
289
290 default:
291 if (ifp == NULL || ifp->if_ioctl == NULL)
292 return (EOPNOTSUPP);
293 return ((*ifp->if_ioctl)(ifp, cmd, data));
294 }
295
296 if (ifp == NULL)
297 return (EADDRNOTAVAIL);
0xc0616824 is in ifioctl (/usr/src/sys/net/if.c:2550).
2545 if_rele(ifp);
2546 CURVNET_RESTORE();
2547 return (EOPNOTSUPP);
2548 }
2549 #ifndef COMPAT_43
2550 error = ((*so->so_proto->pr_usrreqs->pru_control)(so, cmd,
2551 data,
2552 ifp, td));
2553 if (error == EOPNOTSUPP && ifp != NULL && ifp->if_ioctl != NULL)
2554 error = (*ifp->if_ioctl)(ifp, cmd, data);
0xc05baa73 is in soo_ioctl (/usr/src/sys/kern/sys_socket.c:211).
206 * Interface/routing/protocol specific ioctls: interface and
207 * routing ioctls should have a different entry since a
208 * socket is unnecessary.
209 */
210 if (IOCGROUP(cmd) == 'i')
211 error = ifioctl(so, cmd, data, td);
212 else if (IOCGROUP(cmd) == 'r') {
213 CURVNET_SET(so->so_vnet);
214 error = rtioctl_fib(cmd, data, so->so_fibnum);
215 CURVNET_RESTORE();
0xc05b5bce is in kern_ioctl (file.h:278).
273 static __inline int
274 fo_ioctl(struct file *fp, u_long com, void *data, struct ucred *active_cred,
275 struct thread *td)
276 {
277
278 return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td));
279 }
280
281 static __inline int
282 fo_poll(struct file *fp, int events, struct ucred *active_cred,
0xc05b5d15 is in sys_ioctl (/usr/src/sys/kern/sys_generic.c:681).
676 * gets back something deterministic.
677 */
678 bzero(data, size);
679 }
680
681 error = kern_ioctl(td, uap->fd, com, data);
682
683 if (error == 0 && (com & IOC_OUT))
684 error = copyout(data, uap->data, (u_int)size);
685
More information about the freebsd-wireless
mailing list