2013-11-05 20:21:45

by Dan Carpenter

[permalink] [raw]
Subject: [patch] wcn36xx: missing unlocks on error paths

There are several places which are missing unlocks.

Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
index f8c3a10..de9eb2c 100644
--- a/drivers/net/wireless/ath/wcn36xx/smd.c
+++ b/drivers/net/wireless/ath/wcn36xx/smd.c
@@ -1286,7 +1286,8 @@ int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif,
} else {
wcn36xx_err("Beacon is to big: beacon size=%d\n",
msg_body.beacon_length);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto out;
}
memcpy(msg_body.bssid, vif->addr, ETH_ALEN);

@@ -1327,7 +1328,8 @@ int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn,
if (skb->len > BEACON_TEMPLATE_SIZE) {
wcn36xx_warn("probe response template is too big: %d\n",
skb->len);
- return -E2BIG;
+ ret = -E2BIG;
+ goto out;
}

msg.probe_resp_template_len = skb->len;
@@ -1606,7 +1608,8 @@ int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn,
/* TODO: it also support ARP response type */
} else {
wcn36xx_warn("unknow keep alive packet type %d\n", packet_type);
- return -EINVAL;
+ ret = -EINVAL;
+ goto out;
}

PREPARE_HAL_BUF(wcn->hal_buf, msg_body);


2013-11-06 07:38:34

by Eugene Krasnikov

[permalink] [raw]
Subject: Re: [patch] wcn36xx: missing unlocks on error paths

Looks good to me, thanx!

On Tue, Nov 5, 2013 at 8:21 PM, Dan Carpenter <[email protected]> wrote:
> There are several places which are missing unlocks.
>
> Signed-off-by: Dan Carpenter <[email protected]>
>
> diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
> index f8c3a10..de9eb2c 100644
> --- a/drivers/net/wireless/ath/wcn36xx/smd.c
> +++ b/drivers/net/wireless/ath/wcn36xx/smd.c
> @@ -1286,7 +1286,8 @@ int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif,
> } else {
> wcn36xx_err("Beacon is to big: beacon size=%d\n",
> msg_body.beacon_length);
> - return -ENOMEM;
> + ret = -ENOMEM;
> + goto out;
> }
> memcpy(msg_body.bssid, vif->addr, ETH_ALEN);
>
> @@ -1327,7 +1328,8 @@ int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn,
> if (skb->len > BEACON_TEMPLATE_SIZE) {
> wcn36xx_warn("probe response template is too big: %d\n",
> skb->len);
> - return -E2BIG;
> + ret = -E2BIG;
> + goto out;
> }
>
> msg.probe_resp_template_len = skb->len;
> @@ -1606,7 +1608,8 @@ int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn,
> /* TODO: it also support ARP response type */
> } else {
> wcn36xx_warn("unknow keep alive packet type %d\n", packet_type);
> - return -EINVAL;
> + ret = -EINVAL;
> + goto out;
> }
>
> PREPARE_HAL_BUF(wcn->hal_buf, msg_body);



--
Best regards,
Eugene

2013-11-06 07:40:09

by Eugene Krasnikov

[permalink] [raw]
Subject: Re: [patch] wcn36xx: missing unlocks on error paths

Forgot to mention that there was an overlap with a patch from Wei
Yongjun but that i will resolve myself because i was too slow with
applying patches.

On Wed, Nov 6, 2013 at 7:38 AM, Eugene Krasnikov <[email protected]> wrote:
> Looks good to me, thanx!
>
> On Tue, Nov 5, 2013 at 8:21 PM, Dan Carpenter <[email protected]> wrote:
>> There are several places which are missing unlocks.
>>
>> Signed-off-by: Dan Carpenter <[email protected]>
>>
>> diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
>> index f8c3a10..de9eb2c 100644
>> --- a/drivers/net/wireless/ath/wcn36xx/smd.c
>> +++ b/drivers/net/wireless/ath/wcn36xx/smd.c
>> @@ -1286,7 +1286,8 @@ int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif,
>> } else {
>> wcn36xx_err("Beacon is to big: beacon size=%d\n",
>> msg_body.beacon_length);
>> - return -ENOMEM;
>> + ret = -ENOMEM;
>> + goto out;
>> }
>> memcpy(msg_body.bssid, vif->addr, ETH_ALEN);
>>
>> @@ -1327,7 +1328,8 @@ int wcn36xx_smd_update_proberesp_tmpl(struct wcn36xx *wcn,
>> if (skb->len > BEACON_TEMPLATE_SIZE) {
>> wcn36xx_warn("probe response template is too big: %d\n",
>> skb->len);
>> - return -E2BIG;
>> + ret = -E2BIG;
>> + goto out;
>> }
>>
>> msg.probe_resp_template_len = skb->len;
>> @@ -1606,7 +1608,8 @@ int wcn36xx_smd_keep_alive_req(struct wcn36xx *wcn,
>> /* TODO: it also support ARP response type */
>> } else {
>> wcn36xx_warn("unknow keep alive packet type %d\n", packet_type);
>> - return -EINVAL;
>> + ret = -EINVAL;
>> + goto out;
>> }
>>
>> PREPARE_HAL_BUF(wcn->hal_buf, msg_body);
>
>
>
> --
> Best regards,
> Eugene



--
Best regards,
Eugene