Bluetooth: use inclusive language when filtering devices
This patch replaces some non-inclusive terms based on the appropriate language mapping table compiled by the Bluetooth SIG: https://specificationrefs.bluetooth.com/language-mapping/Appropriate_Language_Mapping_Table.pdf Specifically, these terms are replaced: blacklist -> reject list whitelist -> accept list Signed-off-by: Archie Pusaka <apusaka@chromium.org> Reviewed-by: Miao-chen Chou <mcchou@chromium.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
		
							parent
							
								
									39bc74ca01
								
							
						
					
					
						commit
						3d4f9c0049
					
				| @ -1505,7 +1505,7 @@ struct hci_cp_le_set_scan_enable { | ||||
| } __packed; | ||||
| 
 | ||||
| #define HCI_LE_USE_PEER_ADDR		0x00 | ||||
| #define HCI_LE_USE_WHITELIST		0x01 | ||||
| #define HCI_LE_USE_ACCEPT_LIST		0x01 | ||||
| 
 | ||||
| #define HCI_OP_LE_CREATE_CONN		0x200d | ||||
| struct hci_cp_le_create_conn { | ||||
| @ -1525,22 +1525,22 @@ struct hci_cp_le_create_conn { | ||||
| 
 | ||||
| #define HCI_OP_LE_CREATE_CONN_CANCEL	0x200e | ||||
| 
 | ||||
| #define HCI_OP_LE_READ_WHITE_LIST_SIZE	0x200f | ||||
| struct hci_rp_le_read_white_list_size { | ||||
| #define HCI_OP_LE_READ_ACCEPT_LIST_SIZE	0x200f | ||||
| struct hci_rp_le_read_accept_list_size { | ||||
| 	__u8	status; | ||||
| 	__u8	size; | ||||
| } __packed; | ||||
| 
 | ||||
| #define HCI_OP_LE_CLEAR_WHITE_LIST	0x2010 | ||||
| #define HCI_OP_LE_CLEAR_ACCEPT_LIST	0x2010 | ||||
| 
 | ||||
| #define HCI_OP_LE_ADD_TO_WHITE_LIST	0x2011 | ||||
| struct hci_cp_le_add_to_white_list { | ||||
| #define HCI_OP_LE_ADD_TO_ACCEPT_LIST	0x2011 | ||||
| struct hci_cp_le_add_to_accept_list { | ||||
| 	__u8     bdaddr_type; | ||||
| 	bdaddr_t bdaddr; | ||||
| } __packed; | ||||
| 
 | ||||
| #define HCI_OP_LE_DEL_FROM_WHITE_LIST	0x2012 | ||||
| struct hci_cp_le_del_from_white_list { | ||||
| #define HCI_OP_LE_DEL_FROM_ACCEPT_LIST	0x2012 | ||||
| struct hci_cp_le_del_from_accept_list { | ||||
| 	__u8     bdaddr_type; | ||||
| 	bdaddr_t bdaddr; | ||||
| } __packed; | ||||
|  | ||||
| @ -327,7 +327,7 @@ struct hci_dev { | ||||
| 	__u8		max_page; | ||||
| 	__u8		features[HCI_MAX_PAGES][8]; | ||||
| 	__u8		le_features[8]; | ||||
| 	__u8		le_white_list_size; | ||||
| 	__u8		le_accept_list_size; | ||||
| 	__u8		le_resolv_list_size; | ||||
| 	__u8		le_num_of_adv_sets; | ||||
| 	__u8		le_states[8]; | ||||
| @ -522,14 +522,14 @@ struct hci_dev { | ||||
| 	struct hci_conn_hash	conn_hash; | ||||
| 
 | ||||
| 	struct list_head	mgmt_pending; | ||||
| 	struct list_head	blacklist; | ||||
| 	struct list_head	whitelist; | ||||
| 	struct list_head	reject_list; | ||||
| 	struct list_head	accept_list; | ||||
| 	struct list_head	uuids; | ||||
| 	struct list_head	link_keys; | ||||
| 	struct list_head	long_term_keys; | ||||
| 	struct list_head	identity_resolving_keys; | ||||
| 	struct list_head	remote_oob_data; | ||||
| 	struct list_head	le_white_list; | ||||
| 	struct list_head	le_accept_list; | ||||
| 	struct list_head	le_resolv_list; | ||||
| 	struct list_head	le_conn_params; | ||||
| 	struct list_head	pend_le_conns; | ||||
|  | ||||
| @ -749,14 +749,14 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt) | ||||
| 		} | ||||
| 
 | ||||
| 		if (hdev->commands[26] & 0x40) { | ||||
| 			/* Read LE White List Size */ | ||||
| 			hci_req_add(req, HCI_OP_LE_READ_WHITE_LIST_SIZE, | ||||
| 			/* Read LE Accept List Size */ | ||||
| 			hci_req_add(req, HCI_OP_LE_READ_ACCEPT_LIST_SIZE, | ||||
| 				    0, NULL); | ||||
| 		} | ||||
| 
 | ||||
| 		if (hdev->commands[26] & 0x80) { | ||||
| 			/* Clear LE White List */ | ||||
| 			hci_req_add(req, HCI_OP_LE_CLEAR_WHITE_LIST, 0, NULL); | ||||
| 			/* Clear LE Accept List */ | ||||
| 			hci_req_add(req, HCI_OP_LE_CLEAR_ACCEPT_LIST, 0, NULL); | ||||
| 		} | ||||
| 
 | ||||
| 		if (hdev->commands[34] & 0x40) { | ||||
| @ -3713,13 +3713,13 @@ static int hci_suspend_notifier(struct notifier_block *nb, unsigned long action, | ||||
| 		/* Suspend consists of two actions:
 | ||||
| 		 *  - First, disconnect everything and make the controller not | ||||
| 		 *    connectable (disabling scanning) | ||||
| 		 *  - Second, program event filter/whitelist and enable scan | ||||
| 		 *  - Second, program event filter/accept list and enable scan | ||||
| 		 */ | ||||
| 		ret = hci_change_suspend_state(hdev, BT_SUSPEND_DISCONNECT); | ||||
| 		if (!ret) | ||||
| 			state = BT_SUSPEND_DISCONNECT; | ||||
| 
 | ||||
| 		/* Only configure whitelist if disconnect succeeded and wake
 | ||||
| 		/* Only configure accept list if disconnect succeeded and wake
 | ||||
| 		 * isn't being prevented. | ||||
| 		 */ | ||||
| 		if (!ret && !(hdev->prevent_wake && hdev->prevent_wake(hdev))) { | ||||
| @ -3827,14 +3827,14 @@ struct hci_dev *hci_alloc_dev(void) | ||||
| 	mutex_init(&hdev->req_lock); | ||||
| 
 | ||||
| 	INIT_LIST_HEAD(&hdev->mgmt_pending); | ||||
| 	INIT_LIST_HEAD(&hdev->blacklist); | ||||
| 	INIT_LIST_HEAD(&hdev->whitelist); | ||||
| 	INIT_LIST_HEAD(&hdev->reject_list); | ||||
| 	INIT_LIST_HEAD(&hdev->accept_list); | ||||
| 	INIT_LIST_HEAD(&hdev->uuids); | ||||
| 	INIT_LIST_HEAD(&hdev->link_keys); | ||||
| 	INIT_LIST_HEAD(&hdev->long_term_keys); | ||||
| 	INIT_LIST_HEAD(&hdev->identity_resolving_keys); | ||||
| 	INIT_LIST_HEAD(&hdev->remote_oob_data); | ||||
| 	INIT_LIST_HEAD(&hdev->le_white_list); | ||||
| 	INIT_LIST_HEAD(&hdev->le_accept_list); | ||||
| 	INIT_LIST_HEAD(&hdev->le_resolv_list); | ||||
| 	INIT_LIST_HEAD(&hdev->le_conn_params); | ||||
| 	INIT_LIST_HEAD(&hdev->pend_le_conns); | ||||
| @ -4047,8 +4047,8 @@ void hci_unregister_dev(struct hci_dev *hdev) | ||||
| 	destroy_workqueue(hdev->req_workqueue); | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 	hci_bdaddr_list_clear(&hdev->blacklist); | ||||
| 	hci_bdaddr_list_clear(&hdev->whitelist); | ||||
| 	hci_bdaddr_list_clear(&hdev->reject_list); | ||||
| 	hci_bdaddr_list_clear(&hdev->accept_list); | ||||
| 	hci_uuids_clear(hdev); | ||||
| 	hci_link_keys_clear(hdev); | ||||
| 	hci_smp_ltks_clear(hdev); | ||||
| @ -4056,7 +4056,7 @@ void hci_unregister_dev(struct hci_dev *hdev) | ||||
| 	hci_remote_oob_data_clear(hdev); | ||||
| 	hci_adv_instances_clear(hdev); | ||||
| 	hci_adv_monitors_clear(hdev); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_white_list); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_accept_list); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_resolv_list); | ||||
| 	hci_conn_params_clear_all(hdev); | ||||
| 	hci_discovery_filter_clear(hdev); | ||||
|  | ||||
| @ -125,7 +125,7 @@ static int device_list_show(struct seq_file *f, void *ptr) | ||||
| 	struct bdaddr_list *b; | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 	list_for_each_entry(b, &hdev->whitelist, list) | ||||
| 	list_for_each_entry(b, &hdev->accept_list, list) | ||||
| 		seq_printf(f, "%pMR (type %u)\n", &b->bdaddr, b->bdaddr_type); | ||||
| 	list_for_each_entry(p, &hdev->le_conn_params, list) { | ||||
| 		seq_printf(f, "%pMR (type %u) %u\n", &p->addr, p->addr_type, | ||||
| @ -144,7 +144,7 @@ static int blacklist_show(struct seq_file *f, void *p) | ||||
| 	struct bdaddr_list *b; | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 	list_for_each_entry(b, &hdev->blacklist, list) | ||||
| 	list_for_each_entry(b, &hdev->reject_list, list) | ||||
| 		seq_printf(f, "%pMR (type %u)\n", &b->bdaddr, b->bdaddr_type); | ||||
| 	hci_dev_unlock(hdev); | ||||
| 
 | ||||
| @ -784,7 +784,7 @@ static int white_list_show(struct seq_file *f, void *ptr) | ||||
| 	struct bdaddr_list *b; | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 	list_for_each_entry(b, &hdev->le_white_list, list) | ||||
| 	list_for_each_entry(b, &hdev->le_accept_list, list) | ||||
| 		seq_printf(f, "%pMR (type %u)\n", &b->bdaddr, b->bdaddr_type); | ||||
| 	hci_dev_unlock(hdev); | ||||
| 
 | ||||
| @ -1195,7 +1195,7 @@ void hci_debugfs_create_le(struct hci_dev *hdev) | ||||
| 				    &force_static_address_fops); | ||||
| 
 | ||||
| 	debugfs_create_u8("white_list_size", 0444, hdev->debugfs, | ||||
| 			  &hdev->le_white_list_size); | ||||
| 			  &hdev->le_accept_list_size); | ||||
| 	debugfs_create_file("white_list", 0444, hdev->debugfs, hdev, | ||||
| 			    &white_list_fops); | ||||
| 	debugfs_create_u8("resolv_list_size", 0444, hdev->debugfs, | ||||
|  | ||||
| @ -236,7 +236,7 @@ static void hci_cc_reset(struct hci_dev *hdev, struct sk_buff *skb) | ||||
| 
 | ||||
| 	hdev->ssp_debug_mode = 0; | ||||
| 
 | ||||
| 	hci_bdaddr_list_clear(&hdev->le_white_list); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_accept_list); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_resolv_list); | ||||
| } | ||||
| 
 | ||||
| @ -1492,36 +1492,22 @@ static void hci_cc_le_read_num_adv_sets(struct hci_dev *hdev, | ||||
| 	hdev->le_num_of_adv_sets = rp->num_of_sets; | ||||
| } | ||||
| 
 | ||||
| static void hci_cc_le_read_white_list_size(struct hci_dev *hdev, | ||||
| 					   struct sk_buff *skb) | ||||
| static void hci_cc_le_read_accept_list_size(struct hci_dev *hdev, | ||||
| 					    struct sk_buff *skb) | ||||
| { | ||||
| 	struct hci_rp_le_read_white_list_size *rp = (void *) skb->data; | ||||
| 	struct hci_rp_le_read_accept_list_size *rp = (void *)skb->data; | ||||
| 
 | ||||
| 	BT_DBG("%s status 0x%2.2x size %u", hdev->name, rp->status, rp->size); | ||||
| 
 | ||||
| 	if (rp->status) | ||||
| 		return; | ||||
| 
 | ||||
| 	hdev->le_white_list_size = rp->size; | ||||
| 	hdev->le_accept_list_size = rp->size; | ||||
| } | ||||
| 
 | ||||
| static void hci_cc_le_clear_white_list(struct hci_dev *hdev, | ||||
| 				       struct sk_buff *skb) | ||||
| { | ||||
| 	__u8 status = *((__u8 *) skb->data); | ||||
| 
 | ||||
| 	BT_DBG("%s status 0x%2.2x", hdev->name, status); | ||||
| 
 | ||||
| 	if (status) | ||||
| 		return; | ||||
| 
 | ||||
| 	hci_bdaddr_list_clear(&hdev->le_white_list); | ||||
| } | ||||
| 
 | ||||
| static void hci_cc_le_add_to_white_list(struct hci_dev *hdev, | ||||
| static void hci_cc_le_clear_accept_list(struct hci_dev *hdev, | ||||
| 					struct sk_buff *skb) | ||||
| { | ||||
| 	struct hci_cp_le_add_to_white_list *sent; | ||||
| 	__u8 status = *((__u8 *) skb->data); | ||||
| 
 | ||||
| 	BT_DBG("%s status 0x%2.2x", hdev->name, status); | ||||
| @ -1529,18 +1515,13 @@ static void hci_cc_le_add_to_white_list(struct hci_dev *hdev, | ||||
| 	if (status) | ||||
| 		return; | ||||
| 
 | ||||
| 	sent = hci_sent_cmd_data(hdev, HCI_OP_LE_ADD_TO_WHITE_LIST); | ||||
| 	if (!sent) | ||||
| 		return; | ||||
| 
 | ||||
| 	hci_bdaddr_list_add(&hdev->le_white_list, &sent->bdaddr, | ||||
| 			   sent->bdaddr_type); | ||||
| 	hci_bdaddr_list_clear(&hdev->le_accept_list); | ||||
| } | ||||
| 
 | ||||
| static void hci_cc_le_del_from_white_list(struct hci_dev *hdev, | ||||
| 					  struct sk_buff *skb) | ||||
| static void hci_cc_le_add_to_accept_list(struct hci_dev *hdev, | ||||
| 					 struct sk_buff *skb) | ||||
| { | ||||
| 	struct hci_cp_le_del_from_white_list *sent; | ||||
| 	struct hci_cp_le_add_to_accept_list *sent; | ||||
| 	__u8 status = *((__u8 *) skb->data); | ||||
| 
 | ||||
| 	BT_DBG("%s status 0x%2.2x", hdev->name, status); | ||||
| @ -1548,11 +1529,30 @@ static void hci_cc_le_del_from_white_list(struct hci_dev *hdev, | ||||
| 	if (status) | ||||
| 		return; | ||||
| 
 | ||||
| 	sent = hci_sent_cmd_data(hdev, HCI_OP_LE_DEL_FROM_WHITE_LIST); | ||||
| 	sent = hci_sent_cmd_data(hdev, HCI_OP_LE_ADD_TO_ACCEPT_LIST); | ||||
| 	if (!sent) | ||||
| 		return; | ||||
| 
 | ||||
| 	hci_bdaddr_list_del(&hdev->le_white_list, &sent->bdaddr, | ||||
| 	hci_bdaddr_list_add(&hdev->le_accept_list, &sent->bdaddr, | ||||
| 			    sent->bdaddr_type); | ||||
| } | ||||
| 
 | ||||
| static void hci_cc_le_del_from_accept_list(struct hci_dev *hdev, | ||||
| 					   struct sk_buff *skb) | ||||
| { | ||||
| 	struct hci_cp_le_del_from_accept_list *sent; | ||||
| 	__u8 status = *((__u8 *) skb->data); | ||||
| 
 | ||||
| 	BT_DBG("%s status 0x%2.2x", hdev->name, status); | ||||
| 
 | ||||
| 	if (status) | ||||
| 		return; | ||||
| 
 | ||||
| 	sent = hci_sent_cmd_data(hdev, HCI_OP_LE_DEL_FROM_ACCEPT_LIST); | ||||
| 	if (!sent) | ||||
| 		return; | ||||
| 
 | ||||
| 	hci_bdaddr_list_del(&hdev->le_accept_list, &sent->bdaddr, | ||||
| 			    sent->bdaddr_type); | ||||
| } | ||||
| 
 | ||||
| @ -2367,7 +2367,7 @@ static void cs_le_create_conn(struct hci_dev *hdev, bdaddr_t *peer_addr, | ||||
| 	/* We don't want the connection attempt to stick around
 | ||||
| 	 * indefinitely since LE doesn't have a page timeout concept | ||||
| 	 * like BR/EDR. Set a timer for any connection that doesn't use | ||||
| 	 * the white list for connecting. | ||||
| 	 * the accept list for connecting. | ||||
| 	 */ | ||||
| 	if (filter_policy == HCI_LE_USE_PEER_ADDR) | ||||
| 		queue_delayed_work(conn->hdev->workqueue, | ||||
| @ -2623,7 +2623,7 @@ static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) | ||||
| 		 * only used during suspend. | ||||
| 		 */ | ||||
| 		if (ev->link_type == ACL_LINK && | ||||
| 		    hci_bdaddr_list_lookup_with_flags(&hdev->whitelist, | ||||
| 		    hci_bdaddr_list_lookup_with_flags(&hdev->accept_list, | ||||
| 						      &ev->bdaddr, | ||||
| 						      BDADDR_BREDR)) { | ||||
| 			conn = hci_conn_add(hdev, ev->link_type, &ev->bdaddr, | ||||
| @ -2745,19 +2745,19 @@ static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb) | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->blacklist, &ev->bdaddr, | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->reject_list, &ev->bdaddr, | ||||
| 				   BDADDR_BREDR)) { | ||||
| 		hci_reject_conn(hdev, &ev->bdaddr); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Require HCI_CONNECTABLE or a whitelist entry to accept the
 | ||||
| 	/* Require HCI_CONNECTABLE or an accept list entry to accept the
 | ||||
| 	 * connection. These features are only touched through mgmt so | ||||
| 	 * only do the checks if HCI_MGMT is set. | ||||
| 	 */ | ||||
| 	if (hci_dev_test_flag(hdev, HCI_MGMT) && | ||||
| 	    !hci_dev_test_flag(hdev, HCI_CONNECTABLE) && | ||||
| 	    !hci_bdaddr_list_lookup_with_flags(&hdev->whitelist, &ev->bdaddr, | ||||
| 	    !hci_bdaddr_list_lookup_with_flags(&hdev->accept_list, &ev->bdaddr, | ||||
| 					       BDADDR_BREDR)) { | ||||
| 		hci_reject_conn(hdev, &ev->bdaddr); | ||||
| 		return; | ||||
| @ -3538,20 +3538,20 @@ static void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *skb, | ||||
| 		hci_cc_le_set_scan_enable(hdev, skb); | ||||
| 		break; | ||||
| 
 | ||||
| 	case HCI_OP_LE_READ_WHITE_LIST_SIZE: | ||||
| 		hci_cc_le_read_white_list_size(hdev, skb); | ||||
| 	case HCI_OP_LE_READ_ACCEPT_LIST_SIZE: | ||||
| 		hci_cc_le_read_accept_list_size(hdev, skb); | ||||
| 		break; | ||||
| 
 | ||||
| 	case HCI_OP_LE_CLEAR_WHITE_LIST: | ||||
| 		hci_cc_le_clear_white_list(hdev, skb); | ||||
| 	case HCI_OP_LE_CLEAR_ACCEPT_LIST: | ||||
| 		hci_cc_le_clear_accept_list(hdev, skb); | ||||
| 		break; | ||||
| 
 | ||||
| 	case HCI_OP_LE_ADD_TO_WHITE_LIST: | ||||
| 		hci_cc_le_add_to_white_list(hdev, skb); | ||||
| 	case HCI_OP_LE_ADD_TO_ACCEPT_LIST: | ||||
| 		hci_cc_le_add_to_accept_list(hdev, skb); | ||||
| 		break; | ||||
| 
 | ||||
| 	case HCI_OP_LE_DEL_FROM_WHITE_LIST: | ||||
| 		hci_cc_le_del_from_white_list(hdev, skb); | ||||
| 	case HCI_OP_LE_DEL_FROM_ACCEPT_LIST: | ||||
| 		hci_cc_le_del_from_accept_list(hdev, skb); | ||||
| 		break; | ||||
| 
 | ||||
| 	case HCI_OP_LE_READ_SUPPORTED_STATES: | ||||
| @ -5132,7 +5132,7 @@ static void le_conn_complete_evt(struct hci_dev *hdev, u8 status, | ||||
| 
 | ||||
| 		/* If we didn't have a hci_conn object previously
 | ||||
| 		 * but we're in central role this must be something | ||||
| 		 * initiated using a white list. Since white list based | ||||
| 		 * initiated using an accept list. Since accept list based | ||||
| 		 * connections are not "first class citizens" we don't | ||||
| 		 * have full tracking of them. Therefore, we go ahead | ||||
| 		 * with a "best effort" approach of determining the | ||||
| @ -5224,7 +5224,7 @@ static void le_conn_complete_evt(struct hci_dev *hdev, u8 status, | ||||
| 		addr_type = BDADDR_LE_RANDOM; | ||||
| 
 | ||||
| 	/* Drop the connection if the device is blocked */ | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->blacklist, &conn->dst, addr_type)) { | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->reject_list, &conn->dst, addr_type)) { | ||||
| 		hci_conn_drop(conn); | ||||
| 		goto unlock; | ||||
| 	} | ||||
| @ -5380,7 +5380,7 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev, | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	/* Ignore if the device is blocked */ | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->blacklist, addr, addr_type)) | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->reject_list, addr, addr_type)) | ||||
| 		return NULL; | ||||
| 
 | ||||
| 	/* Most controller will fail if we try to create new connections
 | ||||
|  | ||||
| @ -745,17 +745,17 @@ void hci_req_add_le_scan_disable(struct hci_request *req, bool rpa_le_conn) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static void del_from_white_list(struct hci_request *req, bdaddr_t *bdaddr, | ||||
| 				u8 bdaddr_type) | ||||
| static void del_from_accept_list(struct hci_request *req, bdaddr_t *bdaddr, | ||||
| 				 u8 bdaddr_type) | ||||
| { | ||||
| 	struct hci_cp_le_del_from_white_list cp; | ||||
| 	struct hci_cp_le_del_from_accept_list cp; | ||||
| 
 | ||||
| 	cp.bdaddr_type = bdaddr_type; | ||||
| 	bacpy(&cp.bdaddr, bdaddr); | ||||
| 
 | ||||
| 	bt_dev_dbg(req->hdev, "Remove %pMR (0x%x) from whitelist", &cp.bdaddr, | ||||
| 	bt_dev_dbg(req->hdev, "Remove %pMR (0x%x) from accept list", &cp.bdaddr, | ||||
| 		   cp.bdaddr_type); | ||||
| 	hci_req_add(req, HCI_OP_LE_DEL_FROM_WHITE_LIST, sizeof(cp), &cp); | ||||
| 	hci_req_add(req, HCI_OP_LE_DEL_FROM_ACCEPT_LIST, sizeof(cp), &cp); | ||||
| 
 | ||||
| 	if (use_ll_privacy(req->hdev) && | ||||
| 	    hci_dev_test_flag(req->hdev, HCI_ENABLE_LL_PRIVACY)) { | ||||
| @ -774,31 +774,31 @@ static void del_from_white_list(struct hci_request *req, bdaddr_t *bdaddr, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* Adds connection to white list if needed. On error, returns -1. */ | ||||
| static int add_to_white_list(struct hci_request *req, | ||||
| 			     struct hci_conn_params *params, u8 *num_entries, | ||||
| 			     bool allow_rpa) | ||||
| /* Adds connection to accept list if needed. On error, returns -1. */ | ||||
| static int add_to_accept_list(struct hci_request *req, | ||||
| 			      struct hci_conn_params *params, u8 *num_entries, | ||||
| 			      bool allow_rpa) | ||||
| { | ||||
| 	struct hci_cp_le_add_to_white_list cp; | ||||
| 	struct hci_cp_le_add_to_accept_list cp; | ||||
| 	struct hci_dev *hdev = req->hdev; | ||||
| 
 | ||||
| 	/* Already in white list */ | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->le_white_list, ¶ms->addr, | ||||
| 	/* Already in accept list */ | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->le_accept_list, ¶ms->addr, | ||||
| 				   params->addr_type)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	/* Select filter policy to accept all advertising */ | ||||
| 	if (*num_entries >= hdev->le_white_list_size) | ||||
| 	if (*num_entries >= hdev->le_accept_list_size) | ||||
| 		return -1; | ||||
| 
 | ||||
| 	/* White list can not be used with RPAs */ | ||||
| 	/* Accept list can not be used with RPAs */ | ||||
| 	if (!allow_rpa && | ||||
| 	    !hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY) && | ||||
| 	    hci_find_irk_by_addr(hdev, ¶ms->addr, params->addr_type)) { | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	/* During suspend, only wakeable devices can be in whitelist */ | ||||
| 	/* During suspend, only wakeable devices can be in accept list */ | ||||
| 	if (hdev->suspended && !hci_conn_test_flag(HCI_CONN_FLAG_REMOTE_WAKEUP, | ||||
| 						   params->current_flags)) | ||||
| 		return 0; | ||||
| @ -807,9 +807,9 @@ static int add_to_white_list(struct hci_request *req, | ||||
| 	cp.bdaddr_type = params->addr_type; | ||||
| 	bacpy(&cp.bdaddr, ¶ms->addr); | ||||
| 
 | ||||
| 	bt_dev_dbg(hdev, "Add %pMR (0x%x) to whitelist", &cp.bdaddr, | ||||
| 	bt_dev_dbg(hdev, "Add %pMR (0x%x) to accept list", &cp.bdaddr, | ||||
| 		   cp.bdaddr_type); | ||||
| 	hci_req_add(req, HCI_OP_LE_ADD_TO_WHITE_LIST, sizeof(cp), &cp); | ||||
| 	hci_req_add(req, HCI_OP_LE_ADD_TO_ACCEPT_LIST, sizeof(cp), &cp); | ||||
| 
 | ||||
| 	if (use_ll_privacy(hdev) && | ||||
| 	    hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY)) { | ||||
| @ -837,15 +837,15 @@ static int add_to_white_list(struct hci_request *req, | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static u8 update_white_list(struct hci_request *req) | ||||
| static u8 update_accept_list(struct hci_request *req) | ||||
| { | ||||
| 	struct hci_dev *hdev = req->hdev; | ||||
| 	struct hci_conn_params *params; | ||||
| 	struct bdaddr_list *b; | ||||
| 	u8 num_entries = 0; | ||||
| 	bool pend_conn, pend_report; | ||||
| 	/* We allow whitelisting even with RPAs in suspend. In the worst case,
 | ||||
| 	 * we won't be able to wake from devices that use the privacy1.2 | ||||
| 	/* We allow usage of accept list even with RPAs in suspend. In the worst
 | ||||
| 	 * case, we won't be able to wake from devices that use the privacy1.2 | ||||
| 	 * features. Additionally, once we support privacy1.2 and IRK | ||||
| 	 * offloading, we can update this to also check for those conditions. | ||||
| 	 */ | ||||
| @ -855,13 +855,13 @@ static u8 update_white_list(struct hci_request *req) | ||||
| 	    hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY)) | ||||
| 		allow_rpa = true; | ||||
| 
 | ||||
| 	/* Go through the current white list programmed into the
 | ||||
| 	/* Go through the current accept list programmed into the
 | ||||
| 	 * controller one by one and check if that address is still | ||||
| 	 * in the list of pending connections or list of devices to | ||||
| 	 * report. If not present in either list, then queue the | ||||
| 	 * command to remove it from the controller. | ||||
| 	 */ | ||||
| 	list_for_each_entry(b, &hdev->le_white_list, list) { | ||||
| 	list_for_each_entry(b, &hdev->le_accept_list, list) { | ||||
| 		pend_conn = hci_pend_le_action_lookup(&hdev->pend_le_conns, | ||||
| 						      &b->bdaddr, | ||||
| 						      b->bdaddr_type); | ||||
| @ -870,14 +870,14 @@ static u8 update_white_list(struct hci_request *req) | ||||
| 							b->bdaddr_type); | ||||
| 
 | ||||
| 		/* If the device is not likely to connect or report,
 | ||||
| 		 * remove it from the whitelist. | ||||
| 		 * remove it from the accept list. | ||||
| 		 */ | ||||
| 		if (!pend_conn && !pend_report) { | ||||
| 			del_from_white_list(req, &b->bdaddr, b->bdaddr_type); | ||||
| 			del_from_accept_list(req, &b->bdaddr, b->bdaddr_type); | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		/* White list can not be used with RPAs */ | ||||
| 		/* Accept list can not be used with RPAs */ | ||||
| 		if (!allow_rpa && | ||||
| 		    !hci_dev_test_flag(hdev, HCI_ENABLE_LL_PRIVACY) && | ||||
| 		    hci_find_irk_by_addr(hdev, &b->bdaddr, b->bdaddr_type)) { | ||||
| @ -887,27 +887,27 @@ static u8 update_white_list(struct hci_request *req) | ||||
| 		num_entries++; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Since all no longer valid white list entries have been
 | ||||
| 	/* Since all no longer valid accept list entries have been
 | ||||
| 	 * removed, walk through the list of pending connections | ||||
| 	 * and ensure that any new device gets programmed into | ||||
| 	 * the controller. | ||||
| 	 * | ||||
| 	 * If the list of the devices is larger than the list of | ||||
| 	 * available white list entries in the controller, then | ||||
| 	 * available accept list entries in the controller, then | ||||
| 	 * just abort and return filer policy value to not use the | ||||
| 	 * white list. | ||||
| 	 * accept list. | ||||
| 	 */ | ||||
| 	list_for_each_entry(params, &hdev->pend_le_conns, action) { | ||||
| 		if (add_to_white_list(req, params, &num_entries, allow_rpa)) | ||||
| 		if (add_to_accept_list(req, params, &num_entries, allow_rpa)) | ||||
| 			return 0x00; | ||||
| 	} | ||||
| 
 | ||||
| 	/* After adding all new pending connections, walk through
 | ||||
| 	 * the list of pending reports and also add these to the | ||||
| 	 * white list if there is still space. Abort if space runs out. | ||||
| 	 * accept list if there is still space. Abort if space runs out. | ||||
| 	 */ | ||||
| 	list_for_each_entry(params, &hdev->pend_le_reports, action) { | ||||
| 		if (add_to_white_list(req, params, &num_entries, allow_rpa)) | ||||
| 		if (add_to_accept_list(req, params, &num_entries, allow_rpa)) | ||||
| 			return 0x00; | ||||
| 	} | ||||
| 
 | ||||
| @ -921,7 +921,7 @@ static u8 update_white_list(struct hci_request *req) | ||||
| 	    hdev->interleave_scan_state != INTERLEAVE_SCAN_ALLOWLIST) | ||||
| 		return 0x00; | ||||
| 
 | ||||
| 	/* Select filter policy to use white list */ | ||||
| 	/* Select filter policy to use accept list */ | ||||
| 	return 0x01; | ||||
| } | ||||
| 
 | ||||
| @ -1078,20 +1078,20 @@ void hci_req_add_le_passive_scan(struct hci_request *req) | ||||
| 		return; | ||||
| 
 | ||||
| 	bt_dev_dbg(hdev, "interleave state %d", hdev->interleave_scan_state); | ||||
| 	/* Adding or removing entries from the white list must
 | ||||
| 	/* Adding or removing entries from the accept list must
 | ||||
| 	 * happen before enabling scanning. The controller does | ||||
| 	 * not allow white list modification while scanning. | ||||
| 	 * not allow accept list modification while scanning. | ||||
| 	 */ | ||||
| 	filter_policy = update_white_list(req); | ||||
| 	filter_policy = update_accept_list(req); | ||||
| 
 | ||||
| 	/* When the controller is using random resolvable addresses and
 | ||||
| 	 * with that having LE privacy enabled, then controllers with | ||||
| 	 * Extended Scanner Filter Policies support can now enable support | ||||
| 	 * for handling directed advertising. | ||||
| 	 * | ||||
| 	 * So instead of using filter polices 0x00 (no whitelist) | ||||
| 	 * and 0x01 (whitelist enabled) use the new filter policies | ||||
| 	 * 0x02 (no whitelist) and 0x03 (whitelist enabled). | ||||
| 	 * So instead of using filter polices 0x00 (no accept list) | ||||
| 	 * and 0x01 (accept list enabled) use the new filter policies | ||||
| 	 * 0x02 (no accept list) and 0x03 (accept list enabled). | ||||
| 	 */ | ||||
| 	if (hci_dev_test_flag(hdev, HCI_PRIVACY) && | ||||
| 	    (hdev->le_features[0] & HCI_LE_EXT_SCAN_POLICY)) | ||||
| @ -1127,7 +1127,8 @@ void hci_req_add_le_passive_scan(struct hci_request *req) | ||||
| 		interval = hdev->le_scan_interval; | ||||
| 	} | ||||
| 
 | ||||
| 	bt_dev_dbg(hdev, "LE passive scan with whitelist = %d", filter_policy); | ||||
| 	bt_dev_dbg(hdev, "LE passive scan with accept list = %d", | ||||
| 		   filter_policy); | ||||
| 	hci_req_start_scan(req, LE_SCAN_PASSIVE, interval, window, | ||||
| 			   own_addr_type, filter_policy, filter_dup, | ||||
| 			   addr_resolv); | ||||
| @ -1180,7 +1181,7 @@ static void hci_req_set_event_filter(struct hci_request *req) | ||||
| 	/* Always clear event filter when starting */ | ||||
| 	hci_req_clear_event_filter(req); | ||||
| 
 | ||||
| 	list_for_each_entry(b, &hdev->whitelist, list) { | ||||
| 	list_for_each_entry(b, &hdev->accept_list, list) { | ||||
| 		if (!hci_conn_test_flag(HCI_CONN_FLAG_REMOTE_WAKEUP, | ||||
| 					b->current_flags)) | ||||
| 			continue; | ||||
| @ -2623,11 +2624,11 @@ int hci_update_random_address(struct hci_request *req, bool require_privacy, | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static bool disconnected_whitelist_entries(struct hci_dev *hdev) | ||||
| static bool disconnected_accept_list_entries(struct hci_dev *hdev) | ||||
| { | ||||
| 	struct bdaddr_list *b; | ||||
| 
 | ||||
| 	list_for_each_entry(b, &hdev->whitelist, list) { | ||||
| 	list_for_each_entry(b, &hdev->accept_list, list) { | ||||
| 		struct hci_conn *conn; | ||||
| 
 | ||||
| 		conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &b->bdaddr); | ||||
| @ -2659,7 +2660,7 @@ void __hci_req_update_scan(struct hci_request *req) | ||||
| 		return; | ||||
| 
 | ||||
| 	if (hci_dev_test_flag(hdev, HCI_CONNECTABLE) || | ||||
| 	    disconnected_whitelist_entries(hdev)) | ||||
| 	    disconnected_accept_list_entries(hdev)) | ||||
| 		scan = SCAN_PAGE; | ||||
| 	else | ||||
| 		scan = SCAN_DISABLED; | ||||
| @ -3151,7 +3152,7 @@ static int active_scan(struct hci_request *req, unsigned long opt) | ||||
| 	uint16_t interval = opt; | ||||
| 	struct hci_dev *hdev = req->hdev; | ||||
| 	u8 own_addr_type; | ||||
| 	/* White list is not used for discovery */ | ||||
| 	/* Accept list is not used for discovery */ | ||||
| 	u8 filter_policy = 0x00; | ||||
| 	/* Default is to enable duplicates filter */ | ||||
| 	u8 filter_dup = LE_SCAN_FILTER_DUP_ENABLE; | ||||
|  | ||||
| @ -892,7 +892,7 @@ static int hci_sock_release(struct socket *sock) | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg) | ||||
| static int hci_sock_reject_list_add(struct hci_dev *hdev, void __user *arg) | ||||
| { | ||||
| 	bdaddr_t bdaddr; | ||||
| 	int err; | ||||
| @ -902,14 +902,14 @@ static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg) | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 
 | ||||
| 	err = hci_bdaddr_list_add(&hdev->blacklist, &bdaddr, BDADDR_BREDR); | ||||
| 	err = hci_bdaddr_list_add(&hdev->reject_list, &bdaddr, BDADDR_BREDR); | ||||
| 
 | ||||
| 	hci_dev_unlock(hdev); | ||||
| 
 | ||||
| 	return err; | ||||
| } | ||||
| 
 | ||||
| static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg) | ||||
| static int hci_sock_reject_list_del(struct hci_dev *hdev, void __user *arg) | ||||
| { | ||||
| 	bdaddr_t bdaddr; | ||||
| 	int err; | ||||
| @ -919,7 +919,7 @@ static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg) | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 
 | ||||
| 	err = hci_bdaddr_list_del(&hdev->blacklist, &bdaddr, BDADDR_BREDR); | ||||
| 	err = hci_bdaddr_list_del(&hdev->reject_list, &bdaddr, BDADDR_BREDR); | ||||
| 
 | ||||
| 	hci_dev_unlock(hdev); | ||||
| 
 | ||||
| @ -959,12 +959,12 @@ static int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, | ||||
| 	case HCIBLOCKADDR: | ||||
| 		if (!capable(CAP_NET_ADMIN)) | ||||
| 			return -EPERM; | ||||
| 		return hci_sock_blacklist_add(hdev, (void __user *)arg); | ||||
| 		return hci_sock_reject_list_add(hdev, (void __user *)arg); | ||||
| 
 | ||||
| 	case HCIUNBLOCKADDR: | ||||
| 		if (!capable(CAP_NET_ADMIN)) | ||||
| 			return -EPERM; | ||||
| 		return hci_sock_blacklist_del(hdev, (void __user *)arg); | ||||
| 		return hci_sock_reject_list_del(hdev, (void __user *)arg); | ||||
| 	} | ||||
| 
 | ||||
| 	return -ENOIOCTLCMD; | ||||
|  | ||||
| @ -7662,7 +7662,7 @@ static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb) | ||||
| 	 * at least ensure that we ignore incoming data from them. | ||||
| 	 */ | ||||
| 	if (hcon->type == LE_LINK && | ||||
| 	    hci_bdaddr_list_lookup(&hcon->hdev->blacklist, &hcon->dst, | ||||
| 	    hci_bdaddr_list_lookup(&hcon->hdev->reject_list, &hcon->dst, | ||||
| 				   bdaddr_dst_type(hcon))) { | ||||
| 		kfree_skb(skb); | ||||
| 		return; | ||||
| @ -8119,7 +8119,7 @@ static void l2cap_connect_cfm(struct hci_conn *hcon, u8 status) | ||||
| 	dst_type = bdaddr_dst_type(hcon); | ||||
| 
 | ||||
| 	/* If device is blocked, do not create channels for it */ | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->blacklist, &hcon->dst, dst_type)) | ||||
| 	if (hci_bdaddr_list_lookup(&hdev->reject_list, &hcon->dst, dst_type)) | ||||
| 		return; | ||||
| 
 | ||||
| 	/* Find fixed channels and notify them of the new connection. We
 | ||||
|  | ||||
| @ -4064,7 +4064,7 @@ static int get_device_flags(struct sock *sk, struct hci_dev *hdev, void *data, | ||||
| 	memset(&rp, 0, sizeof(rp)); | ||||
| 
 | ||||
| 	if (cp->addr.type == BDADDR_BREDR) { | ||||
| 		br_params = hci_bdaddr_list_lookup_with_flags(&hdev->whitelist, | ||||
| 		br_params = hci_bdaddr_list_lookup_with_flags(&hdev->accept_list, | ||||
| 							      &cp->addr.bdaddr, | ||||
| 							      cp->addr.type); | ||||
| 		if (!br_params) | ||||
| @ -4132,7 +4132,7 @@ static int set_device_flags(struct sock *sk, struct hci_dev *hdev, void *data, | ||||
| 	hci_dev_lock(hdev); | ||||
| 
 | ||||
| 	if (cp->addr.type == BDADDR_BREDR) { | ||||
| 		br_params = hci_bdaddr_list_lookup_with_flags(&hdev->whitelist, | ||||
| 		br_params = hci_bdaddr_list_lookup_with_flags(&hdev->accept_list, | ||||
| 							      &cp->addr.bdaddr, | ||||
| 							      cp->addr.type); | ||||
| 
 | ||||
| @ -5209,7 +5209,7 @@ static int block_device(struct sock *sk, struct hci_dev *hdev, void *data, | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 
 | ||||
| 	err = hci_bdaddr_list_add(&hdev->blacklist, &cp->addr.bdaddr, | ||||
| 	err = hci_bdaddr_list_add(&hdev->reject_list, &cp->addr.bdaddr, | ||||
| 				  cp->addr.type); | ||||
| 	if (err < 0) { | ||||
| 		status = MGMT_STATUS_FAILED; | ||||
| @ -5245,7 +5245,7 @@ static int unblock_device(struct sock *sk, struct hci_dev *hdev, void *data, | ||||
| 
 | ||||
| 	hci_dev_lock(hdev); | ||||
| 
 | ||||
| 	err = hci_bdaddr_list_del(&hdev->blacklist, &cp->addr.bdaddr, | ||||
| 	err = hci_bdaddr_list_del(&hdev->reject_list, &cp->addr.bdaddr, | ||||
| 				  cp->addr.type); | ||||
| 	if (err < 0) { | ||||
| 		status = MGMT_STATUS_INVALID_PARAMS; | ||||
| @ -6736,7 +6736,7 @@ static int add_device(struct sock *sk, struct hci_dev *hdev, | ||||
| 			goto unlock; | ||||
| 		} | ||||
| 
 | ||||
| 		err = hci_bdaddr_list_add_with_flags(&hdev->whitelist, | ||||
| 		err = hci_bdaddr_list_add_with_flags(&hdev->accept_list, | ||||
| 						     &cp->addr.bdaddr, | ||||
| 						     cp->addr.type, 0); | ||||
| 		if (err) | ||||
| @ -6834,7 +6834,7 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev, | ||||
| 		} | ||||
| 
 | ||||
| 		if (cp->addr.type == BDADDR_BREDR) { | ||||
| 			err = hci_bdaddr_list_del(&hdev->whitelist, | ||||
| 			err = hci_bdaddr_list_del(&hdev->accept_list, | ||||
| 						  &cp->addr.bdaddr, | ||||
| 						  cp->addr.type); | ||||
| 			if (err) { | ||||
| @ -6905,7 +6905,7 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev, | ||||
| 			goto unlock; | ||||
| 		} | ||||
| 
 | ||||
| 		list_for_each_entry_safe(b, btmp, &hdev->whitelist, list) { | ||||
| 		list_for_each_entry_safe(b, btmp, &hdev->accept_list, list) { | ||||
| 			device_removed(sk, hdev, &b->bdaddr, b->bdaddr_type); | ||||
| 			list_del(&b->list); | ||||
| 			kfree(b); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user