From d561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3 Mon Sep 17 00:00:00 2001 From: Chengguang Xu Date: Tue, 28 May 2019 10:59:46 +0800 Subject: ext2: introduce new helper for xattr entry comparison Introduce new helper ext2_xattr_cmp_entry() for xattr entry comparison. Signed-off-by: Chengguang Xu Signed-off-by: Jan Kara --- fs/ext2/xattr.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'fs') 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; } -- cgit v1.2.3