[6763] in Athena Bugs
iget race condition
daemon@ATHENA.MIT.EDU (daemon@ATHENA.MIT.EDU)
Tue Jan 1 20:40:58 1991
To: bugs@ATHENA.MIT.EDU
Cc: probe@ATHENA.MIT.EDU
Date: Tue, 01 Jan 91 20:40:42 EST
From: John Carr <jfc@ATHENA.MIT.EDU>
If a filesystem is unmounted while a process is in iget() waiting on an
inode on that filesystem, iget() will panic ("iget: bad dev"). The first
argument to iget() is a device. If this device is not mounted, iget()
panics. If the inode is locked, iget() sleeps and starts over. It is
possible for the filesystem containing the inode to be unmounted while
iget is sleeping, in which case it panics. There are three possible
fixes:
1. change the kernel so that a filesystem can not be unmounted if
the IWANT flag is set on any inode.
2. use the 4.3/tahoe UFS code, which has a rewritten iget(). This
appears to fix this case.
3. set u.u_error and return NULL