aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-10-21 12:32:55 +0200
committerHarald Welte <laforge@gnumonks.org>2018-10-21 13:46:07 +0200
commit37608f911d6d046c968795e051f2ead8d04e58c0 (patch)
tree9c657040d601385cf4e133f276285e92cb34ef8f
parent41b6b5e3fc0ff9928052ce7183aebe8fe4810553 (diff)
timerfd_create(): Fix error handling of osmo_fd_register()
Change-Id: Ia2528cc3e3155bbc9cb32dee0e3af99cc6e1c654 Closes: Coverity CID#188853
-rw-r--r--src/select.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/select.c b/src/select.c
index 0b115c61..b594ca55 100644
--- a/src/select.c
+++ b/src/select.c
@@ -324,11 +324,18 @@ int osmo_timerfd_setup(struct osmo_fd *ofd, int (*cb)(struct osmo_fd *, unsigned
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;
}