Preempt count check when leaving IRQ? (Was: Re: 2.5.44 (now 2.5.46-c929): Strange oopses triggered by .)

Roger Larsson (roger.larsson@skelleftea.mail.telia.com)
Thu, 7 Nov 2002 01:41:09 +0100


On Wednesday 06 November 2002 22.49, Petr Vandrovec wrote:
> On 6 Nov 02 at 23:09, Petr Vandrovec wrote:
> >
> > I'm getting really nervous :-( Is kdb able to track who caused unbalanced
> > in_atomic() incrementation?
> >
> > After more than week of stable system I run simple
> > "arp vanicka.vc.cvut.cz" few minutes ago, and after arp output I got
> > sleeping function called from illegal context, quickly followed by two
> > scheduling while atomic, and finally it died because of userspace faults
> > when in_atomic() is != 0 are treated as kernel ones...
> >
> > As I saw nobody else reporting this or simillar problem, I'll start
> > looking at e100 driver I use. Maybe it did not occured because of I
> > was running -acX kernels since 25th Oct until yesterday. Anybody knows?
>
> -acX use special stack for hardware IRQs, and preempt_count() is
> copied only from task -> hwirq, not other way around (because of it
> assumes that preempt_count() is same on exit as it was on enter...).
> That's probably reason why -acX was working for me almost two weeks,
> but as soon as I returned back to non-ac, it died.
> Petr Vandrovec
> vandrove@vc.cvut.cz
>

This is another CHECK to do then.

Make a copy of preempt count when entering an IRQ.
Check that we have the same value when leaving.
(using -acX we only have to add the check when leaving)

/RogerL

-- 
Roger Larsson
Skellefteċ
Sweden

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