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

Commit 109ec230 authored by Johan Hedberg's avatar Johan Hedberg Committed by Marcel Holtmann
Browse files

Bluetooth: Move canceling security_timer into smp_chan_destroy()



All places needing to cancel the security timer also call
smp_chan_destroy() in the same go. To eliminate the need to do these two
calls in multiple places simply move the timer cancellation into
smp_chan_destroy().

Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 276d8073
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -384,8 +384,6 @@ static void smp_failure(struct l2cap_conn *conn, u8 reason)


	smp = chan->data;
	smp = chan->data;


	cancel_delayed_work_sync(&smp->security_timer);

	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->flags))
	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->flags))
		smp_chan_destroy(conn);
		smp_chan_destroy(conn);
}
}
@@ -765,7 +763,6 @@ static int smp_distribute_keys(struct l2cap_conn *conn)
		return 0;
		return 0;


	clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->flags);
	clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->flags);
	cancel_delayed_work_sync(&smp->security_timer);
	set_bit(SMP_FLAG_COMPLETE, &smp->flags);
	set_bit(SMP_FLAG_COMPLETE, &smp->flags);
	smp_notify_keys(conn);
	smp_notify_keys(conn);


@@ -822,6 +819,11 @@ void smp_chan_destroy(struct l2cap_conn *conn)


	BUG_ON(!smp);
	BUG_ON(!smp);


	cancel_delayed_work_sync(&smp->security_timer);
	/* In case the timeout freed the SMP context */
	if (!chan->data)
		return;

	complete = test_bit(SMP_FLAG_COMPLETE, &smp->flags);
	complete = test_bit(SMP_FLAG_COMPLETE, &smp->flags);
	mgmt_smp_complete(conn->hcon, complete);
	mgmt_smp_complete(conn->hcon, complete);


@@ -1512,10 +1514,8 @@ static void smp_teardown_cb(struct l2cap_chan *chan, int err)


	BT_DBG("chan %p", chan);
	BT_DBG("chan %p", chan);


	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) {
	if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags))
		cancel_delayed_work_sync(&smp->security_timer);
		smp_chan_destroy(conn);
		smp_chan_destroy(conn);
	}


	conn->smp = NULL;
	conn->smp = NULL;
	l2cap_chan_put(chan);
	l2cap_chan_put(chan);