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