lkml.org 
[lkml]   [1999]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectpossible SMP-race, 2.2.9 & 2.3.3
__global_cli() cannot stop the other processors if it is called with
interrupts disabled.

arch/i386/kernel/irq.c:
> A global "cli()" while in an interrupts context turns
> into just a local cli(). Interrupts should use a spinlock
> for the (very unlikely) case they ever want to protect
> against each other.

I've added a check for that event (__global_cli() called with IF
cleared), and this happens often.
Do we have to fix that? (i.e. convert the callers from __global_cli() to
a spinlock?)


I've found one codpath:
-> ide_end_request(): acquires io_request_lock, clear local interrupts.
-> calls end_that_request_first()
-> calls end_buffer_io_async() <<<<<<<<<< calls cli(), needs global
sync.

Regards,
Manfred



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:51    [W:0.022 / U:3.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site