Re: Preempt count check when leaving IRQ? (Was: Re: 2.5.44

Petr Vandrovec (VANDROVE@vc.cvut.cz)
Thu, 7 Nov 2002 23:52:01 +0200


On 7 Nov 02 at 1:41, Roger Larsson wrote:
>
> 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)

Hi Dave,
I have bad news for you: doing 'cat /proc/net/arp' sometime kills
my system hard.

Problem is with reading /proc/net/arp: arp_seq_start does
read_lock_bh(&arp_tbl.lock), and this lock is held and held and held...
as long as neigh_get_bucket() returns non-NULL, or until reading
of /proc/net/arp stops...

... and so it sometime happens that lock is still held when accessing
userspace while copying data in read, and shortly after that we run
userspace with (1) this lock held and (2) bh disabled, and scheduler
does not like such configuration.

I'd say that all machines here are affected, and only I suffer
from problem because of I'm running shell script which periodically pings
all machines on subnet, reading their ethernet addresses back from
/proc/net/arp...

Unfortunately I do not have any idea how to fix it correctly, so for now
I just removed /proc/net/arp from my system, because of 'cat /proc/net/arp'
preceded by ping is quickest way I know to kill my system from user account.
Thanks,
Petr Vandrovec
vandrove@vc.cvut.cz

-
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/