diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2018-01-16 18:50:23 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-01-17 13:33:27 +0000 |
commit | 23d3161d4bbe80da13bf3e7afb64242dc8b7236c (patch) | |
tree | 9c7359ce04e3c6ed98874b958f15578b4fbce528 | |
parent | 5e518b5b4c9abb404055f38c2fc5061bf5530493 (diff) |
fsm: fix double llist_del in osmo_fsm_inst_term()
llist_del(&fi->proc.child) is executed always, regardless whether
a parent is configured or not. This may lead into a double llist_del
when the child has been previously unlinked.
- check if fi->proc.parent is set, and only then execute
llist_del(&fi->proc.child);
Change-Id: I4b33d508c8a11b72fbf30125088a882894d9e6ac
-rw-r--r-- | src/fsm.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -483,10 +483,11 @@ void _osmo_fsm_inst_term(struct osmo_fsm_inst *fi, /* delete ourselves from the parent */ parent = fi->proc.parent; - if (parent) + if (parent) { LOGPFSMSRC(fi, file, line, "Removing from parent %s\n", osmo_fsm_inst_name(parent)); - llist_del(&fi->proc.child); + llist_del(&fi->proc.child); + } /* call destructor / clean-up function */ if (fi->fsm->cleanup) |