diff options
author | Chengguang Xu <cgxu519@zoho.com.cn> | 2019-05-28 10:59:46 +0800 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2019-05-28 10:23:51 +0200 |
commit | d561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3 (patch) | |
tree | 144447bb4788022fdda0803d338fd7b8d3d897de | |
parent | 9bb1d7a6bcde2e45ecb29967b77e6716e155c252 (diff) | |
download | lwn-d561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3.tar.gz lwn-d561d4dd4f560e4d97bf665c5eeab7ac9fe8aca3.zip |
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>
-rw-r--r-- | fs/ext2/xattr.c | 25 |
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; } |