Skip to contentSkip to conversation

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

DISCUSSION Petr Vandrovec 1 participant 1 message Nov 7, 2002

lore
Share & tools
lore
#0 lore raw
Quoted 6 lines · Roger Larsson

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 [email protected]