• Rakesh Pandit's avatar
    bfs: fix sanity checks for empty files · 5f9f48f5
    Rakesh Pandit authored
    Mount fails if file system image has empty files because of sanity check
    while reading superblock.  For empty files disk offset to end of file
    (i_eoffset) is cpu_to_le32(-1).  Sanity check comparison, which compares
    disk offset with file system size isn't valid for this value and hence
    is ignored with this patch.
    
    Steps to reproduce:
    
      $  dd if=/dev/zero of=bfs-image count=204800
      $  mkfs.bfs bfs-image
      $  mkdir bfs-mount-point
      $  sudo mount -t bfs -o loop bfs-image bfs-mount-point/
      $  cd bfs-mount-point/
      $  sudo touch a
      $  cd ..
      $  sudo umount bfs-mount-point/
      $  sudo mount -t bfs -o loop bfs-image bfs-mount-point/
      mount: /dev/loop0: can't read superblock
    
      $  dmesg
      [25526.689580] BFS-fs: bfs_fill_super(): Inode 0x00000003 corrupted
    
    Tigran said:
     "If you had created the filesystem with the proper mkfs under SCO
      UnixWare 7 you (probably) wouldn't encounter this issue. But since
      commercial Unix-es are now part of history and the only proper way is
      the Linux mkfs.bfs utility, your patch is fine"
    
    Link: http://lkml.kernel.org/r/20170505201625.GA3097@hercules.tuxera.comSigned-off-by: default avatarRakesh Pandit <rakesh@tuxera.com>
    Acked-by: default avatarTigran Aivazian <aivazian.tigran@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5f9f48f5
inode.c 11.8 KB