lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 6 Jan 2009 12:51:39 +0300
From:	Andrey Borzenkov <arvidjaar@...l.ru>
To:	Dave <kilroyd@...glemail.com>
Cc:	orinoco-devel@...ts.sourceforge.net,
	linux-wireless@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: 2.6.28: warn_slowpath in orinoco receive path

On Понедельник 05 января 2009 23:32:13 Dave wrote:

> Looks like the RX interrupt occurred at an inconvenient point during
> the list_del call in the RX tasklet (orinoco_rx_isr_tasklet).
>
> The call needs to be protected from the RX interrupt.
>
> Quick patch included below - I'm not sure that the local_irq_*
> functions are the ones we need, but it compiles and runs.
>

As was already pointed out, we can't be sure tasklet runs on the same 
CPU as interrupt handler. What about attached patch? It actually moves 
list to temporary head which can be processed without races; the idea is 
to minimize amount and number of times we need to disable interrupts. 
Patch compiles and runs :)

> I don't suppose you're able to reproduce the error?
>

Right.

By the way. Agere driver takes different approach. The only thing it 
does in interrupt handler directly is to turn off Hermes interrupts and 
start off another thread to process pending events. After all events are 
processed interrupts are enabled again. It means the bulk of code is 
executed in non-interrupt context; and looking how much is done in 
orinoco driver during interrupt processing, this does not sound like bad 
idea. Do you see any obvious cons here?

Download attachment "orinoco-rx_list-protect" of type "message/rfc822" (4493 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ