Date: Tue, 27 Dec 2016 16:42:14 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 215613] [panic] if if_ixl due to NULL pointer dereference Message-ID: <bug-215613-8@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D215613 Bug ID: 215613 Summary: [panic] if if_ixl due to NULL pointer dereference Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: ae@FreeBSD.org Sometimes the system panics just after reboot when it starts network activi= ty. # grep ixl /var/run/dmesg.boot ixl0: <Intel(R) Ethernet Connection XL710/X722 Driver, Version - 1.6.6-k> m= em 0xdc000000-0xdc7fffff,0xdd000000-0xdd007fff irq 42 at device 0.0 numa-domai= n 0 on pci7 ixl0: Using MSIX interrupts with 9 vectors ixl0: fw 4.22.26225 api 1.2 nvm 4.24 etid 800013fd oem 0.0.0 ixl0: The driver for the device detected an older version of the NVM image = than expected. ixl0: PF-ID[0]: VFs 128, MSIX 129, VF MSIX 5, QPs 1536, I2C ixl0: Allocating 8 queues for PF LAN VSI; 8 queues active ixl0: Ethernet address: 68:05:ca:30:45:30 ixl0: PCI Express Bus: Speed 8.0GT/s Width x8 ixl0: SR-IOV ready ixl0: netmap queues/slots: TX 8/1024, RX 8/1024 ixl0: link state changed to UP ---- Fatal trap 12: page fault while in kernel mode cpuid =3D 21; apic id =3D 25 fault virtual address =3D 0x64 fault code =3D supervisor read data, page not present instruction pointer =3D 0x20:0xffffffff80b44d79 stack pointer =3D 0x28:0xfffffe1048a133b0 frame pointer =3D 0x28:0xfffffe1048a133d0 code segment =3D base 0x0, limit 0xfffff, type 0x1b =3D DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags =3D interrupt enabled, resume, IOPL =3D 0 current process =3D 1159 (bird) (kgdb) bt #0 doadump (textdump=3D1218522560) at pcpu.h:222 #1 0xffffffff8038c596 in db_fncall (dummy1=3D<value optimized out>, dummy2=3D<value optimized out>, dummy3=3D<value optimized out>, dummy4=3D<v= alue optimized out>) at /usr/src/sys/ddb/db_command.c:581 #2 0xffffffff8038c0f9 in db_command (cmd_table=3D<value optimized out>) at /usr/src/sys/ddb/db_command.c:453 #3 0xffffffff8038be54 in db_command_loop () at /usr/src/sys/ddb/db_command.c:506 #4 0xffffffff8038efbf in db_trap (type=3D<value optimized out>, code=3D<va= lue optimized out>) at /usr/src/sys/ddb/db_main.c:248 #5 0xffffffff80b32f33 in kdb_trap (type=3D<value optimized out>, code=3D<v= alue optimized out>, tf=3D<value optimized out>) at /usr/src/sys/kern/subr_kdb.c= :654 #6 0xffffffff80fa25b1 in trap_fatal (frame=3D0xfffffe1048a132f0, eva=3D100= ) at /usr/src/sys/amd64/amd64/trap.c:796 #7 0xffffffff80fa27e3 in trap_pfault (frame=3D0xfffffe1048a132f0, usermode= =3D0) at /usr/src/sys/amd64/amd64/trap.c:658 #8 0xffffffff80fa1de3 in trap (frame=3D0xfffffe1048a132f0) at /usr/src/sys/amd64/amd64/trap.c:421 #9 0xffffffff80f84191 in calltrap () at /usr/src/sys/amd64/amd64/exception.S:236 #10 0xffffffff80b44d79 in taskqueue_enqueue (queue=3D0x0, task=3D0xfffffe0001a0e0b0) at pcpu.h:222 #11 0xffffffff8103f1ef in ixl_mq_start (ifp=3D<value optimized out>, m=3D<v= alue optimized out>) at /usr/src/sys/dev/ixl/ixl_txrx.c:135 #12 0xffffffff80c06894 in vlan_transmit (ifp=3D<value optimized out>, m=3D<= value optimized out>) at /usr/src/sys/net/if_vlan.c:1116 #13 0xffffffff80bfc5fe in ether_output (ifp=3D<value optimized out>, m=3D<v= alue optimized out>, dst=3D0xfffffe1048a13610, ro=3D<value optimized out>) at /usr/src/sys/net/if_ethersubr.c:424 #14 0xffffffff80c80a3f in ip_output (m=3D0xfffffe0001a0e0b0, opt=3D<value o= ptimized out>, ro=3D<value optimized out>, flags=3D<value optimized out>, imo=3D0x0,= =20 inp=3D<value optimized out>) at /usr/src/sys/netinet/ip_output.c:660 #15 0xffffffff80c84423 in rip_output (m=3D0xfffff803405eab00, so=3D<value o= ptimized out>) at /usr/src/sys/netinet/raw_ip.c:538 #16 0xffffffff80b86757 in sosend_generic (so=3D<value optimized out>, addr= =3D<value optimized out>, uio=3D<value optimized out>, top=3D<value optimized out>,=20 control=3D<value optimized out>, flags=3D<value optimized out>, td=3D<v= alue optimized out>) at /usr/src/sys/kern/uipc_socket.c:1359 #17 0xffffffff80b8e4c3 in kern_sendit (td=3D<value optimized out>, s=3D<val= ue optimized out>, mp=3D<value optimized out>, flags=3D0, control=3D<value opt= imized out>,=20 segflg=3DUIO_USERSPACE) at /usr/src/sys/kern/uipc_syscalls.c:811 #18 0xffffffff80b8e8cf in sendit (td=3D0xfffff802e58a8000, s=3D<value optim= ized out>, mp=3D0xfffffe1048a138d8, flags=3D<value optimized out>) at /usr/src/sys/kern/uipc_syscalls.c:736 #19 0xffffffff80b8e981 in sys_sendmsg (td=3D0xfffff802e58a8000, uap=3D0xfffffe1048a139d0) at /usr/src/sys/kern/uipc_syscalls.c:912 #20 0xffffffff80fa2f9e in amd64_syscall (td=3D<value optimized out>, traced= =3D0) at subr_syscall.c:135 #21 0xffffffff80f8447b in Xfast_syscall () at /usr/src/sys/amd64/amd64/exception.S:396 #22 0x0000000800c2386a in ?? () Previous frame inner to this frame (corrupt stack?) (kgdb) f 11 #11 0xffffffff8103f1ef in ixl_mq_start (ifp=3D<value optimized out>, m=3D<v= alue optimized out>) at /usr/src/sys/dev/ixl/ixl_txrx.c:135 warning: Source file is more recent than executable. 135 taskqueue_enqueue(que->tq, &que->tx_task); (kgdb) i lo vsi =3D <value optimized out> txr =3D (struct tx_ring *) 0xfffffe0001a0de68 (kgdb) p *txr $1 =3D {que =3D 0xfffffe0001a0de38, mtx =3D {lock_object =3D {lo_name =3D 0xfffffe0001a0df10 "ixl0:tx(5)", lo_flags =3D 16973824, lo_data =3D 0, lo_w= itness =3D 0x0}, mtx_lock =3D 4},=20 tail =3D 1081364, base =3D 0xfffffe1045c49000, dma =3D {va =3D 0xfffffe10= 45c49000, pa =3D 214208512, tag =3D 0xfffff8000ca4d900, map =3D 0x0, seg =3D {ds_addr = =3D 0, ds_len =3D 0},=20 size =3D 16512, nseg =3D 1, flags =3D 0}, next_avail =3D 13, next_to_cl= ean =3D 0, atr_rate =3D 0, atr_count =3D 0, itr =3D 122, latency =3D 1, buffers =3D 0xfffffe0001abf000,=20 avail =3D 1011, cmd =3D 0, tx_tag =3D 0xfffff8000ca4d800, tso_tag =3D 0xfffff8000ca4d700, mtx_name =3D 0xfffffe0001a0df10 "ixl0:tx(5)", br =3D 0xfffffe0001ac7000, packets =3D 0,=20 bytes =3D 0, tx_bytes =3D 0, no_desc =3D 0, total_packets =3D 8} (kgdb) p *txr->que $3 =3D {vsi =3D 0xfffffe000168e730, me =3D 5, msix =3D 0, eims =3D 0, res = =3D 0x0, tag =3D 0x0, num_desc =3D 1024, busy =3D 1, txr =3D {que =3D 0xfffffe0001a0de38, mt= x =3D {lock_object =3D { lo_name =3D 0xfffffe0001a0df10 "ixl0:tx(5)", lo_flags =3D 16973824,= lo_data =3D 0, lo_witness =3D 0x0}, mtx_lock =3D 4}, tail =3D 1081364, base =3D 0xfffffe1045c49000, dma =3D { va =3D 0xfffffe1045c49000, pa =3D 214208512, tag =3D 0xfffff8000ca4d9= 00, map =3D 0x0, seg =3D {ds_addr =3D 0, ds_len =3D 0}, size =3D 16512, nseg =3D 1, fla= gs =3D 0}, next_avail =3D 13,=20 next_to_clean =3D 0, atr_rate =3D 0, atr_count =3D 0, itr =3D 122, late= ncy =3D 1, buffers =3D 0xfffffe0001abf000, avail =3D 1011, cmd =3D 0, tx_tag =3D 0xfffff8000ca4d800,=20 tso_tag =3D 0xfffff8000ca4d700, mtx_name =3D 0xfffffe0001a0df10 "ixl0:t= x(5)", br =3D 0xfffffe0001ac7000, packets =3D 0, bytes =3D 0, tx_bytes =3D 0, no_d= esc =3D 0,=20 total_packets =3D 8}, rxr =3D {que =3D 0xfffffe0001a0de38, mtx =3D {loc= k_object =3D {lo_name =3D 0xfffffe0001a0e02c "ixl0:rx(5)", lo_flags =3D 16973824, lo_dat= a =3D 0,=20 lo_witness =3D 0x0}, mtx_lock =3D 4}, base =3D 0xfffffe1045c4e000, = dma =3D {va =3D 0xfffffe1045c4e000, pa =3D 214228992, tag =3D 0xfffff8000ca4d600, map = =3D 0x0, seg =3D { ds_addr =3D 0, ds_len =3D 0}, size =3D 32768, nseg =3D 1, flags =3D= 0}, lro =3D {ifp =3D 0xfffff8000c7ad800, lro_mbuf_data =3D 0xfffff801d814f000, lro_queu= ed =3D 0,=20 lro_flushed =3D 0, lro_bad_csum =3D 0, lro_cnt =3D 8, lro_mbuf_count = =3D 0, lro_mbuf_max =3D 0, lro_ackcnt_lim =3D 65535, lro_length_lim =3D 65535, lro= _hashsz =3D 1,=20 lro_hash =3D 0xfffff8020981bf00, lro_active =3D {lh_first =3D 0x0}, l= ro_free =3D {lh_first =3D 0xfffff801d814f3f0}}, lro_enabled =3D false, hdr_split =3D fa= lse, discard =3D false,=20 next_refresh =3D 0, next_check =3D 0, itr =3D 62, latency =3D 1, mtx_na= me =3D 0xfffffe0001a0e02c "ixl0:rx(5)", buffers =3D 0xfffffe0001ad7000, mbuf_sz = =3D 4096, tail =3D 1212436,=20 htag =3D 0xfffff8000ca4d500, ptag =3D 0xfffff8000ca4d400, packets =3D 0= , bytes =3D 0, split =3D 0, rx_packets =3D 0, rx_bytes =3D 0, desc_errs =3D 0, not_done= =3D 0}, task =3D { ta_link =3D {stqe_next =3D 0x0}, ta_pending =3D 0, ta_priority =3D 0, t= a_func =3D 0, ta_context =3D 0x0}, tx_task =3D {ta_link =3D {stqe_next =3D 0x0}, ta_pendi= ng =3D 0,=20 ta_priority =3D 0, ta_func =3D 0, ta_context =3D 0x0}, tq =3D 0x0, irqs= =3D 0, tso =3D 0, mbuf_defrag_failed =3D 0, mbuf_hdr_failed =3D 0, mbuf_pkt_failed =3D 0, tx_dmamap_failed =3D 0,=20 dropped_pkts =3D 0} (kgdb) p txr->que->tq $4 =3D (struct taskqueue *) 0x0 (kgdb) p &txr->que->tq->tq_spin $5 =3D (int *) 0x64 It looks like ixl_mq_start() somehow was called when queues are not yet initialized (or already freed). --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-215613-8>