From d78c973cd89fc7c119573357cfbebb891dbc697a Mon Sep 17 00:00:00 2001 From: Jean-Francois Dionne Date: Mon, 6 Mar 2017 14:33:20 -0500 Subject: Fix LAPD UA message buffer memory leak. The state check in lapd_dl_reset causes some buffers never to be released. Using talloc report LAPD UA message buffers are never released after each call and cause a memory leak. Change-Id: I2799b70623f2ec4dbc725eb213e332e98da02a3e --- src/gsm/lapd_core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c index 0cc28a6d..a602d788 100644 --- a/src/gsm/lapd_core.c +++ b/src/gsm/lapd_core.c @@ -308,11 +308,6 @@ void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, /* reset to IDLE state */ void lapd_dl_reset(struct lapd_datalink *dl) { - if (dl->state == LAPD_STATE_IDLE) - return; - LOGP(DLLAPD, LOGL_INFO, "Resetting LAPDm instance (dl=%p)\n", dl); - /* enter idle state (and remove eventual cont_res) */ - lapd_dl_newstate(dl, LAPD_STATE_IDLE); /* flush buffer */ lapd_dl_flush_tx(dl); lapd_dl_flush_send(dl); @@ -322,6 +317,11 @@ void lapd_dl_reset(struct lapd_datalink *dl) /* stop Timers */ lapd_stop_t200(dl); lapd_stop_t203(dl); + if (dl->state == LAPD_STATE_IDLE) + return; + LOGP(DLLAPD, LOGL_INFO, "Resetting LAPDm instance (dl=%p)\n", dl); + /* enter idle state (and remove eventual cont_res) */ + lapd_dl_newstate(dl, LAPD_STATE_IDLE); } /* reset and de-allocate history buffer */ -- cgit v1.2.3