• Al Viro's avatar
    ecryptfs: fix handling of directory opening · 25dcddef
    Al Viro authored
    [ Upstream commit 6a480a78 ]
    
    First of all, trying to open them r/w is idiocy; it's guaranteed to fail.
    Moreover, assigning ->f_pos and assuming that everything will work is
    blatantly broken - try that with e.g. tmpfs as underlying layer and watch
    the fireworks.  There may be a non-trivial amount of state associated with
    current IO position, well beyond the numeric offset.  Using the single
    struct file associated with underlying inode is really not a good idea;
    we ought to open one for each ecryptfs directory struct file.
    
    Additionally, file_operations both for directories and non-directories are
    full of pointless methods; non-directories should *not* have ->iterate(),
    directories should not have ->flush(), ->fasync() and ->splice_read().
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    25dcddef
file.c 11.5 KB