• Linus Torvalds's avatar
    Merge tag 'for-rc-adfs' of git://git.armlinux.org.uk/~rmk/linux-arm · 44e843eb
    Linus Torvalds authored
    Pull ADFS cleanups/fixes from Russell King:
     "As a result of some of Al Viro's great work, here are a few cleanups
      with fixes for adfs:
    
       - factor out filename comparison, so we can be sure that
         adfs_compare() (used for namei compare) and adfs_match() (used for
         lookup) have the same behaviour.
    
       - factor out filename lowering (which is not the same as tolower()
         which will lower top-bit-set characters) to ensure that we have the
         same behaviour when comparing filenames as when we hash them.
    
       - factor out the object fixups, so we are applying all fixups to
         directory objects in the same way, independent of the disk format.
    
       - factor out the object name fixup (into the previously factored out
         function) to ensure that filenames are appropriately translated -
         for example, adfs allows '/' in filenames, which being the Unix
         path separator, need to be translated to a different character,
         which is normally '.' (DOS 8.3 filenames represent the . as a / on
         adfs, so this is the expected reverse translation.)
    
       - remove filename truncation; Al asked about this and apparently the
         decision is to remove it. In any case, adfs's truncation was buggy,
         so this rids us of that bug by removing the truncation feature.
    
       - we now have only one location which adds the "filetype" suffix to
         the filename, so there's no point that code being out of line.
    
       - since we translate '/' into '.', an adfs filename of "/" or "//"
         would end up being translated to "." and ".." which have special
         meanings. In this case, change the first character to "^" to avoid
         these special directory names being abused"
    
    * tag 'for-rc-adfs' of git://git.armlinux.org.uk/~rmk/linux-arm:
      fs/adfs: fix filename fixup handling for "/" and "//" names
      fs/adfs: move append_filetype_suffix() into adfs_object_fixup()
      fs/adfs: remove truncated filename hashing
      fs/adfs: factor out filename fixup
      fs/adfs: factor out object fixups
      fs/adfs: factor out filename case lowering
      fs/adfs: factor out filename comparison
    44e843eb
dir_f.c 9.93 KB