On 04/19/2016 04:35 PM, Linus Torvalds wrote: > On Tue, Apr 19, 2016 at 3:06 PM, Eric W. Biederman > <[email protected]> wrote: >> >> I have work inspired by this rolled into my code. I will post shortly >> after a little more testing. > > Actually, I have a slightly fixed version in my tree. I've been > running this on my own machines for a few days, just to verify, along > with some testing. > > The fixes are some cleanups of the header file (the !UNIX98 section > that nobody uses was bogus), and fixing "devpts_get_ref()" to get the > "struct file *" argument too. The current code doesn't need it, but > the code to actually look up the right pts/ directory from the ptmx > file open needs it because that's where the path is - passing in just > the inode isn't sufficient). > > Anyway, I think I'll just merge my branch instead of sending out > another emailed patch, because I don't think that patch is > controversial or unsafe. It doesn't actually change any semantics, and > only does cleanups. If it breaks something due to the rules about > private_data being different for slave and master side pty's, then the > old code was broken too - it used to always put a inode pointer in > there, but they were very different inode pointers.
Yes, the old code was broken. The new code always uses the ptmx inode. Which is a stopgap measure to prevent the devpts instance from teardown when the only open filp is /dev/tty. What I want to do instead (but not for -stable) is bump the inode reference at controlling tty association instead (either first qualifying open or ioctl(TIOCSCTTY)). That way it would always be the slave inode. This method is non-trivial though because it makes disassociation more complicated. Regards, Peter Hurley

