[LOR] bpf.c:403 and if_fxp.c:2388

Robert Watson rwatson at FreeBSD.org
Wed Aug 10 05:54:54 GMT 2005

On Wed, 3 Aug 2005, Gordon Bergling wrote:
> I am gettings this LOR while using tcpdump on /dev/fxp0. I am found a 
> similar looking entry at the LOR database, but the Line Numbers are 
> different and the stacktrace is different.

Hmm.  That's odd.  Normally, this is the correct lock order, with the 
global bpf lock before interface locks, for precisely the case below (BPF 
calls into the interface code during detach).

This suggests that the real bug is that there's a situation where the fxp 
lock is being held inappropriately over a call into an attach routine in
if_fxp or the like.

What version of src/sys/dev/fxp/if_fxp.c are you running with on this 

Robert N M Watson

> So I think it should be posted. (?)
> lock order reversal
> 1st 0xc07380a0 bpf global lock (bpf global lock) @ /usr/src/sys/net/bpf.c:403
> 2nd 0xc1604018 fxp0 (network driver) @ /usr/src/sys/dev/fxp/if_fxp.c:2388
> KDB: stack backtrace:
> kdb_backtrace(0,ffffffff,c06fa8d8,c06f9730,c06c0b24) at kdb_backtrace+0x29
> witness_checkorder(c1604018,9,c06776a8,954) at witness_checkorder+0x564
> _mtx_lock_flags(c1604018,0,c06776a8,954) at _mtx_lock_flags+0x5b
> fxp_ioctl(c1646800,80206910,d1e729e0,1,c0684a3d) at fxp_ioctl+0x4a
> ifpromisc(c1646800,0) at ifpromisc+0xc4
> bpf_detachd(c2955600) at bpf_detachd+0xa8
> bpfclose(c294fa00,3,2000,c1bd9900,c06e98c0) at bpfclose+0x83
> devfs_close(d1e72aa4) at devfs_close+0x2f1
> VOP_CLOSE_APV(c06b9640,d1e72aa4) at VOP_CLOSE_APV+0x7e
> vn_close(c210cbb0,3,c2acab80,c1bd9900,c0682492) at vn_close+0x8b
> vn_closefile(c1786d38,c1bd9900,d1e72b5c,c04d8470,c1786d38) at 
> vn_closefile+0xca
> devfs_close_f(c1786d38,c1bd9900) at devfs_close_f+0xf
> fdrop_locked(c1786d38,c1bd9900,c1533394,0,c0682492) at fdrop_locked+0x88
> fdrop(c1786d38,c1bd9900,d1e72ba8,c0514bd0,c0682492) at fdrop+0x24
> closef(c1786d38,c1bd9900) at closef+0x35f
> fdfree(c1bd9900,c1bd8d94,0,c068902a,6ac) at fdfree+0x473
> exit1(c1bd9900,100,d1e72d30,c064eb4f,c1bd9900) at exit1+0x3f6
> exit1(c1bd9900,d1e72d04,1,9,296) at exit1
> syscall(3b,3b,3b,809f45a,bfbfe8dc) at syscall+0x22f
> Xint0x80_syscall() at Xint0x80_syscall+0x1f
> --- syscall (1, FreeBSD ELF32, sys_exit), eip = 0x28237383, esp = 0xbfbfe83c, 
> ebp = 0xbfbfe858 ---
> Information about the notebook can be found at
> http://generic.0xfce3.net/laptop/
> regards,
>   Gordon
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"

More information about the freebsd-current mailing list