Skip to contentSkip to conversation

ext4: optimize case-insensitive lookups

bug report Applied Dan Carpenter 3 participants 3 messages Jun 24, 2019 – Jul 3, 2019 ext4 file system

lore
Share & tools
lore
#0 lore raw

Hello Gabriel Krisman Bertazi,

The patch 3ae72562ad91: "ext4: optimize case-insensitive lookups" from Jun 19, 2019, leads to the following static checker warning:

	fs/ext4/namei.c:1311 ext4_fname_setup_ci_filename()
	warn: 'cf_name->len' unsigned <= 0

fs/ext4/namei.c
1296 void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
1297 struct fscrypt_str *cf_name)
1298 {
1299 if (!IS_CASEFOLDED(dir)) {
1300 cf_name->name = NULL;
1301 return;
1302 }
1303
1304 cf_name->name = kmalloc(EXT4_NAME_LEN, GFP_NOFS);
1305 if (!cf_name->name)
1306 return;
1307
1308 cf_name->len = utf8_casefold(EXT4_SB(dir->i_sb)->s_encoding,
1309 iname, cf_name->name,
1310 EXT4_NAME_LEN);

utf8_casefold() returns negative error codes

  1311          if (cf_name->len <= 0) {

but "cf_name->len" is a u32.

  1312                  kfree(cf_name->name);
  1313                  cf_name->name = NULL;
  1314          }
  1315  }

regards,
dan carpenter

#1 lore raw

PATCH 1/1 ext4: Fix coverity warning on error path of filename setup

Quoted 4 lines · Dan Carpenter

Hello Gabriel Krisman Bertazi,

The patch 3ae72562ad91: "ext4: optimize case-insensitive lookups" from Jun 19, 2019, leads to the following static checker warning:

Hi,

The patch below should fix this issue.

-- >8 --
Subject: [PATCH] ext4: Fix coverity warning on error path of filename setup

Fix the following coverity warning reported by Dan Carpenter:

fs/ext4/namei.c:1311 ext4_fname_setup_ci_filename()

	  warn: 'cf_name->len' unsigned <= 0
Fixes 3ae72562ad91 ("ext4: optimize case-insensitive lookups")
---
 fs/ext4/namei.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
fs/ext4/namei.c +9 -4
index 4909ced4e672..898295286676 100644
@@ -1296,6 +1296,8 @@ int ext4_ci_compare(const struct inode *parent, const struct qstr *name,
 void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
 				  struct fscrypt_str *cf_name)
 {
+	int len;
+
 	if (!IS_CASEFOLDED(dir)) {
 		cf_name->name = NULL;
 		return;
@@ -1305,13 +1307,16 @@ void ext4_fname_setup_ci_filename(struct inode *dir, const struct qstr *iname,
 	if (!cf_name->name)
 		return;
 
-	cf_name->len = utf8_casefold(EXT4_SB(dir->i_sb)->s_encoding,
-				     iname, cf_name->name,
-				     EXT4_NAME_LEN);
-	if (cf_name->len <= 0) {
+	len = utf8_casefold(EXT4_SB(dir->i_sb)->s_encoding,
+			    iname, cf_name->name,
+			    EXT4_NAME_LEN);
+	if (len <= 0) {
 		kfree(cf_name->name);
 		cf_name->name = NULL;
+		return;
 	}
+	cf_name->len = (unsigned) len;
+
 }
 #endif
 
Signature · 1 line
2.20.1
maintainer Applied
#2 lore raw

Re: [PATCH] ext4: Fix coverity warning on error path of filename setup

Quoted 14 lines · Gabriel Krisman Bertazi
Quoted 4 lines · Dan Carpenter

Hello Gabriel Krisman Bertazi,

The patch 3ae72562ad91: "ext4: optimize case-insensitive lookups" from Jun 19, 2019, leads to the following static checker warning:

Hi,

The patch below should fix this issue.

-- >8 --
Subject: [PATCH] ext4: Fix coverity warning on error path of filename setup

Quoted 8 lines

Fix the following coverity warning reported by Dan Carpenter:

fs/ext4/namei.c:1311 ext4_fname_setup_ci_filename()

	  warn: 'cf_name->len' unsigned <= 0
Fixes 3ae72562ad91 ("ext4: optimize case-insensitive lookups")

Applied, thanks.

- Ted