timerfd_create(): Fix error handling of osmo_fd_register()
Change-Id: Ia2528cc3e3155bbc9cb32dee0e3af99cc6e1c654
Closes: Coverity CID#188853
diff --git a/src/select.c b/src/select.c
index 0b115c6..b594ca5 100644
--- a/src/select.c
+++ b/src/select.c
@@ -324,11 +324,18 @@
ofd->when = BSC_FD_READ;
if (ofd->fd < 0) {
+ int rc;
+
ofd->fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK);
if (ofd->fd < 0)
return ofd->fd;
- osmo_fd_register(ofd);
+ rc = osmo_fd_register(ofd);
+ if (rc < 0) {
+ close(ofd->fd);
+ ofd->fd = -1;
+ return rc;
+ }
}
return 0;
}