From bf34e7d952939b1d4289ef62e7d940fbd227c72a Mon Sep 17 00:00:00 2001
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Mon, 2 Jan 2012 06:54:29 +0000
Subject: [PATCH] fat: reset VFAT short alias checksum on first match

The VFAT short alias checksum read from a long file name is only overwritten
when another long file name appears in a directory list. Until then it renders
short file names invisible that have the same checksum. Reset the checksum on
first match.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Martin Mueller <martin.mueller5@de.bosch.com>
---
 fs/fat/fat.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index dbb8db92f0..1542194a1a 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -633,6 +633,7 @@ static dir_entry *get_dentfromdir (fsdata *mydata, int startsect,
 			}
 #ifdef CONFIG_SUPPORT_VFAT
 			if (dols && mkcksum(dentptr->name) == prevcksum) {
+				prevcksum = 0xffff;
 				dentptr++;
 				continue;
 			}
@@ -963,6 +964,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 #ifdef CONFIG_SUPPORT_VFAT
 			else if (dols == LS_ROOT &&
 				 mkcksum(dentptr->name) == prevcksum) {
+				prevcksum = 0xffff;
 				dentptr++;
 				continue;
 			}
-- 
2.39.5