summaryrefslogtreecommitdiffstats
path: root/fs/ext2
diff options
context:
space:
mode:
authorChengguang Xu <cgxu519@zoho.com.cn>2019-05-28 10:59:46 +0800
committerJan Kara <jack@suse.cz>2019-05-28 10:23:51 +0200
commitd561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3 (patch)
tree144447bb4788022fdda0803d338fd7b8d3d897de /fs/ext2
parent9bb1d7a6bcde2e45ecb29967b77e6716e155c252 (diff)
downloadlinux-d561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3.tar.bz2
ext2: introduce new helper for xattr entry comparison
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>
Diffstat (limited to 'fs/ext2')
-rw-r--r--fs/ext2/xattr.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
index 28503979696d..59356cd2a842 100644
--- a/fs/ext2/xattr.c
+++ b/fs/ext2/xattr.c
@@ -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;
}