Commit 1cba4237 authored by Jan Kara's avatar Jan Kara Committed by Theodore Ts'o

ext4: remove checks for e_value_block

Currently we don't support xattrs with e_value_block set. We don't allow
them to pass initial xattr check so there's no point for checking for
this later. Since these tests were untested, bugs were creeping in and
not all places which should have checked were checking e_value_block
anyway.
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent 2de58f11
...@@ -643,7 +643,7 @@ static size_t ext4_xattr_free_space(struct ext4_xattr_entry *last, ...@@ -643,7 +643,7 @@ static size_t ext4_xattr_free_space(struct ext4_xattr_entry *last,
size_t *min_offs, void *base, int *total) size_t *min_offs, void *base, int *total)
{ {
for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) { for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) {
if (!last->e_value_block && last->e_value_size) { if (last->e_value_size) {
size_t offs = le16_to_cpu(last->e_value_offs); size_t offs = le16_to_cpu(last->e_value_offs);
if (offs < *min_offs) if (offs < *min_offs)
*min_offs = offs; *min_offs = offs;
...@@ -663,7 +663,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s) ...@@ -663,7 +663,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s)
/* Compute min_offs and last. */ /* Compute min_offs and last. */
last = s->first; last = s->first;
for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) { for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) {
if (!last->e_value_block && last->e_value_size) { if (last->e_value_size) {
size_t offs = le16_to_cpu(last->e_value_offs); size_t offs = le16_to_cpu(last->e_value_offs);
if (offs < min_offs) if (offs < min_offs)
min_offs = offs; min_offs = offs;
...@@ -671,7 +671,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s) ...@@ -671,7 +671,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s)
} }
free = min_offs - ((void *)last - s->base) - sizeof(__u32); free = min_offs - ((void *)last - s->base) - sizeof(__u32);
if (!s->not_found) { if (!s->not_found) {
if (!s->here->e_value_block && s->here->e_value_size) { if (s->here->e_value_size) {
size_t size = le32_to_cpu(s->here->e_value_size); size_t size = le32_to_cpu(s->here->e_value_size);
free += EXT4_XATTR_SIZE(size); free += EXT4_XATTR_SIZE(size);
} }
...@@ -693,7 +693,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s) ...@@ -693,7 +693,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s)
s->here->e_name_len = name_len; s->here->e_name_len = name_len;
memcpy(s->here->e_name, i->name, name_len); memcpy(s->here->e_name, i->name, name_len);
} else { } else {
if (!s->here->e_value_block && s->here->e_value_size) { if (s->here->e_value_size) {
void *first_val = s->base + min_offs; void *first_val = s->base + min_offs;
size_t offs = le16_to_cpu(s->here->e_value_offs); size_t offs = le16_to_cpu(s->here->e_value_offs);
void *val = s->base + offs; void *val = s->base + offs;
...@@ -727,8 +727,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s) ...@@ -727,8 +727,7 @@ ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s)
last = s->first; last = s->first;
while (!IS_LAST_ENTRY(last)) { while (!IS_LAST_ENTRY(last)) {
size_t o = le16_to_cpu(last->e_value_offs); size_t o = le16_to_cpu(last->e_value_offs);
if (!last->e_value_block && if (last->e_value_size && o < offs)
last->e_value_size && o < offs)
last->e_value_offs = last->e_value_offs =
cpu_to_le16(o + size); cpu_to_le16(o + size);
last = EXT4_XATTR_NEXT(last); last = EXT4_XATTR_NEXT(last);
...@@ -1327,7 +1326,7 @@ static void ext4_xattr_shift_entries(struct ext4_xattr_entry *entry, ...@@ -1327,7 +1326,7 @@ static void ext4_xattr_shift_entries(struct ext4_xattr_entry *entry,
/* Adjust the value offsets of the entries */ /* Adjust the value offsets of the entries */
for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) { for (; !IS_LAST_ENTRY(last); last = EXT4_XATTR_NEXT(last)) {
if (!last->e_value_block && last->e_value_size) { if (last->e_value_size) {
new_offs = le16_to_cpu(last->e_value_offs) + new_offs = le16_to_cpu(last->e_value_offs) +
value_offs_shift; value_offs_shift;
BUG_ON(new_offs + le32_to_cpu(last->e_value_size) BUG_ON(new_offs + le32_to_cpu(last->e_value_size)
...@@ -1726,7 +1725,7 @@ static inline void ext4_xattr_hash_entry(struct ext4_xattr_header *header, ...@@ -1726,7 +1725,7 @@ static inline void ext4_xattr_hash_entry(struct ext4_xattr_header *header,
*name++; *name++;
} }
if (entry->e_value_block == 0 && entry->e_value_size != 0) { if (entry->e_value_size != 0) {
__le32 *value = (__le32 *)((char *)header + __le32 *value = (__le32 *)((char *)header +
le16_to_cpu(entry->e_value_offs)); le16_to_cpu(entry->e_value_offs));
for (n = (le32_to_cpu(entry->e_value_size) + for (n = (le32_to_cpu(entry->e_value_size) +
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment