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

Commit 4f87da80 authored by Johan Hedberg's avatar Johan Hedberg
Browse files

Bluetooth: Remove HCI_PI_MGMT_INIT flag for sockets



This flag is of no use right now and is in fact harmful in that it
prevents the HCI_MGMT flag to be set for any controllers that may need
it after the first one that bluetoothd takes into use (the flag is
cleared for the first controller so any subsequent ones through the same
bluetoothd mgmt socket never get the HCI_MGMT flag set).

Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 5f159032
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -1034,16 +1034,12 @@ int mgmt_new_ltk(struct hci_dev *hdev, struct smp_ltk *key, u8 persistent);
/* HCI info for socket */
#define hci_pi(sk) ((struct hci_pinfo *) sk)

/* HCI socket flags */
#define HCI_PI_MGMT_INIT	0

struct hci_pinfo {
	struct bt_sock    bt;
	struct hci_dev    *hdev;
	struct hci_filter filter;
	__u32             cmsg_mask;
	unsigned short   channel;
	unsigned long     flags;
};

/* HCI security filter */
+0 −1
Original line number Diff line number Diff line
@@ -659,7 +659,6 @@ static int hci_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_le
			goto done;
		}

		set_bit(HCI_PI_MGMT_INIT, &hci_pi(sk)->flags);
		break;

	case HCI_CHANNEL_MONITOR:
+8 −10
Original line number Diff line number Diff line
@@ -615,10 +615,9 @@ static void service_cache_off(struct work_struct *work)

static void mgmt_init_hdev(struct sock *sk, struct hci_dev *hdev)
{
	if (!test_and_clear_bit(HCI_PI_MGMT_INIT, &hci_pi(sk)->flags))
	if (test_and_set_bit(HCI_MGMT, &hdev->dev_flags))
		return;

	if (!test_and_set_bit(HCI_MGMT, &hdev->dev_flags)) {
	INIT_DELAYED_WORK(&hdev->service_cache, service_cache_off);

	/* Non-mgmt controlled devices get this bit set
@@ -628,7 +627,6 @@ static void mgmt_init_hdev(struct sock *sk, struct hci_dev *hdev)
	 */
	clear_bit(HCI_PAIRABLE, &hdev->dev_flags);
}
}

static int read_controller_info(struct sock *sk, struct hci_dev *hdev,
						void *data, u16 data_len)