Hi Marcel, On Sun, Jun 21, 2009 at 11:48 AM, Marcel Holtmann<marcel@xxxxxxxxxxxx> wrote: > Hi Luiz, > > so does this fixes it: > > diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c > index 374536e..266c3b7 100644 > --- a/net/bluetooth/rfcomm/core.c > +++ b/net/bluetooth/rfcomm/core.c > @@ -1772,8 +1772,7 @@ static inline void rfcomm_process_dlcs(struct > rfcomm_sessi > rfcomm_dlc_clear_timer(d); > if (!d->out) > rfcomm_send_dm(s, d->dlci); > - else > - d->state = BT_CLOSED; > + d->state = BT_CLOSED; > __rfcomm_dlc_close(d, ECONNREFUSED); > continue; > } > Not really, rfcomm_dlc is being closed and freed properly, BT_CONNECT2 or BT_CLOSED doesn't make much difference to __rfcomm_dlc_close as they both trigger default case. As I said the code works fine with stacks that cope with DM response, when it doesn't you have to manually trigger rfcomm_session_put to take care of the reference created on rfcomm_accept_connection. -- Luiz Augusto von Dentz Engenheiro de Computação -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html