Commit 920c8300 authored by Andre Guedes's avatar Andre Guedes Committed by Gustavo Padovan
Browse files

Bluetooth: Check hci_req_run returning value in __hci_req_sync



Since hci_req_run will be returning more than one error code, we
should check its returning value in __hci_req_sync.

Signed-off-by: default avatarAndre Guedes <andre.guedes@openbossa.org>
Acked-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
parent 382b0c39
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -100,13 +100,16 @@ static int __hci_req_sync(struct hci_dev *hdev,
	err = hci_req_run(&req, hci_req_sync_complete);
	if (err < 0) {
		hdev->req_status = 0;
		/* req_run will fail if the request did not add any
		 * commands to the queue, something that can happen when
		 * a request with conditionals doesn't trigger any
		 * commands to be sent. This is normal behavior and
		 * should not trigger an error return.

		/* ENODATA means the HCI request command queue is empty.
		 * This can happen when a request with conditionals doesn't
		 * trigger any commands to be sent. This is normal behavior
		 * and should not trigger an error return.
		 */
		if (err == -ENODATA)
			return 0;

		return err;
	}

	add_wait_queue(&hdev->req_wait_q, &wait);