[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4962A6B4.7060309@shaw.ca>
Date: Mon, 05 Jan 2009 18:32:52 -0600
From: Robert Hancock <hancockr@...w.ca>
To: Jiri Slaby
<public-jirislaby-Re5JQEeQqe8AvxtiuMwx3w@...h.gmane.org>
CC: Dave <public-kilroyd-gM/Ye1E23mwN+BqQ9rBEUg@...h.gmane.org>,
Andrey Borzenkov <public-arvidjaar-JGs/UdohzUI@...h.gmane.org>,
public-orinoco-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@...h.gmane.org,
public-linux-wireless-u79uwXL29TY76Z2rM5mHXA@...h.gmane.org,
public-linux-kernel-u79uwXL29TY76Z2rM5mHXA@...h.gmane.org
Subject: Re: 2.6.28: warn_slowpath in orinoco receive path
Jiri Slaby wrote:
> On 01/05/2009 09:32 PM, Dave wrote:
>> --- a/drivers/net/wireless/orinoco/orinoco.c
>> +++ b/drivers/net/wireless/orinoco/orinoco.c
>> @@ -1616,9 +1616,15 @@ static void orinoco_rx_isr_tasklet(unsigned long
>> data)
>>
>> /* extract desc and skb from queue */
>> list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) {
>> + unsigned long flags;
>> +
>> desc = rx_data->desc;
>> skb = rx_data->skb;
>> +
>> + local_irq_save(flags);
>> list_del(&rx_data->list);
>> + local_irq_restore(flags);
>> +
>
> Hi,
>
> another processor still can see inconsistent state, spinlock should be taken.
> Or, am I missing something?
Think you're right, this should be spin_lock_irq or spin_lock_irqsave on
some lock. Otherwise the interrupt could still occur on some other CPU
and hit the race.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists