pkelsey/libuinet

syncache_lookup() is passed in a NULL mbuf pointer

Closed this issue · 1 comments

[adrian@build2 /beards/appliance/snapshots/nightlies/20140625_175135/34051ff/10.0-DEVELOPER/nas_source/blockd]$
#0 syncache_lookup (inc=0x7ffffebf5c30, schp=0x7ffffebf5bf8, m=0x0) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c:546

546 /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c: No such file or directory.
in /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c
[New Thread 802c0c800 (LWP 100264/blockd)]
[New Thread 802c0c400 (LWP 100263/blockd)]
[New Thread 802c0c000 (LWP 100262/blockd)]
[New Thread 802c0bc00 (LWP 100261/blockd)]
[New Thread 802c0b800 (LWP 100260/blockd)]
[New Thread 802c0b400 (LWP 100259/blockd)]
[New Thread 802c0b000 (LWP 100258/blockd)]
[New Thread 802c0ac00 (LWP 100257/blockd)]
[New Thread 802c09000 (LWP 100256/nm_rx: netmap0)]
[New Thread 802c08c00 (LWP 100255/nm_tx: netmap0)]
[New Thread 802c08000 (LWP 100222/intr: newborn)]
[New Thread 802c07c00 (LWP 100221/intr: newborn)]
[New Thread 802c07800 (LWP 100220/intr: newborn)]
[New Thread 802c07400 (LWP 100219/thread taskq)]
[New Thread 802c07000 (LWP 100218/kqueue taskq)]
[New Thread 802c06c00 (LWP 100217/clock)]
[New Thread 802c06800 (LWP 100216/intr: newborn)]
New Thread 802c06400 (LWP 100203/blockd) bt
#0 syncache_lookup (inc=0x7ffffebf5c30, schp=0x7ffffebf5bf8, m=0x0) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c:546
#1 0x0000000000480ce7 in syncache_unreach (inc=0x7ffffebf5c30, th=0x807dce03e, m=0x0) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c:841
#2 0x000000000047f2eb in tcp_ctlinput (cmd=, sa=, vip=0x807dce02a) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_subr.c:1455
#3 0x000000000046e78f in icmp_input (m=, off=20) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/ip_icmp.c:492
#4 0x000000000046f4de in ip_input (m=0x8007e3500) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/ip_input.c:774
#5 0x0000000000450c2c in netisr_dispatch_src (proto=, source=, m=0x8007e3500) at /usr/nas_source/libuinet/lib/libuinet/../../sys/net/netisr.c:1013
#6 0x000000000044f13e in ether_nh_input (m=) at /usr/nas_source/libuinet/lib/libuinet/../../sys/net/if_ethersubr.c:951
#7 0x0000000000450c2c in netisr_dispatch_src (proto=, source=, m=0x8007e3500) at /usr/nas_source/libuinet/lib/libuinet/../../sys/net/netisr.c:1013
#8 0x000000000041aab1 in if_netmap_receive (arg=0x802efc6c0) at uinet_if_netmap.c:710
#9 0x000000000040e1fb in pthread_start_routine (arg=0x806832420) at uinet_host_interface.c:425
#10 0x000000080228f4a5 in pthread_create () from /lib/libthr.so.3
#11 0x0000000000000000 in ?? ()

Current language: auto; currently minimal
(gdb) frame 0
#0 syncache_lookup (inc=0x7ffffebf5c30, schp=0x7ffffebf5bf8, m=0x0) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c:546

546 in /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c
(gdb) frame 1
#1 0x0000000000480ce7 in syncache_unreach (inc=0x7ffffebf5c30, th=0x807dce03e, m=0x0) at /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c:841

841 in /usr/nas_source/libuinet/lib/libuinet/../../sys/netinet/tcp_syncache.c
(gdb) print m
$1 = (struct mbuf *) 0x0
(gdb)

This is due to incomplete ICMP plumbing for promiscuous INET interfaces that are not in fib/cdom 0. I believe 4b5c59b properly fences this off for now (which is to say, such interfaces will now drop ICMP frames without attempting to process).