Drop the local downcase() helper. The two get_name() call sites operate on buffers that are NUL-terminated before the lowercase pass, and the trailing FAT-name padding is spaces which tolower() leaves untouched, so strlower() gives the same result without needing an explicit length.
Move the 'ptr[3] = '\0'' assignment in get_name() to before the extension is lowercased so strlower() sees a terminated string. Signed-off-by: Simon Glass <[email protected]> --- fs/fat/fat.c | 20 ++++---------------- fs/fat/fat_write.c | 2 +- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/fs/fat/fat.c b/fs/fat/fat.c index c1ccf30771a..dd328f948fb 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -26,23 +26,11 @@ #include <linux/compiler.h> #include <linux/ctype.h> #include <linux/log2.h> +#include <linux/string.h> /* maximum number of clusters for FAT12 */ #define MAX_FAT12 0xFF4 -/* - * Convert a string to lowercase. Converts at most 'len' characters, - * 'len' may be larger than the length of 'str' if 'str' is NULL - * terminated. - */ -static void downcase(char *str, size_t len) -{ - while (*str != '\0' && len--) { - *str = tolower(*str); - str++; - } -} - static struct blk_desc *cur_dev; static struct disk_partition cur_part_info; static int fat_sect_size; @@ -270,13 +258,13 @@ static void get_name(dir_entry *dirent, char *s_name) while (*ptr && *ptr != ' ') ptr++; if (dirent->lcase & CASE_LOWER_BASE) - downcase(s_name, (unsigned)(ptr - s_name)); + strlower(s_name); if (dirent->nameext.ext[0] && dirent->nameext.ext[0] != ' ') { *ptr++ = '.'; memcpy(ptr, dirent->nameext.ext, 3); - if (dirent->lcase & CASE_LOWER_EXT) - downcase(ptr, 3); ptr[3] = '\0'; + if (dirent->lcase & CASE_LOWER_EXT) + strlower(ptr); while (*ptr && *ptr != ' ') ptr++; } diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index c98b530f747..ea8d301514c 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -1464,7 +1464,7 @@ static int normalize_longname(char *l_filename, const char *filename) } strcpy(l_filename, filename); - downcase(l_filename, VFAT_MAXLEN_BYTES); + strlower(l_filename); return 0; } -- 2.43.0

