From: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
To: Kalle Valo <kvalo@qca.qualcomm.com>
Cc: <linux-wireless@vger.kernel.org>, <ath6kl-devel@qualcomm.com>
Subject: Re: [PATCH V2 1/2] ath6kl: Fix race in aggregation reorder logic
Date: Tue, 29 May 2012 16:51:22 +0530 [thread overview]
Message-ID: <4FC4B132.60209@qca.qualcomm.com> (raw)
In-Reply-To: <4FC4AF40.3060702@qca.qualcomm.com>
On Tuesday 29 May 2012 04:43 PM, Kalle Valo wrote:
> On 05/25/2012 01:19 PM, Vasanthakumar Thiagarajan wrote:
>> There are many places where tid data are accessed without
>> the lock (rxtid->lock), this can lead to a race condition
>> when the timeout handler for aggregatin reorder and the
>> receive function are getting executed at the same time.
>> Fix this race, but still there are races which can not
>> be fixed without rewriting the whole aggregation reorder
>> logic, for now fix the obvious ones.
>>
>> Signed-off-by: Vasanthakumar Thiagarajan<vthiagar@qca.qualcomm.com>
>
> [...]
>
>> @@ -1188,6 +1189,7 @@ static bool aggr_process_recv_frm(struct aggr_info_conn *agg_conn, u8 tid,
>> rxtid->progress = true;
>> else
>> for (idx = 0 ; idx< rxtid->hold_q_sz; idx++) {
>> + spin_lock_bh(&rxtid->lock);
>> if (rxtid->hold_q[idx].skb) {
>> /*
>> * There is a frame in the queue and no
>> @@ -1201,8 +1203,10 @@ static bool aggr_process_recv_frm(struct aggr_info_conn *agg_conn, u8 tid,
>> HZ * (AGGR_RX_TIMEOUT) / 1000));
>> rxtid->progress = false;
>> rxtid->timer_mon = true;
>> + spin_unlock_bh(&rxtid->lock);
>> break;
>> }
>> + spin_unlock_bh(&rxtid->lock);
>> }
>
> Here you take and release the lock multiple times inside the loop. Why
> not take the lock before the loop?
Sounds better to acquire the lock before loop and releasing it after
the loop. I was kind of thinking about protecting the data only
in critical section, but in this case we can bring the loop
in the lock, it is not going to make much difference. I'll change
this, thanks.
Vasanth
next prev parent reply other threads:[~2012-05-29 11:21 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-25 10:19 [PATCH V2 1/2] ath6kl: Fix race in aggregation reorder logic Vasanthakumar Thiagarajan
2012-05-25 10:19 ` [PATCH V2 2/2] ath6kl: Fix unstable downlink throughput Vasanthakumar Thiagarajan
2012-05-29 11:15 ` Kalle Valo
2012-05-29 11:13 ` [PATCH V2 1/2] ath6kl: Fix race in aggregation reorder logic Kalle Valo
2012-05-29 11:21 ` Vasanthakumar Thiagarajan [this message]
2012-05-29 11:31 ` Kalle Valo
2012-05-30 6:59 ` Vasanthakumar Thiagarajan
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=4FC4B132.60209@qca.qualcomm.com \
--to=vthiagar@qca.qualcomm.com \
--cc=ath6kl-devel@qualcomm.com \
--cc=kvalo@qca.qualcomm.com \
--cc=linux-wireless@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).