On 05/08/2013 04:36 PM, Johannes Berg wrote:
On Wed, 2013-05-08 at 16:31 +0800, Wei.Yang@xxxxxxxxxxxxx wrote:
From: Wei Yang <Wei.Yang@xxxxxxxxxxxxx>
In case of RT kernel, the return value of softirq_count() always
equal to 0, we need to use in_serving_softirq to decide whether
the current context is in softirq context.
- WARN_ON_ONCE(softirq_count() == 0);
+ WARN_ON_ONCE(!in_serving_softirq());
As I understand the code, I don't believe this change to be correct. The
function can happily run with softirqs disabled (e.g.
local_bh_disable()), for example by being called via ieee80211_rx_ni().
As I understand in_serving_softirq(), it checks that it's actually
inside handling a softirq, no?
Yes, I am not an expert on wireless, so I am not sure whether
ieee80211_rx will be called with softirqs disabled.
Just as you said, if it can run with softirqs diabled, the fix is not
correct. sorry for it.
Thanks
Wei
johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html