when running ping6 on an ARM( Atmel AT91SAM9260, linux-2.6.38.8). the command is: ping6 -c 4 ::1 PING ::1 (::1): 56 data bytes Segmentation fault #816 line: (busybox-1.22.1/networking/ping.c) for (mp = CMSG_FIRSTHDR(&msg); mp; mp = CMSG_NXTHDR(&msg, mp)) { if (mp->cmsg_level == SOL_IPV6 && mp->cmsg_type == IPV6_HOPLIMIT /* don't check len - we trust the kernel: */ /* && mp->cmsg_len >= CMSG_LEN(sizeof(int)) */ ) { /*hoplimit = *(int*)CMSG_DATA(mp); - unaligned access */ move_from_unaligned_int(hoplimit, CMSG_DATA(mp)); break; } } } I add "break" at line 824, then I test again, all is OK!
busybox - 1.25.00. In my case, I Modified the data type. char *rcv_packet -> void *rcv_packet ; Ping.c Line 374. and i test ping6, it's OK.
Strange. That should change nothing. Please generate and attach networking/ping.s (run "make networking/ping.s") before and after your change.