Bläddra i källkod

Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth

Johan Hedberg says:

====================
pull request: bluetooth 2014-12-17

Here's the first direct (i.e. skipping the wireless tree) bluetooth pull
request for you, intended for 3.19. It's just one patch: a fix from
Marcel for for remote service discovery filtering which also fixes a
'used uninitialized' compiler warning.

Please let me know if there are any issues pulling. Thanks.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 11 år sedan
förälder
incheckning
7dce675b28
1 ändrade filer med 9 tillägg och 5 borttagningar
  1. 9 5
      net/bluetooth/mgmt.c

+ 9 - 5
net/bluetooth/mgmt.c

@@ -7081,13 +7081,15 @@ void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
 		 * kept and checking possible scan response data
 		 * kept and checking possible scan response data
 		 * will be skipped.
 		 * will be skipped.
 		 */
 		 */
-		if (hdev->discovery.uuid_count > 0) {
+		if (hdev->discovery.uuid_count > 0)
 			match = eir_has_uuids(eir, eir_len,
 			match = eir_has_uuids(eir, eir_len,
 					      hdev->discovery.uuid_count,
 					      hdev->discovery.uuid_count,
 					      hdev->discovery.uuids);
 					      hdev->discovery.uuids);
-			if (!match)
-				return;
-		}
+		else
+			match = true;
+
+		if (!match && !scan_rsp_len)
+			return;
 
 
 		/* Copy EIR or advertising data into event */
 		/* Copy EIR or advertising data into event */
 		memcpy(ev->eir, eir, eir_len);
 		memcpy(ev->eir, eir, eir_len);
@@ -7096,8 +7098,10 @@ void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
 		 * provided, results with empty EIR or advertising data
 		 * provided, results with empty EIR or advertising data
 		 * should be dropped since they do not match any UUID.
 		 * should be dropped since they do not match any UUID.
 		 */
 		 */
-		if (hdev->discovery.uuid_count > 0)
+		if (hdev->discovery.uuid_count > 0 && !scan_rsp_len)
 			return;
 			return;
+
+		match = false;
 	}
 	}
 
 
 	if (dev_class && !eir_has_data_type(ev->eir, eir_len, EIR_CLASS_OF_DEV))
 	if (dev_class && !eir_has_data_type(ev->eir, eir_len, EIR_CLASS_OF_DEV))