From 7af4196d9e9beaae6a69586cd87bd861b7fc2cda Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sat, 16 May 2026 20:37:00 +0200 Subject: [PATCH] fs: fat: fix seconds in timestamp 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 Reviewed-by: Simon Glass --- 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;