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