Thread (1 message) 1 message, 1 author, 2002-05-21

Re: System crash in tcp_fragment()

From: george anzinger <hidden>
Date: 2002-05-21 06:08:38

Nivedita Singhvi wrote:
On Mon, 20 May 2002, David S. Miller wrote:
quoted
Such rule does not even make this piece of code legal.  Consider:

task1:cpu0:   x = counters[smp_processor_id()];
      cpu0:   PREEMPT
task2:cpu0:   x = counters[smp_processor_id()];
task2:cpu0:   counters[smp_processor_id()] = x + 1;
      cpu0:   PREEMPT
task1:cpu0:   counters[smp_processor_id()] = x + 1;
              full garbage

But it does bring up important point, preemption people need to
fully audit entire networking.

It is totally broken by preemption the more I think about it.

At the very beginning, all the SNMP counter bumping tricks will
totally fail with preemption enabled.
May be someone could tell me if these matter.  If you are
bumping a counter and you switch cpus in the middle, a.)
does it matter? and b.) if so which cpu should get the
count?  I sort of thought that, if this were going on, it
did not really matter as long as some counter was bumped.
quoted
A lot of the synchronization between process context and interrupt
context is based on per-cpu data structures or simple locks
(without disabling irq's globally) eg:

softnet_data queue (we only disable local interrupts), and
synchronization between tcp_readmsg() and tcp_rcv() over
the receive queue would get confused (lock.users flag would
be different on another CPU)..
Disabling local interrupts also disables preemption, as does
interrupt context.
Wonder how any of it could possibly work..
It seems to take a LOT of work to break it.  Even then, I
think this problem at hand is in the driver (a new one from
the intel folks).

-- 
George Anzinger   george@mvista.com
High-res-timers: 
http://sourceforge.net/projects/high-res-timers/
Real time sched:  http://sourceforge.net/projects/rtsched/
Preemption patch:
http://www.kernel.org/pub/linux/kernel/people/rml
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help