ext2: introduce new helper for xattr entry comparison
authorChengguang Xu <cgxu519@zoho.com.cn>
Tue, 28 May 2019 02:59:46 +0000 (10:59 +0800)
committerJan Kara <jack@suse.cz>
Tue, 28 May 2019 08:23:51 +0000 (10:23 +0200)
Introduce new helper ext2_xattr_cmp_entry() for xattr
entry comparison.

Signed-off-by: Chengguang Xu <cgxu519@zoho.com.cn>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext2/xattr.c

index 2850397..59356cd 100644 (file)
@@ -166,6 +166,21 @@ ext2_xattr_entry_valid(struct ext2_xattr_entry *entry,
        return true;
 }
 
+static int
+ext2_xattr_cmp_entry(int name_index, size_t name_len, const char *name,
+                    struct ext2_xattr_entry *entry)
+{
+       int cmp;
+
+       cmp = name_index - entry->e_name_index;
+       if (!cmp)
+               cmp = name_len - entry->e_name_len;
+       if (!cmp)
+               cmp = memcmp(name, entry->e_name, name_len);
+
+       return cmp;
+}
+
 /*
  * ext2_xattr_get()
  *
@@ -452,13 +467,9 @@ bad_block:
                                        min_offs = offs;
                        }
                        if (not_found > 0) {
-                               not_found = name_index - last->e_name_index;
-                               if (!not_found)
-                                       not_found = name_len - last->e_name_len;
-                               if (!not_found) {
-                                       not_found = memcmp(name, last->e_name,
-                                                          name_len);
-                               }
+                               not_found = ext2_xattr_cmp_entry(name_index,
+                                                                name_len,
+                                                                name, last);
                                if (not_found <= 0)
                                        here = last;
                        }