2013-10-10 10:08:10

by Marcel Holtmann

[permalink] [raw]
Subject: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

The variable val in the set_ssp() function of the management interface
is not needed. Just use cp->val directly since its input values have
already been validated.

Signed-off-by: Marcel Holtmann <[email protected]>
---
net/bluetooth/mgmt.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index a9d7506..2fb4d35 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -1290,7 +1290,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
{
struct mgmt_mode *cp = data;
struct pending_cmd *cmd;
- u8 val, status;
+ u8 status;
int err;

BT_DBG("request for %s", hdev->name);
@@ -1309,8 +1309,6 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)

hci_dev_lock(hdev);

- val = !!cp->val;
-
if (!hdev_is_powered(hdev)) {
bool changed = false;

@@ -1335,7 +1333,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
goto failed;
}

- if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) == val) {
+ if (!!cp->val == test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
err = send_settings_rsp(sk, MGMT_OP_SET_SSP, hdev);
goto failed;
}
@@ -1346,7 +1344,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
goto failed;
}

- err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, sizeof(val), &val);
+ err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &cp->val);
if (err < 0) {
mgmt_pending_remove(cmd);
goto failed;
--
1.8.3.1



2013-10-10 11:07:08

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

Hi Andrei,

>> The variable val in the set_ssp() function of the management interface
>> is not needed. Just use cp->val directly since its input values have
>> already been validated.
>>
>> Signed-off-by: Marcel Holtmann <[email protected]>
>> ---
>> net/bluetooth/mgmt.c | 8 +++-----
>> 1 file changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
>> index a9d7506..2fb4d35 100644
>> --- a/net/bluetooth/mgmt.c
>> +++ b/net/bluetooth/mgmt.c
>> @@ -1290,7 +1290,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
>> {
>> struct mgmt_mode *cp = data;
>> struct pending_cmd *cmd;
>> - u8 val, status;
>> + u8 status;
>> int err;
>>
>> BT_DBG("request for %s", hdev->name);
>> @@ -1309,8 +1309,6 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
>>
>> hci_dev_lock(hdev);
>>
>> - val = !!cp->val;
>> -
>> if (!hdev_is_powered(hdev)) {
>> bool changed = false;
>>
>> @@ -1335,7 +1333,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
>> goto failed;
>> }
>>
>> - if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) == val) {
>> + if (!!cp->val == test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
>> err = send_settings_rsp(sk, MGMT_OP_SET_SSP, hdev);
>> goto failed;
>> }
>> @@ -1346,7 +1344,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
>> goto failed;
>> }
>>
>> - err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, sizeof(val), &val);
>> + err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &cp->val);
>
> I think sizeof is read better then magic number

if you look at the whole code base, for cases of single u8, we use the "magic" number 1 a lot to keep the lines shorter.

Regards

Marcel


2013-10-10 11:06:12

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

Hi Anderson,

>> The variable val in the set_ssp() function of the management interface
>> is not needed. Just use cp->val directly since its input values have
>> already been validated.
>> [...]
>> - if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) == val) {
>> + if (!!cp->val == test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
>
> In this case, the "!!" trick is unnecessary as the only allowed values
> are 0x00 and 0x01 (I believe this has been removed in other similar
> cases).

it has not been removed. That is why I changed it and made it similar to the other case.

Regards

Marcel


2013-10-10 11:00:41

by Anderson Lizardo

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

Hi Marcel,

On Thu, Oct 10, 2013 at 6:08 AM, Marcel Holtmann <[email protected]> wrote:
> The variable val in the set_ssp() function of the management interface
> is not needed. Just use cp->val directly since its input values have
> already been validated.
> [...]
> - if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) == val) {
> + if (!!cp->val == test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {

In this case, the "!!" trick is unnecessary as the only allowed values
are 0x00 and 0x01 (I believe this has been removed in other similar
cases).

Best Regards,
--
Anderson Lizardo
Instituto Nokia de Tecnologia - INdT
Manaus - Brazil

2013-10-10 11:01:19

by Andrei Emeltchenko

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

Hi Marcel,

On Thu, Oct 10, 2013 at 03:08:10AM -0700, Marcel Holtmann wrote:
> The variable val in the set_ssp() function of the management interface
> is not needed. Just use cp->val directly since its input values have
> already been validated.
>
> Signed-off-by: Marcel Holtmann <[email protected]>
> ---
> net/bluetooth/mgmt.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
> index a9d7506..2fb4d35 100644
> --- a/net/bluetooth/mgmt.c
> +++ b/net/bluetooth/mgmt.c
> @@ -1290,7 +1290,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
> {
> struct mgmt_mode *cp = data;
> struct pending_cmd *cmd;
> - u8 val, status;
> + u8 status;
> int err;
>
> BT_DBG("request for %s", hdev->name);
> @@ -1309,8 +1309,6 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
>
> hci_dev_lock(hdev);
>
> - val = !!cp->val;
> -
> if (!hdev_is_powered(hdev)) {
> bool changed = false;
>
> @@ -1335,7 +1333,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
> goto failed;
> }
>
> - if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags) == val) {
> + if (!!cp->val == test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
> err = send_settings_rsp(sk, MGMT_OP_SET_SSP, hdev);
> goto failed;
> }
> @@ -1346,7 +1344,7 @@ static int set_ssp(struct sock *sk, struct hci_dev *hdev, void *data, u16 len)
> goto failed;
> }
>
> - err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, sizeof(val), &val);
> + err = hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &cp->val);

I think sizeof is read better then magic number

Best regards
Andrei Emeltchenko


2013-10-10 10:56:06

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: Remove unneeded val variable when setting SSP

Hi Marcel,

On Thu, Oct 10, 2013, Marcel Holtmann wrote:
> The variable val in the set_ssp() function of the management interface
> is not needed. Just use cp->val directly since its input values have
> already been validated.
>
> Signed-off-by: Marcel Holtmann <[email protected]>
> ---
> net/bluetooth/mgmt.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)

Both patches have been applied to bluetooth-next. Thanks.

Johan