• hujianyang's avatar
    ovl: Fix opaque regression in ovl_lookup · a425c037
    hujianyang authored
    Current multi-layer support overlayfs has a regression in
    .lookup(). If there is a directory in upperdir and a regular
    file has same name in lowerdir in a merged directory, lower
    file is hidden and upper directory is set to opaque in former
    case. But it is changed in present code.
    
    In lowerdir lookup path, if a found inode is not directory,
    the type checking of previous inode is missing. This inode
    will be copied to the lowerstack of ovl_entry directly.
    
    That will lead to several wrong conditions, for example,
    the reading of the directory in upperdir may return an error
    like:
    
       ls: reading directory .: Not a directory
    
    This patch makes the lowerdir lookup path check the opaque
    for non-directory file too.
    Signed-off-by: default avatarhujianyang <hujianyang@huawei.com>
    Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
    a425c037
super.c 21.1 KB