mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	Bluetooth: Fix bogus check for re-auth no supported with non-ssp
This reverts19f8def031"Bluetooth: Fix auth_complete_evt for legacy units" which seems to be working around a bug on a broken controller rather then any limitation imposed by the Bluetooth spec, in fact if there ws not possible to re-auth the command shall fail not succeed. Fixes:19f8def031("Bluetooth: Fix auth_complete_evt for legacy units") Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
		
							parent
							
								
									a2e7707bba
								
							
						
					
					
						commit
						d03376c185
					
				
					 3 changed files with 5 additions and 15 deletions
				
			
		| 
						 | 
					@ -956,7 +956,6 @@ void hci_inquiry_cache_flush(struct hci_dev *hdev);
 | 
				
			||||||
/* ----- HCI Connections ----- */
 | 
					/* ----- HCI Connections ----- */
 | 
				
			||||||
enum {
 | 
					enum {
 | 
				
			||||||
	HCI_CONN_AUTH_PEND,
 | 
						HCI_CONN_AUTH_PEND,
 | 
				
			||||||
	HCI_CONN_REAUTH_PEND,
 | 
					 | 
				
			||||||
	HCI_CONN_ENCRYPT_PEND,
 | 
						HCI_CONN_ENCRYPT_PEND,
 | 
				
			||||||
	HCI_CONN_RSWITCH_PEND,
 | 
						HCI_CONN_RSWITCH_PEND,
 | 
				
			||||||
	HCI_CONN_MODE_CHANGE_PEND,
 | 
						HCI_CONN_MODE_CHANGE_PEND,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2449,12 +2449,10 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
 | 
				
			||||||
		hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
 | 
							hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
 | 
				
			||||||
			     sizeof(cp), &cp);
 | 
								     sizeof(cp), &cp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* If we're already encrypted set the REAUTH_PEND flag,
 | 
							/* Set the ENCRYPT_PEND to trigger encryption after
 | 
				
			||||||
		 * otherwise set the ENCRYPT_PEND.
 | 
							 * authentication.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		if (test_bit(HCI_CONN_ENCRYPT, &conn->flags))
 | 
							if (!test_bit(HCI_CONN_ENCRYPT, &conn->flags))
 | 
				
			||||||
			set_bit(HCI_CONN_REAUTH_PEND, &conn->flags);
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
 | 
								set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3500,14 +3500,8 @@ static void hci_auth_complete_evt(struct hci_dev *hdev, void *data,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!ev->status) {
 | 
						if (!ev->status) {
 | 
				
			||||||
		clear_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
 | 
							clear_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
 | 
				
			||||||
 | 
							set_bit(HCI_CONN_AUTH, &conn->flags);
 | 
				
			||||||
		if (!hci_conn_ssp_enabled(conn) &&
 | 
							conn->sec_level = conn->pending_sec_level;
 | 
				
			||||||
		    test_bit(HCI_CONN_REAUTH_PEND, &conn->flags)) {
 | 
					 | 
				
			||||||
			bt_dev_info(hdev, "re-auth of legacy device is not possible.");
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			set_bit(HCI_CONN_AUTH, &conn->flags);
 | 
					 | 
				
			||||||
			conn->sec_level = conn->pending_sec_level;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
 | 
							if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
 | 
				
			||||||
			set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
 | 
								set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
 | 
				
			||||||
| 
						 | 
					@ -3516,7 +3510,6 @@ static void hci_auth_complete_evt(struct hci_dev *hdev, void *data,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clear_bit(HCI_CONN_AUTH_PEND, &conn->flags);
 | 
						clear_bit(HCI_CONN_AUTH_PEND, &conn->flags);
 | 
				
			||||||
	clear_bit(HCI_CONN_REAUTH_PEND, &conn->flags);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (conn->state == BT_CONFIG) {
 | 
						if (conn->state == BT_CONFIG) {
 | 
				
			||||||
		if (!ev->status && hci_conn_ssp_enabled(conn)) {
 | 
							if (!ev->status && hci_conn_ssp_enabled(conn)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue