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

Commit 38d57555 authored by Peter Hurley's avatar Peter Hurley Committed by Gustavo Padovan
Browse files

Bluetooth: bnep: Fix lost wakeup of session thread



Fix race condition which can result in missing the wakeup intended
to stop the session thread.

Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent 552b0d3c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -484,9 +484,11 @@ static int bnep_session(void *arg)

	init_waitqueue_entry(&wait, current);
	add_wait_queue(sk_sleep(sk), &wait);
	while (!kthread_should_stop()) {
	while (1) {
		set_current_state(TASK_INTERRUPTIBLE);

		if (kthread_should_stop())
			break;
		/* RX */
		while ((skb = skb_dequeue(&sk->sk_receive_queue))) {
			skb_orphan(skb);
@@ -504,7 +506,7 @@ static int bnep_session(void *arg)

		schedule();
	}
	set_current_state(TASK_RUNNING);
	__set_current_state(TASK_RUNNING);
	remove_wait_queue(sk_sleep(sk), &wait);

	/* Cleanup session */