• Al Viro's avatar
    make build_open_flags() treat O_CREAT | O_EXCL as implying O_NOFOLLOW · 31d1726d
    Al Viro authored
    O_CREAT | O_EXCL means "-EEXIST if we run into a trailing symlink".
    As it is, we might or might not have LOOKUP_FOLLOW in op->intent
    in that case - that depends upon having O_NOFOLLOW in open flags.
    It doesn't matter, since we won't be checking it in that case -
    do_last() bails out earlier.
    
    However, making sure it's not set (i.e. acting as if we had an explicit
    O_NOFOLLOW) makes the behaviour more explicit and allows to reorder the
    check for O_CREAT | O_EXCL in do_last() with the call of step_into()
    immediately following it.
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    31d1726d
open.c 32.3 KB