rfcomm_session_put(s);  
static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err){	struct rfcomm_session *s = d->session;	if (!s)		return 0;	BT_DBG("dlc %p state %ld dlci %d err %d session %p",			d, d->state, d->dlci, err, s);	switch (d->state) {	case BT_CONNECTED:	case BT_CONFIG:	case BT_CONNECT:		d->state = BT_DISCONN;		if (skb_queue_empty(&d->tx_queue)) {			rfcomm_send_disc(s, d->dlci);			rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);		} else {			rfcomm_queue_disc(d);			rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);		}		break;	default:		rfcomm_dlc_clear_timer(d);		rfcomm_dlc_lock(d);		d->state = BT_CLOSED;		d->state_change(d, err);		rfcomm_dlc_unlock(d);		skb_queue_purge(&d->tx_queue);		rfcomm_session_put(s);		rfcomm_dlc_unlink(d);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dcc365d8f28d6a2332fa37e64d669858a8d017e8/core.c/clean/net/bluetooth/rfcomm/core.c