• Ryusuke Konishi's avatar
    eCryptfs: fix lookup error for special files · 202a21d6
    Ryusuke Konishi authored
    When ecryptfs_lookup() is called against special files, eCryptfs generates
    the following errors because it tries to treat them like regular eCryptfs
    files.
    
    Error opening lower file for lower_dentry [0xffff810233a6f150], lower_mnt [0xffff810235bb4c80], and flags
    [0x8000]
    Error opening lower_file to read header region
    Error attempting to read the [user.ecryptfs] xattr from the lower file; return value = [-95]
    Valid metadata not found in header region or xattr region; treating file as unencrypted
    
    For instance, the problem can be reproduced by the steps below.
    
      # mkdir /root/crypt /mnt/crypt
      # mount -t ecryptfs /root/crypt /mnt/crypt
      # mknod /mnt/crypt/c0 c 0 0
      # umount /mnt/crypt
      # mount -t ecryptfs /root/crypt /mnt/crypt
      # ls -l /mnt/crypt
    
    This patch fixes it by adding a check similar to directories and
    symlinks.
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Acked-by: default avatarMichael Halcrow <mhalcrow@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    202a21d6
inode.c 32 KB