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

Commit 5e130367 authored by Johan Hedberg's avatar Johan Hedberg Committed by Gustavo Padovan
Browse files

Bluetooth: Introduce a new HCI_RFKILLED flag



This makes it more convenient to check for rfkill (no need to check for
dev->rfkill before calling rfkill_blocked()) and also avoids potential
races if the RFKILL state needs to be checked from within the rfkill
callback.

Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Cc: stable@vger.kernel.org
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
parent 330b6c15
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ enum {
enum {
	HCI_SETUP,
	HCI_AUTO_OFF,
	HCI_RFKILLED,
	HCI_MGMT,
	HCI_PAIRABLE,
	HCI_SERVICE_CACHE,
+10 −5
Original line number Diff line number Diff line
@@ -1146,7 +1146,7 @@ int hci_dev_open(__u16 dev)
		goto done;
	}

	if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
	if (test_bit(HCI_RFKILLED, &hdev->dev_flags)) {
		ret = -ERFKILL;
		goto done;
	}
@@ -1566,10 +1566,12 @@ static int hci_rfkill_set_block(void *data, bool blocked)

	BT_DBG("%p name %s blocked %d", hdev, hdev->name, blocked);

	if (!blocked)
		return 0;

	if (blocked) {
		set_bit(HCI_RFKILLED, &hdev->dev_flags);
		hci_dev_do_close(hdev);
	} else {
		clear_bit(HCI_RFKILLED, &hdev->dev_flags);
}

	return 0;
}
@@ -2209,6 +2211,9 @@ int hci_register_dev(struct hci_dev *hdev)
		}
	}

	if (hdev->rfkill && rfkill_blocked(hdev->rfkill))
		set_bit(HCI_RFKILLED, &hdev->dev_flags);

	set_bit(HCI_SETUP, &hdev->dev_flags);

	if (hdev->dev_type != HCI_AMP)