]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
fs/fat: Don't error when mtime is 0
authorRobbie Harwood <rharwood@redhat.com>
Fri, 15 Jul 2022 20:13:02 +0000 (16:13 -0400)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 27 Jul 2022 17:20:53 +0000 (19:20 +0200)
In the wild, we occasionally see valid ESPs where some file modification
times are 0. For instance:

    ├── [Dec 31  1979]  EFI
    │   ├── [Dec 31  1979]  BOOT
    │   │   ├── [Dec 31  1979]  BOOTX64.EFI
    │   │   └── [Dec 31  1979]  fbx64.efi
    │   └── [Jun 27 02:41]  fedora
    │       ├── [Dec 31  1979]  BOOTX64.CSV
    │       ├── [Dec 31  1979]  fonts
    │       ├── [Mar 14 03:35]  fw
    │       │   ├── [Mar 14 03:35]  fwupd-359c1169-abd6-4a0d-8bce-e4d4713335c1.cap
    │       │   ├── [Mar 14 03:34]  fwupd-9d255c4b-2d88-4861-860d-7ee52ade9463.cap
    │       │   └── [Mar 14 03:34]  fwupd-b36438d8-9128-49d2-b280-487be02d948b.cap
    │       ├── [Dec 31  1979]  fwupdx64.efi
    │       ├── [May 10 10:47]  grub.cfg
    │       ├── [Jun  3 12:38]  grub.cfg.new.new
    │       ├── [May 10 10:41]  grub.cfg.old
    │       ├── [Jun 27 02:41]  grubenv
    │       ├── [Dec 31  1979]  grubx64.efi
    │       ├── [Dec 31  1979]  mmx64.efi
    │       ├── [Dec 31  1979]  shim.efi
    │       ├── [Dec 31  1979]  shimx64.efi
    │       └── [Dec 31  1979]  shimx64-fedora.efi
    └── [Dec 31  1979]  FSCK0000.REC

    5 directories, 17 files

This causes grub-probe failure, which in turn causes grub-mkconfig
failure. They are valid filesystems that appear intact, and the Linux
FAT stack is able to mount and manipulate them without complaint.

The check for mtime of 0 has been present since
20def1a3c3952982395cd7c3ea7e78638527962b (fat: support file
modification times).

Signed-off-by: Robbie Harwood <rharwood@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/fs/fat.c

index 0951b2e63f5ae40466e0cf5d0b614723e068f4d4..c5efed72412444f90f28213f82c523ff1782a6ed 100644 (file)
@@ -1027,9 +1027,6 @@ grub_fat_dir (grub_device_t device, const char *path, grub_fs_dir_hook_t hook,
                                          grub_le_to_cpu16 (ctxt.dir.w_date),
                                          &info.mtime);
 #endif
-      if (info.mtimeset == 0)
-       grub_error (GRUB_ERR_OUT_OF_RANGE,
-                   "invalid modification timestamp for %s", path);
 
       if (hook (ctxt.filename, &info, hook_data))
        break;