[PATCH 1/1] fs: fat: fix seconds in timestamp

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Sat May 16 20:37:00 CEST 2026


The FAT time format stores seconds/2 in bits 4:0. The expression
'tm.tm_sec > 1' is a boolean comparison (yields 0 or 1) where a
right-shift 'tm.tm_sec >> 1' was intended.  As a result every
file timestamp written by U-Boot has its seconds field set to
either 0 or 1, depending on whether tm_sec is greater than 1.

Also fix the indentation of the tm_hour line.

Fixes: ba23c378c544 ("fs: fat: fill creation and change date")
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
 fs/fat/fat_write.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c
index c98b530f747..a1d28b4e305 100644
--- a/fs/fat/fat_write.c
+++ b/fs/fat/fat_write.c
@@ -1175,9 +1175,9 @@ static void dentry_set_time(dir_entry *dentptr)
 		date = (tm.tm_mday & 0x1f) |
 		       ((tm.tm_mon & 0xf) << 5) |
 		       ((tm.tm_year - 1980) << 9);
-		time = (tm.tm_sec > 1) |
+		time = (tm.tm_sec >> 1) |
 		       ((tm.tm_min & 0x3f) << 5) |
-		(tm.tm_hour << 11);
+		       (tm.tm_hour << 11);
 		dentptr->date = date;
 		dentptr->time = time;
 		return;
-- 
2.53.0



More information about the U-Boot mailing list