Skip to content
  • Al Viro's avatar
    try to get rid of races in hostfs open() · f8ad850f
    Al Viro authored
    
    
    In case of mode mismatch, do *not* blindly close the descriptor
    another openers might be using right now.  Open the underlying
    file with currently sufficient mode, then
    	* if current mode has grown so that it's sufficient for
    us now, just close our new fd
    	* if current mode has grown and our fd is *not* enough
    to cover it, close and repeat.
    	* otherwise, install our fd if the file hadn't been
    opened at all or dup2() our fd over the current one (and close
    our fd).
    Critical section is protected by mutex; yes, system-wide.  All
    we do under it is a bunch of comparison and maybe an overwriting
    dup2() on host.
    
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    f8ad850f