From: Marcel Holtmann <marcel@holtmann.org>
To: Johan Hedberg <johan.hedberg@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH 5/8] Bluetooth: Fix returning proper command status for start_discovery
Date: Wed, 09 Jan 2013 12:10:25 -0800 [thread overview]
Message-ID: <1357762225.1806.55.camel@aeonflux> (raw)
In-Reply-To: <1357738180-4128-6-git-send-email-johan.hedberg@gmail.com>
Hi Johan,
> Management commands should whenever possible fail with proper command
> status or command complete events. This patch fixes the
> mgmt_start_discovery command to do this for the failure cases where an
> incorrect parameter value was passed to it ("not supported" if the
> parameter value was valid but the controller doesn't support it and
> "invalid params" if it isn't valid at all).
>
> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
> ---
> net/bluetooth/mgmt.c | 35 +++++++++++++++++++++++++----------
> 1 file changed, 25 insertions(+), 10 deletions(-)
>
> diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
> index 6e6de9e..4f60540 100644
> --- a/net/bluetooth/mgmt.c
> +++ b/net/bluetooth/mgmt.c
> @@ -2377,31 +2377,46 @@ static int start_discovery(struct sock *sk, struct hci_dev *hdev,
>
> switch (hdev->discovery.type) {
> case DISCOV_TYPE_BREDR:
> - if (lmp_bredr_capable(hdev))
> + if (lmp_bredr_capable(hdev)) {
> err = hci_do_inquiry(hdev, INQUIRY_LEN_BREDR);
> - else
> - err = -ENOTSUPP;
> + } else {
> + err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY,
> + MGMT_STATUS_NOT_SUPPORTED);
> + mgmt_pending_remove(cmd);
> + goto failed;
> + }
I would have done this the other way around.
if (!lmp_bredr_capable(...)) {
...
got failed;
}
err = hci_do_inquiry(hdev, INQUIRY_LEN_BREDR);
break;
> break;
>
> case DISCOV_TYPE_LE:
> - if (lmp_host_le_capable(hdev))
> + if (lmp_host_le_capable(hdev)) {
> err = hci_le_scan(hdev, LE_SCAN_TYPE, LE_SCAN_INT,
> LE_SCAN_WIN, LE_SCAN_TIMEOUT_LE_ONLY);
> - else
> - err = -ENOTSUPP;
> + } else {
> + err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY,
> + MGMT_STATUS_NOT_SUPPORTED);
> + mgmt_pending_remove(cmd);
> + goto failed;
> + }
And same here.
> break;
>
> case DISCOV_TYPE_INTERLEAVED:
> - if (lmp_host_le_capable(hdev) && lmp_bredr_capable(hdev))
> + if (lmp_host_le_capable(hdev) && lmp_bredr_capable(hdev)) {
> err = hci_le_scan(hdev, LE_SCAN_TYPE, LE_SCAN_INT,
> LE_SCAN_WIN,
> LE_SCAN_TIMEOUT_BREDR_LE);
> - else
> - err = -ENOTSUPP;
> + } else {
> + err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY,
> + MGMT_STATUS_NOT_SUPPORTED);
> + mgmt_pending_remove(cmd);
> + goto failed;
> + }
> break;
Also here.
>
> default:
> - err = -EINVAL;
> + err = cmd_status(sk, hdev->id, MGMT_OP_START_DISCOVERY,
> + MGMT_STATUS_INVALID_PARAMS);
> + mgmt_pending_remove(cmd);
> + goto failed;
> }
>
> if (err < 0)
Regards
Marcel
next prev parent reply other threads:[~2013-01-09 20:10 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-09 13:29 [PATCH 0/8] Bluetooth: Various mgmt fixes Johan Hedberg
2013-01-09 13:29 ` [PATCH 1/8] Bluetooth: Fix missing command complete event for mgmt_confirm_name Johan Hedberg
2013-01-09 20:02 ` Marcel Holtmann
2013-01-09 13:29 ` [PATCH 2/8] Bluetooth: Fix missing command complete for mgmt_load_long_term_keys Johan Hedberg
2013-01-09 20:04 ` Marcel Holtmann
2013-01-09 13:29 ` [PATCH 3/8] Bluetooth: Fix checking for valid device class values Johan Hedberg
2013-01-09 20:07 ` Marcel Holtmann
2013-01-09 13:29 ` [PATCH 4/8] Bluetooth: Fix accepting set_dev_class for non-BR/EDR controllers Johan Hedberg
2013-01-09 20:08 ` Marcel Holtmann
2013-01-09 13:29 ` [PATCH 5/8] Bluetooth: Fix returning proper command status for start_discovery Johan Hedberg
2013-01-09 20:10 ` Marcel Holtmann [this message]
2013-01-10 12:54 ` [PATCH 5/8 v2] " Johan Hedberg
2013-01-10 16:24 ` Marcel Holtmann
2013-01-10 18:30 ` Gustavo Padovan
2013-01-09 13:29 ` [PATCH 6/8] Bluetooth: Move non-critical sections outside of the dev lock Johan Hedberg
2013-01-09 20:12 ` Marcel Holtmann
2013-01-09 13:29 ` [PATCH 7/8] Bluetooth: Fix checking for exact values of boolean mgmt parameters Johan Hedberg
2013-01-09 13:45 ` Anderson Lizardo
2013-01-09 13:48 ` Johan Hedberg
2013-01-09 13:53 ` Anderson Lizardo
2013-01-09 14:05 ` [PATCH 7/8 v2] " Johan Hedberg
2013-01-09 20:13 ` Marcel Holtmann
2013-01-10 8:24 ` Gustavo Padovan
2013-01-09 13:29 ` [PATCH 8/8] Bluetooth: Fix sending incorrect new_settings for mgmt_set_powered Johan Hedberg
2013-01-10 8:41 ` Marcel Holtmann
2013-01-10 18:31 ` Gustavo Padovan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357762225.1806.55.camel@aeonflux \
--to=marcel@holtmann.org \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.