]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ext4: fix coverity warning on error path of filename setup
authorGabriel Krisman Bertazi <krisman@collabora.com>
Tue, 2 Jul 2019 21:53:22 +0000 (17:53 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 2 Jul 2019 21:56:12 +0000 (17:56 -0400)
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")
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
fs/ext4/namei.c

index c9568fee9e11e1f9abdb137fe3b20060ae78a69f..1290295340758c1b47d211f853ee4b6433888658 100644 (file)
@@ -1310,6 +1310,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;
@@ -1319,13 +1321,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