I just fixed one bug in EFI_FILE_PROTOCOL.SetInfo(), cf.
[PATCH 1/1] efi_loader: incorrect buffer size in efi_file_setinfo() https://lists.denx.de/pipermail/u-boot/2020-November/432480.html With this patch applied when running the UEFI SCT test GetInfoFunction on sandbox_defconfig on aarch64 a crash occurs in set_start_cluster() because dentptr is NULL. This happens when trying to create a new file with a long name in the root directory. │ 697 /* │ 698 * Set start cluster in directory entry │ 699 */ │ 700 static void set_start_cluster(const fsdata *mydata, dir_entry *dentptr, │ 701 __u32 start_cluster) │ 702 { │ 703 if (mydata->fatsize == 32) │ 704 dentptr->starthi = │ 705 cpu_to_le16((start_cluster & 0xffff0000) >> 16); │ >706 dentptr->start = cpu_to_le16(start_cluster & 0xffff); │ 707 } Program received signal SIGSEGV, Segmentation fault. 0x0000aaaaaab83418 in fill_dentry ( mydata=<optimized out>, start_cluster=0, attr=32 ' ', size=0, filename=0x1553f421 "BBTestGetInfoBasicTestCheckpoint3_File_92", dentptr=0x0) at fs/fat/fat_write.c:706 (gdb) p dentptr $1 = (dir_entry *) 0x0 called via >1195 fill_dentry(itr->fsdata, itr->dent, filename, 0, size, 0x20); >563 ret = info->write(filename, buf, offset, len, actwrite); After running only the GetInfoFunctionTest up to the crash the file system is already heavily corrupted: Orphaned long file name part "Sct.log" Orphaned long file name part "verbose.mode" Orphaned long file name part "[abc123]][()].Aa [b" Orphaned long file name part "[abc123]][()].Aa [b" Orphaned long file name part "BBTestGetInfoBasicTestCheckpoint3_File_92" /BBTestGetInfoBasicTestCheckpoint3_File_0 80 Duplicate directory entries Orphaned long file name part "TestCase.ini" Orphaned long file name part "Summary.log" ... So there seem to be multiple bugs in our FAT file system related to long file names. Best regards Heinrich