Hello kernel hackers,
I have found a deadlock in the current version of devfs.
It can be reproduced like this on a system with an IDE CD-ROM drive:
0. Make sure devfs is mounted on /dev and devfsd is running with
MKOLDCOMPAT and MKNEWCOMPAT enabled.
1. Create a symlink from /dev/cdroms/cdrom0 to /dev/cdrom
2. rmmod ide-cd
3a. mount /dev/cdrom /mnt
or
3b. file -L /dev/cdrom
I've traced this bug to the symlink semaphore in devfs.
As far as I can tell, the following events lead to a deadlock:
1. file -L tries to stat(2) /dev/cdrom. stat will follow the symlinks
and acquires symlink_rwsem for reading.
2. /dev/cdroms/cdrom0 doesn't exist, so the kernel tells devfsd
to look up /dev/cdroms/cdrom0.
3. devfsd loads ide-cd.o. Then, it will try to create the appropriate
symlinks in /dev.
4. devfs_do_symlink tries to acquire symlink_rwsem for writing - deadlock.
I've verified this on 2.4.12ac3 and 2.4.13. I had this problem on 2.4.12 as
well.
Updating to a current devfsd didn't help.
-- Johannes Kloos Developer Version Programmpaket mit Dokumentation -- Kristian Köhntopp
This archive was generated by hypermail 2b29 : Wed Oct 31 2001 - 21:00:33 EST