On Tue, Aug 21, 2012 at 09:20:54AM +0200, Holger Hans Peter Freyther wrote:
On Tue, Aug 21, 2012 at 03:10:32AM +0200, Pablo Neira
Ayuso wrote:
Hi Holger,
Hi Pablo,
IIRC, the refcnt becomes 2 if both the OML and
RSL links are up.
hehe, not really sure. The _rsl_cb will will clone the e1inp_line
but I think after we know which BTS is making the connection we
throw away the cloned line and _get_line the OML one.
With your patch, the refcount becomes zero after
the two
e1inp_sign_link_destroy calls that happen in ->sign_link_down. Thus,
releasing the line that we were leaking.
Sounds plausible. Luckily you only free the link when it becomes
0 (and not smaller). I am going to add an assertion for >= 0 for
the refcount.
Hm, I'm looking again at the last patch I sent and it's not correct
either.
If we call ipaccess_drop, all signalling links are released since
e1inp_sign_link_destroy destroys all sockets (it calls
ipaccess_close).
So, your patch is almost right. We have to e1inp_line_put in
e1inp_sign_link_destroy. But we have to remove e1inp_line_put in the
ipaccess and hsl drivers.
I'll resend a patch for this.