aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2023-05-02 15:57:19 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2023-05-09 16:46:22 +0200
commit1e74d29937e415b48ec3b96aa1313fcebabb3331 (patch)
tree7dcdbe9a4c124c46c63e6857e2b0a16410d13138
parentf6bde0f521155f1d2a073181cfca97df83de2684 (diff)
e1d: get rid of strange file descriptor registered check
When the line update happens the list.next member of the file descriptor is checked for NULL and != LLIST_POISON1. This directly tampers with the llist API and might be problematic. Also we can tell by the file descriptor number if the file descriptor is registered or not. An open file descriptor is always registered. Change-Id: I92c426271dc5455427471030fcf0749566e4c2ee Related: OS#5983
-rw-r--r--src/input/e1d.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/input/e1d.c b/src/input/e1d.c
index e1a1526..cf50e27 100644
--- a/src/input/e1d.c
+++ b/src/input/e1d.c
@@ -410,8 +410,8 @@ static int e1d_line_update(struct e1inp_line *line)
struct e1inp_ts *e1i_ts = &line->ts[idx];
struct osmo_fd *bfd = &e1i_ts->driver.e1d.fd;
- /* unregister FD if it was already registered */
- if (bfd->list.next && bfd->list.next != LLIST_POISON1)
+ /* unregister FD if it was already registered/in use */
+ if (osmo_fd_is_registered(bfd))
osmo_fd_unregister(bfd);
if (e1i_ts->type != E1INP_TS_TYPE_NONE && ts >= num_ts_info) {