A Linux FAT driver jelenlegi problémája, hogy nem ellenőrzi a bemeneti fájlnév hosszának felső korlátját. Ha a név hossza meghaladja a Linux NAME_MAX értékét, vagyis a 255 bájtot, akkor a driver csendben levágja a túllógó részt, és úgy folytatja, mintha minden rendben lenne. Ez nyilván nem kívánt viselkedés, ráadásul a fájlok olvasásakor már a levágott név alapján keres.
A hibát felfedező és javító Huawei-mérnök, Zizhi Wo a FAT driver problémáját a javítócsomag üzenetében így magyarázta:
„A msdos_format_name() nem végez felső korlátot ellenőrző vizsgálatot a bemeneti név hosszán. Egy tetszőlegesen hosszú nevet csendben levág 8.3 formára (11 bájt), majd sikeresnek jelenti az eredményt. A következő fat_scan() ezután csak erre a 11 levágott bájtra illeszt, így mindaddig visszaad egy inode-ot, amíg létezik a lemezen bármilyen bejegyzés ugyanazzal a 8.3 névvel.
Például egy 300 bájt hosszú, csak 'A' betűkből álló név átadása 0-t ad vissza, a res értéke pedig „AAAAAAAA” lesz (8 'A' + 3 kitöltő szóköz), vagyis sikeresnek jelenti egy olyan nevet, amely jóval hosszabb, mint a NAME_MAX.
Ennek eredményeként, ha a felhasználó open()-t hív egy olyan elérési út komponensre, amely hosszabb, mint NAME_MAX (255 bájt), a VFS csak a PATH_MAX-ot kényszeríti ki, az egyes komponensek hosszát nem. A dentry megtartja az eredeti hosszú nevet, de kap egy inode-ot, és „pozitívvá” válik. Később a vfs_open() -> fsnotify_open() -> fanotify_info_copy_name() hívásláncban lefut a WARN_ON_ONCE(), és az esemény üres névvel kerül jelentésre a userspace felé.
A vfat nem érintett, mert a létrehozás az xlate_to_uni() függvényen megy keresztül, amely elutasítja a FAT_LFN_LEN-nél hosszabb neveket.
A javítás lényege, hogy a msdos_format_name() elején – amely az összes msdos névkezelés egyetlen belépési pontja – ellenőrizzük, hogy 'len > NAME_MAX'-e. Ez összhangba hozza a működést azzal a NAME_MAX ellenőrzéssel, amit az xfs/9p/ceph/simple_lookup() is végez a lookup során.”
A felső korlátot ellenőrző két új kódsort beküldték, és már be is olvasztották a Linux 7.3-ba. Várhatóan a közeljövőben a stabil kernelágakba is visszaportolják.

