[PATCH v3] mm: shmem: Use signed int for version handling in casefold option

From: Karan Sanghavi
Date: Sat Jan 11 2025 - 10:31:54 EST


Fixes an issue where the use of an unsigned data type in
`shmem_parse_opt_casefold()` caused incorrect evaluation of
negative conditions.

Fixes: 58e55efd6c72 ("tmpfs: Add casefold lookup support")
Reviewed-by: André Almeida <andrealmeid@xxxxxxxxxx>
Reviewed-by: Gabriel Krisman Bertazi <gabriel@xxxxxxxxxx>
Signed-off-by: Karan Sanghavi <karansanghvi98@xxxxxxxxx>
---
Coverity Message:
CID 1601569: (#1 of 1): Unsigned compared against 0 (NO_EFFECT)
unsigned_compare: This less-than-zero comparison of an unsigned
value is never true. version < 0U

Coverity Link:
https://scan7.scan.coverity.com/#/project-view/10043/11354?selectedIssue=1601569
---
Changes in v3:
- Changed patch subject adn summary log.
- Link to v2: https://lore.kernel.org/r/20241127-unsignedcompare1601569-v2-1-e85098fb02b2@xxxxxxxxx

Changes in v2:
- Updated the log summary.
- Link to v1: https://lore.kernel.org/r/20241111-unsignedcompare1601569-v1-1-c4a9c3c75a52@xxxxxxxxx
---
mm/shmem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/shmem.c b/mm/shmem.c
index 7987deb2be9b..17a1d4fa8870 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -4367,7 +4367,7 @@ static int shmem_parse_opt_casefold(struct fs_context *fc, struct fs_parameter *
bool latest_version)
{
struct shmem_options *ctx = fc->fs_private;
- unsigned int version = UTF8_LATEST;
+ int version = UTF8_LATEST;
struct unicode_map *encoding;
char *version_str = param->string + 5;


---
base-commit: 6d59cab07b8d74d0f0422b750038123334f6ecc2
change-id: 20241111-unsignedcompare1601569-05b5932145ef

Best regards,
--
Karan Sanghavi <karansanghvi98@xxxxxxxxx>