Messages in this thread |  | | Date | Sat, 27 Oct 2001 19:01:17 +0200 | From | Johannes Kloos <> | Subject | Deadlock in current devfs with nested symlinks |
| |
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 [unhandled content-type:application/pgp-signature] |  |