fd0330
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
fd0330
From: Robbie Harwood <rharwood@redhat.com>
fd0330
Date: Fri, 15 Jul 2022 15:42:41 -0400
fd0330
Subject: [PATCH] fs/fat: don't error when mtime is 0
fd0330
MIME-Version: 1.0
fd0330
Content-Type: text/plain; charset=UTF-8
fd0330
Content-Transfer-Encoding: 8bit
fd0330
fd0330
In the wild, we occasionally see valid ESPs where some file modification times
fd0330
are 0.  For instance:
fd0330
fd0330
    ├── [Dec 31  1979]  EFI
fd0330
    │   ├── [Dec 31  1979]  BOOT
fd0330
    │   │   ├── [Dec 31  1979]  BOOTX64.EFI
fd0330
    │   │   └── [Dec 31  1979]  fbx64.efi
fd0330
    │   └── [Jun 27 02:41]  fedora
fd0330
    │       ├── [Dec 31  1979]  BOOTX64.CSV
fd0330
    │       ├── [Dec 31  1979]  fonts
fd0330
    │       ├── [Mar 14 03:35]  fw
fd0330
    │       │   ├── [Mar 14 03:35]  fwupd-359c1169-abd6-4a0d-8bce-e4d4713335c1.cap
fd0330
    │       │   ├── [Mar 14 03:34]  fwupd-9d255c4b-2d88-4861-860d-7ee52ade9463.cap
fd0330
    │       │   └── [Mar 14 03:34]  fwupd-b36438d8-9128-49d2-b280-487be02d948b.cap
fd0330
    │       ├── [Dec 31  1979]  fwupdx64.efi
fd0330
    │       ├── [May 10 10:47]  grub.cfg
fd0330
    │       ├── [Jun  3 12:38]  grub.cfg.new.new
fd0330
    │       ├── [May 10 10:41]  grub.cfg.old
fd0330
    │       ├── [Jun 27 02:41]  grubenv
fd0330
    │       ├── [Dec 31  1979]  grubx64.efi
fd0330
    │       ├── [Dec 31  1979]  mmx64.efi
fd0330
    │       ├── [Dec 31  1979]  shim.efi
fd0330
    │       ├── [Dec 31  1979]  shimx64.efi
fd0330
    │       └── [Dec 31  1979]  shimx64-fedora.efi
fd0330
    └── [Dec 31  1979]  FSCK0000.REC
fd0330
fd0330
    5 directories, 17 files
fd0330
fd0330
This causes grub-probe failure, which in turn causes grub-mkconfig
fd0330
failure.  They are valid filesystems that appear intact, and the Linux
fd0330
FAT stack is able to mount and manipulate them without complaint.
fd0330
fd0330
The check for mtime of 0 has been present since
fd0330
20def1a3c3952982395cd7c3ea7e78638527962b ("fat: support file
fd0330
modification times").
fd0330
fd0330
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
fd0330
(cherry picked from commit 0615c4887352e32d7bb7198e9ad0d695f9dc2c31)
fd0330
---
fd0330
 grub-core/fs/fat.c | 3 ---
fd0330
 1 file changed, 3 deletions(-)
fd0330
fd0330
diff --git a/grub-core/fs/fat.c b/grub-core/fs/fat.c
fd0330
index dd82e4ee35..ff6200c5be 100644
fd0330
--- a/grub-core/fs/fat.c
fd0330
+++ b/grub-core/fs/fat.c
fd0330
@@ -1027,9 +1027,6 @@ grub_fat_dir (grub_device_t device, const char *path, grub_fs_dir_hook_t hook,
fd0330
 					  grub_le_to_cpu16 (ctxt.dir.w_date),
fd0330
 					  &info.mtime);
fd0330
 #endif
fd0330
-      if (info.mtimeset == 0)
fd0330
-	grub_error (GRUB_ERR_OUT_OF_RANGE,
fd0330
-		    "invalid modification timestamp for %s", path);
fd0330
 
fd0330
       if (hook (ctxt.filename, &info, hook_data))
fd0330
 	break;