• J. Bruce Fields's avatar
    [PATCH] knfsd: nfsd4: fix owner-override on open · dc730e17
    J. Bruce Fields authored
    If a client creates a file using an open which sets the mode to 000, or if a
    chmod changes permissions after a file is opened, then situations may arise
    where an NFS client knows that some IO is permitted (because a process holds
    the file open), but the NFS server does not (because it doesn't know about the
    open, and only sees that the IO conflicts with the current mode of the file).
    
    As a hack to solve this problem, NFS servers normally allow the owner to
    override permissions on IO.  The client can still enforce correct
    permissions-checking on open by performing an explicit access check.
    
    In NFSv4 the client can rely on the explicit on-the-wire open instead of an
    access check.
    
    Therefore we should not be allowing the owner to override permissions on an
    over-the-wire open!
    
    However, we should still allow the owner to override permissions in the case
    where the client is claiming an open that it already made either before a
    reboot, or while it was holding a delegation.
    
    Thanks to Jim Rees for reporting the bug.
    Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    dc730e17
nfs4proc.c 28.2 KB