|
@@ -692,11 +692,9 @@ static struct rfcomm_session *rfcomm_session_del(struct rfcomm_session *s)
|
|
|
|
|
|
static struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
|
|
|
{
|
|
|
- struct rfcomm_session *s;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_session *s, *n;
|
|
|
struct l2cap_chan *chan;
|
|
|
- list_for_each_safe(p, n, &session_list) {
|
|
|
- s = list_entry(p, struct rfcomm_session, list);
|
|
|
+ list_for_each_entry_safe(s, n, &session_list, list) {
|
|
|
chan = l2cap_pi(s->sock->sk)->chan;
|
|
|
|
|
|
if ((!bacmp(src, BDADDR_ANY) || !bacmp(&chan->src, src)) &&
|
|
@@ -709,16 +707,14 @@ static struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
|
|
|
static struct rfcomm_session *rfcomm_session_close(struct rfcomm_session *s,
|
|
|
int err)
|
|
|
{
|
|
|
- struct rfcomm_dlc *d;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_dlc *d, *n;
|
|
|
|
|
|
s->state = BT_CLOSED;
|
|
|
|
|
|
BT_DBG("session %p state %ld err %d", s, s->state, err);
|
|
|
|
|
|
/* Close all dlcs */
|
|
|
- list_for_each_safe(p, n, &s->dlcs) {
|
|
|
- d = list_entry(p, struct rfcomm_dlc, list);
|
|
|
+ list_for_each_entry_safe(d, n, &s->dlcs, list) {
|
|
|
d->state = BT_CLOSED;
|
|
|
__rfcomm_dlc_close(d, err);
|
|
|
}
|
|
@@ -1771,13 +1767,11 @@ static struct rfcomm_session *rfcomm_recv_frame(struct rfcomm_session *s,
|
|
|
|
|
|
static void rfcomm_process_connect(struct rfcomm_session *s)
|
|
|
{
|
|
|
- struct rfcomm_dlc *d;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_dlc *d, *n;
|
|
|
|
|
|
BT_DBG("session %p state %ld", s, s->state);
|
|
|
|
|
|
- list_for_each_safe(p, n, &s->dlcs) {
|
|
|
- d = list_entry(p, struct rfcomm_dlc, list);
|
|
|
+ list_for_each_entry_safe(d, n, &s->dlcs, list) {
|
|
|
if (d->state == BT_CONFIG) {
|
|
|
d->mtu = s->mtu;
|
|
|
if (rfcomm_check_security(d)) {
|
|
@@ -1843,14 +1837,11 @@ static int rfcomm_process_tx(struct rfcomm_dlc *d)
|
|
|
|
|
|
static void rfcomm_process_dlcs(struct rfcomm_session *s)
|
|
|
{
|
|
|
- struct rfcomm_dlc *d;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_dlc *d, *n;
|
|
|
|
|
|
BT_DBG("session %p state %ld", s, s->state);
|
|
|
|
|
|
- list_for_each_safe(p, n, &s->dlcs) {
|
|
|
- d = list_entry(p, struct rfcomm_dlc, list);
|
|
|
-
|
|
|
+ list_for_each_entry_safe(d, n, &s->dlcs, list) {
|
|
|
if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) {
|
|
|
__rfcomm_dlc_close(d, ETIMEDOUT);
|
|
|
continue;
|
|
@@ -1985,14 +1976,11 @@ static struct rfcomm_session *rfcomm_check_connection(struct rfcomm_session *s)
|
|
|
|
|
|
static void rfcomm_process_sessions(void)
|
|
|
{
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_session *s, *n;
|
|
|
|
|
|
rfcomm_lock();
|
|
|
|
|
|
- list_for_each_safe(p, n, &session_list) {
|
|
|
- struct rfcomm_session *s;
|
|
|
- s = list_entry(p, struct rfcomm_session, list);
|
|
|
-
|
|
|
+ list_for_each_entry_safe(s, n, &session_list, list) {
|
|
|
if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) {
|
|
|
s->state = BT_DISCONN;
|
|
|
rfcomm_send_disc(s, 0);
|
|
@@ -2075,15 +2063,12 @@ failed:
|
|
|
|
|
|
static void rfcomm_kill_listener(void)
|
|
|
{
|
|
|
- struct rfcomm_session *s;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_session *s, *n;
|
|
|
|
|
|
BT_DBG("");
|
|
|
|
|
|
- list_for_each_safe(p, n, &session_list) {
|
|
|
- s = list_entry(p, struct rfcomm_session, list);
|
|
|
+ list_for_each_entry_safe(s, n, &session_list, list)
|
|
|
rfcomm_session_del(s);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
static int rfcomm_run(void *unused)
|
|
@@ -2113,8 +2098,7 @@ static int rfcomm_run(void *unused)
|
|
|
static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
|
|
|
{
|
|
|
struct rfcomm_session *s;
|
|
|
- struct rfcomm_dlc *d;
|
|
|
- struct list_head *p, *n;
|
|
|
+ struct rfcomm_dlc *d, *n;
|
|
|
|
|
|
BT_DBG("conn %p status 0x%02x encrypt 0x%02x", conn, status, encrypt);
|
|
|
|
|
@@ -2122,9 +2106,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
|
|
|
if (!s)
|
|
|
return;
|
|
|
|
|
|
- list_for_each_safe(p, n, &s->dlcs) {
|
|
|
- d = list_entry(p, struct rfcomm_dlc, list);
|
|
|
-
|
|
|
+ list_for_each_entry_safe(d, n, &s->dlcs, list) {
|
|
|
if (test_and_clear_bit(RFCOMM_SEC_PENDING, &d->flags)) {
|
|
|
rfcomm_dlc_clear_timer(d);
|
|
|
if (status || encrypt == 0x00) {
|