On Thu, 2025-01-09 at 10:50 +0100, Ard Biesheuvel wrote: > Are there any existing test suites that cover efivarfs that you could > recommend? The good news is there is actually an existing test suite. I was writing some for selftests/filesystems/efivarfs, but it turns out they exist in selftests/efivarfs. You can run them from the kernel source tree (in a VM with your changes) as: make -C tools/testing/selftests TARGETS=efivarfs run_tests So I've merged all the testing I had here and started writing new ones. The bad news is that writing new tests I've run across another corner case in the efivarfs code: you can set the inode size to anything you want (as root) which means you can take a real variable and get it to mimic an uncommitted one (at least to stat): # ls -l /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c -rw-r--r-- 1 root root 841 Jan 18 13:40 /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c # chattr -i /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c # > /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c # ls -l /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c -rw-r--r-- 1 root root 0 Jan 18 13:40 /sys/firmware/efi/efivars/PK-8be4df61-93ca-11d2-aa0d-00e098032b8c I'm not sure how much of a bug this is for the old code (only systemd seems to check for zero size files), and it's only in the cache inode, so if you cat the file you get the fully 841 bytes. However, obviously it becomes a huge problem with my new code because you can use the truncate inode to actually delete the variable file (even thought the variable is still there) so I need to add a fix for it to my series. I'll post it separately when I have it to see what you think. Regards, James