Date: Mon, 14 Oct 2019 12:24:03 +0200 From: Hans Petter Selasky <hps@selasky.org> To: Gleb Smirnoff <glebius@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r353292 - in head/sys: contrib/ipfilter/netinet dev/firewire dev/iicbus dev/usb/net kern net netgraph netinet netinet6 netipsec netpfil/ipfw netpfil/pf ofed/drivers/infiniband/ulp/ipoib Message-ID: <bd7ed43e-ae54-9996-b7b1-88a50956b87f@selasky.org> In-Reply-To: <4e5b6b75-b230-8aa0-61db-077bfbf7cf1f@selasky.org> References: <201910072240.x97Me60x065650@repo.freebsd.org> <4e5b6b75-b230-8aa0-61db-077bfbf7cf1f@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2019-10-14 12:03, Hans Petter Selasky wrote: > On 2019-10-08 00:40, Gleb Smirnoff wrote: >> Author: glebius >> Date: Mon Oct 7 22:40:05 2019 >> New Revision: 353292 >> URL: https://svnweb.freebsd.org/changeset/base/353292 >> >> Log: >> Widen NET_EPOCH coverage. >> When epoch(9) was introduced to network stack, it was basically >> dropped in place of existing locking, which was mutexes and >> rwlocks. For the sake of performance mutex covered areas were >> as small as possible, so became epoch covered areas. > > Hi Gleb, > > There are several callers of arpresolve() outside sys/net, which now > require EPOCH(), which appears missing in your patch: > > Same for nd6_resolve() I believe. > > --HPS > >> (kgdb) #0 __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:55 >> #1 doadump (textdump=0) at /usr/src/sys/kern/kern_shutdown.c:392 >> #2 0xffffffff804948fa in db_dump (dummy=<optimized out>, >> dummy2=<unavailable>, dummy3=<unavailable>, dummy4=<unavailable>) >> at /usr/src/sys/ddb/db_command.c:575 >> #3 0xffffffff804946bc in db_command (last_cmdp=<optimized out>, >> cmd_table=<optimized out>, dopager=1) at >> /usr/src/sys/ddb/db_command.c:482 >> #4 0xffffffff8049442d in db_command_loop () >> at /usr/src/sys/ddb/db_command.c:535 >> #5 0xffffffff80497658 in db_trap (type=<optimized out>, >> code=<optimized out>) >> at /usr/src/sys/ddb/db_main.c:252 >> #6 0xffffffff80c09e27 in kdb_trap (type=3, code=0, tf=<optimized out>) >> at /usr/src/sys/kern/subr_kdb.c:692 >> #7 0xffffffff8102de77 in trap (frame=0xfffffe00600dfbe0) >> at /usr/src/sys/amd64/amd64/trap.c:585 >> #8 <signal handler called> >> #9 kdb_enter (why=0xffffffff811d7eaa "panic", msg=<optimized out>) >> at /usr/src/sys/kern/subr_kdb.c:479 >> #10 0xffffffff80bbe96a in vpanic (fmt=<optimized out>, ap=<optimized >> out>) >> at /usr/src/sys/kern/kern_shutdown.c:897 >> #11 0xffffffff80bbe703 in panic ( >> fmt=0xffffffff81c85638 <cnputs_mtx> "G\320\031\201\377\377\377\377") >> at /usr/src/sys/kern/kern_shutdown.c:835 >> #12 0xffffffff80d4484f in arpresolve (ifp=0xfffff8000496b000, is_gw=0, >> m=0x0, dst=0xfffffe00600dfe68, desten=0xfffffe00600dfe50 "", >> pflags=0x0, plle=0x0) >> at /usr/src/sys/netinet/if_ether.c:628 >> #13 0xffffffff82408243 in addr4_resolve (src_in=0xfffff80007ef5210, >> dst_in=0xfffff80007ef5290, addr=<optimized out>, edst=<optimized >> out>, ifpp=<optimized out>) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_addr.c:401 >> #14 addr_resolve (src_in=0xfffff80007ef5210, >> dst_in=0xfffff80007ef5290, addr=0xfffff80108f20520) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_addr.c:688 >> #15 0xffffffff82407872 in rdma_resolve_ip ( >> client=0xffffffff82456450 <addr_client>, src_addr=<optimized out>, >> dst_addr=0xfffffe00600e0054, addr=0xfffff80108f20520, >> timeout_ms=2000, callback=0xffffffff82416b40 <addr_handler>, >> context=0xfffff80108f20400) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_addr.c:789 >> #16 0xffffffff82416352 in rdma_resolve_addr (id=0xfffff80108f20400, >> src_addr=<optimized out>, dst_addr=0xfffffe00600e0054, >> timeout_ms=2000) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_cma.c:3039 >> #17 0xffffffff8243786b in ucma_resolve_ip >> (linux_file=0xfffff80135c08400, inbuf=<optimized out>, >> in_len=<optimized out>, out_len=<optimized out>) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_ucma.c:694 >> #18 0xffffffff82436ee4 in ucma_write (filp=<optimized out>, >> buf=<optimized out>, len=72, pos=<optimized out>) >> at /usr/src/sys/ofed/drivers/infiniband/core/ib_ucma.c:1625 >> #19 0xffffffff823a1ad3 in linux_file_write (file=0xfffff8015403c0a0, >> uio=0xfffffe00600e01c0, active_cred=<optimized out>, >> flags=<optimized out>, td=<optimized out>) >> at /usr/src/sys/compat/linuxkpi/common/src/linux_compat.c:1445 >> #20 0xffffffff80c2f511 in fo_write (fp=0xfffff8015403c0a0, >> uio=0xfffffe00600e01c0, active_cred=0xfffffe00600dfba0, flags=1999, >> td=0xfffff8002e4cf000) at /usr/src/sys/sys/file.h:324 >> #21 dofilewrite (td=0xfffff8002e4cf000, fd=7, fp=0xfffff8015403c0a0, >> auio=0xfffffe00600e01c0, offset=<optimized out>, flags=<optimized >> out>) >> at /usr/src/sys/kern/sys_generic.c:564 >> #22 0xffffffff80c2f149 in kern_writev (td=0xfffff8002e4cf000, fd=7, >> auio=0xfffffe00600e01c0) at /usr/src/sys/kern/sys_generic.c:491 >> #23 0xffffffff80c2f0f3 in sys_write (td=0xffffffff81c85638 >> <cnputs_mtx>, uap=<optimized out>) at >> /usr/src/sys/kern/sys_generic.c:406 >> #24 0xffffffff8102ee45 in syscallenter (td=0xfffff8002e4cf000) >> at /usr/src/sys/amd64/amd64/../../kern/subr_syscall.c:144 >> #25 amd64_syscall (td=0xfffff8002e4cf000, traced=0) >> at /usr/src/sys/amd64/amd64/trap.c:1162 Maybe you could keep arpresolve() w/o need for locking epoch, and then create a new function arpresolve_epoched() which has the assert. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bd7ed43e-ae54-9996-b7b1-88a50956b87f>