rfcomm_session_hold(s);  
static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err){	struct rfcomm_session *s = NULL;	struct sockaddr_l2 addr;	struct socket *sock;	struct sock *sk;	BT_DBG("%s %s", batostr(src), batostr(dst));	*err = rfcomm_l2sock_create(&sock);	if (*err < 0)		return NULL;	bacpy(&addr.l2_bdaddr, src);	addr.l2_family = AF_BLUETOOTH;	addr.l2_psm    = 0;	*err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr));	if (*err < 0)		goto failed;	/* Set L2CAP options */	sk = sock->sk;	lock_sock(sk);	l2cap_pi(sk)->imtu = RFCOMM_MAX_L2CAP_MTU;	release_sock(sk);	s = rfcomm_session_add(sock, BT_BOUND);	if (!s) {		*err = -ENOMEM;		goto failed;	}	rfcomm_session_hold(s);	s->initiator = 1;	bacpy(&addr.l2_bdaddr, dst);	addr.l2_family = AF_BLUETOOTH;	addr.l2_psm    = htobs(RFCOMM_PSM);	*err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK);	if (*err == 0 || *err == -EAGAIN)		return s;	rfcomm_session_del(s);	return NULL;failed:	sock_release(sock);	return NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dcc365d8f28d6a2332fa37e64d669858a8d017e8/core.c/clean/net/bluetooth/rfcomm/core.c