ext4: avoid unneeded lookup when xattr name is invalid
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 ext4: avoid unneeded lookup when xattr name is invalid
In ext4_xattr_set_handle() we have checked the xattr name's length. So we should also check it in ext4_xattr_get() to avoid unneeded lookup caused by invalid name.
In addition, we deleted the check of NULL in ext4_xattr_set_handle(), because in all the callers of the ext4_xattr_set_handle(), the name can't be NULL.
--- fs/ext4/xattr.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
fs/ext4/xattr.c +3 -2
@@ -369,6 +369,9 @@ ext4_xattr_get(struct inode *inode, int name_index, const char *name, {int error; +if (strlen (name) >255 ) +return -ERANGE ; +down_read (&EXT4_I (inode)->xattr_sem); error =ext4_xattr_ibody_get (inode, name_index, name, buffer, buffer_size);
@@ -1073,8 +1076,6 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index,unsigned long no_expand;int error; -if (!name) -return -EINVAL ;if (strlen (name) >255 )return -ERANGE ;down_write (&EXT4_I (inode)->xattr_sem);
Signature · 4 lines
1.8.5.5 .
Quoted 4 lines · Zhang Zhen
In
ext4_xattr_set_handle()we have checked the xattr name's length. So we should also check it inext4_xattr_get()to avoid unneeded lookup caused by invalid name.Signed-off-by Zhang Zhen <[email protected]>
Applied, although I dropped this bit:
Quoted 2 lines
In addition, we deleted the check of NULL in
ext4_xattr_set_handle(), because in all the callers of theext4_xattr_set_handle(), the name can't be NULL.
Verifying this is non-trivial, since there are many non-local users of this function, and in order to make sure this is true you need to verify (at least) the callers of the callers. I could be convinced to turn this into a BUG_ON(!name), or "if (unlikely(!name))", but leaving the check in is a good idea, since even if it is true today, it's not necessarily guarantted to be true N years in the future.
- Ted