fixeria has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/40171?usp=email )
Change subject: ipaccess: Reset pointer before calling stream_cli func triggering callback ......................................................................
ipaccess: Reset pointer before calling stream_cli func triggering callback
The osmo_stream_cli_destroy() may trigger the disconnect_cb, which we forward to the user through sign_link_down() callback. Hence, the user may call e1inp_ipa_bts_rsl_close_n() again (re-entrant, recursively) before we had time to nullify the pointer, calling osmo_stream_cli_destroy() again. Instead, make sure the pointer is reset bfore potentially calling the osmo_stream_cli_destroy() to make sure to catch this scenario.
This issue was being triggered by BTS_Tests.TC_chopped_ipa_payload, which was hitting an assert due to incorrectly calling osmo_stream_cli_destroy() twice on a given stream_cli.
Related: OS#6729 Change-Id: I2f1da24580effab5e3dfeacb6514c3b1e3a650c9 (cherry picked from commit 8076b58f5d7d22cb5dcc82843d1793adbc9ba4e4) --- M src/input/ipaccess.c 1 file changed, 1 insertion(+), 1 deletion(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c index 6a7d753..44ec719 100644 --- a/src/input/ipaccess.c +++ b/src/input/ipaccess.c @@ -1168,8 +1168,8 @@
cli = il->ipa_cli[1 + trx_nr]; if (cli != NULL) { - osmo_stream_cli_destroy(cli); il->ipa_cli[1 + trx_nr] = NULL; + osmo_stream_cli_destroy(cli); } return 0; }