diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2021-10-03 05:00:49 +0600 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2021-10-08 05:23:08 +0000 |
commit | 7726d2332713023a1e7b58bd5837e20160b029df (patch) | |
tree | 18ee3d82e7495722b36dc8ec30ebcee3fc63c6e6 /include/osmo-bts/gsm_data.h | |
parent | 2e62159c8dc222e67e6e37e63374936592ceacf7 (diff) |
rsl: prevent race condition during timeslot re-configuration
It may happen that the BSC requests logical channel activation on a
dynamic timeslot, which is in a process of switching from one pchan
type to another due to a preceding channel activation request.
In this case 'struct gsm_bts_trx_ts' already holds an msgb with the
preceding RSL CHANnel ACTIVation message, that is normally handled
once the PHY completes the process of timeslot re-configuration.
On receipt of subsequent RSL CHANnel ACTIVation messages, in function
dyn_ts_l1_reconnect() we overwrite the preceeding msgb (memleak), by
the most recent one. And once the timeslot re-configuration is done,
only the most recent CHANnel ACTIVation message gets ACKed.
In order to avoid this, let's move the msgb ownership to 'struct
gsm_lchan', so it cannot be overwritten by the CHANnel ACTIVation
message that is related to a different lchan on the same timeslot.
Change-Id: Ia625c2827fca883ea712076706d5ef21ed793ba6
Related: I3b602ac9dbe0ab3e80eb30de573c9b48a79872d8
Fixes: OS#5245
Diffstat (limited to 'include/osmo-bts/gsm_data.h')
-rw-r--r-- | include/osmo-bts/gsm_data.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index ad0f78d4..dcb357f1 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -83,7 +83,6 @@ struct gsm_bts_trx_ts { struct { enum gsm_phys_chan_config pchan_is; enum gsm_phys_chan_config pchan_want; - struct msgb *pending_chan_activ; } dyn; unsigned int flags; |