When timerfd_create is not enabled in the Linux kernel the 6relayd daemon crashes when the router advertisement message timer expires. This is caused by not checking the parameter socket in the code below in the file router.c line 76 for (size_t i = 0; i < config->slavecount; ++i) { struct relayd_interface *iface = &config->slaves[i]; iface->timer_rs.socket = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); iface->timer_rs.handle_event = send_router_advert; relayd_register_event(&iface->timer_rs); send_router_advert(&iface->timer_rs); }
In the file dhcpv6-ia.c line 64 the socket parameter is checked reconf_event.socket = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); if (reconf_event.socket < 0) { syslog(LOG_ERR, "Failed to create timer: %s", strerror(errno)); return -1; } Hans
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel