Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a154a8f authored by Gustavo Padovan's avatar Gustavo Padovan
Browse files

Bluetooth: fix bt_accept_dequeue() to work in process context



No local_bh_disable is needed there once we run everything in process
context. The same goes for the replacement of bh_lock_sock() by
lock_sock().

Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent f1e91e16
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -199,15 +199,14 @@ struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock)

	BT_DBG("parent %p", parent);

	local_bh_disable();
	list_for_each_safe(p, n, &bt_sk(parent)->accept_q) {
		sk = (struct sock *) list_entry(p, struct bt_sock, accept_q);

		bh_lock_sock(sk);
		lock_sock(sk);

		/* FIXME: Is this check still needed */
		if (sk->sk_state == BT_CLOSED) {
			bh_unlock_sock(sk);
			release_sock(sk);
			bt_accept_unlink(sk);
			continue;
		}
@@ -218,14 +217,12 @@ struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock)
			if (newsock)
				sock_graft(sk, newsock);

			bh_unlock_sock(sk);
			local_bh_enable();
			release_sock(sk);
			return sk;
		}

		bh_unlock_sock(sk);
		release_sock(sk);
	}
	local_bh_enable();

	return NULL;
}