Re: 1.3.94 Ooops For Sale...

David S. Miller (davem@caip.rutgers.edu)
Mon, 29 Apr 1996 21:10:00 -0400


From: "A.N.Kuznetsov" <kuznet@ms2.inr.ac.ru>
Date: Mon, 29 Apr 1996 19:16:57 +0400 (MSD)

The first problem is in wrong kerneld interface.
kerneld_send decides whether call should be atomic or not
on the base of intr_count.
arp.c (and, possibly another calls of kerneld. Bjorn, please check it!)
assumes, that it DOES NOT SLEEP!
Workaround: intr_count++ ... intr_count-- around kerneld_send

Ick... why not have a seperate kernel thread do all this stuff that
can sleep. Take a look at arch/sparc/mm/asyncd.c for an easy and
efficient method to get things done out of intterupt context in the
kernel.

Later,
David S. Miller
davem@caip.rutgers.edu