mirror of https://gitee.com/openkylin/linux.git
f2fs: reorganize f2fs_setxattr
make use of F2FS_NAME_LEN for name length checking, change return conditions at few places, by assigning storing the errorvalue in 'error' and making a common exit path. Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
parent
d3ee456dfb
commit
7c909772f1
|
@ -310,12 +310,13 @@ int f2fs_setxattr(struct inode *inode, int name_index, const char *name,
|
|||
|
||||
if (name == NULL)
|
||||
return -EINVAL;
|
||||
name_len = strlen(name);
|
||||
|
||||
if (value == NULL)
|
||||
value_len = 0;
|
||||
|
||||
if (name_len > 255 || value_len > MAX_VALUE_LEN)
|
||||
name_len = strlen(name);
|
||||
|
||||
if (name_len > F2FS_NAME_LEN || value_len > MAX_VALUE_LEN)
|
||||
return -ERANGE;
|
||||
|
||||
f2fs_balance_fs(sbi);
|
||||
|
@ -326,8 +327,8 @@ int f2fs_setxattr(struct inode *inode, int name_index, const char *name,
|
|||
struct dnode_of_data dn;
|
||||
|
||||
if (!alloc_nid(sbi, &fi->i_xattr_nid)) {
|
||||
mutex_unlock_op(sbi, NODE_NEW);
|
||||
return -ENOSPC;
|
||||
error = -ENOSPC;
|
||||
goto exit;
|
||||
}
|
||||
set_new_dnode(&dn, inode, NULL, NULL, fi->i_xattr_nid);
|
||||
mark_inode_dirty(inode);
|
||||
|
@ -336,8 +337,8 @@ int f2fs_setxattr(struct inode *inode, int name_index, const char *name,
|
|||
if (IS_ERR(page)) {
|
||||
alloc_nid_failed(sbi, fi->i_xattr_nid);
|
||||
fi->i_xattr_nid = 0;
|
||||
mutex_unlock_op(sbi, NODE_NEW);
|
||||
return PTR_ERR(page);
|
||||
error = PTR_ERR(page);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
alloc_nid_done(sbi, fi->i_xattr_nid);
|
||||
|
@ -349,8 +350,8 @@ int f2fs_setxattr(struct inode *inode, int name_index, const char *name,
|
|||
/* The inode already has an extended attribute block. */
|
||||
page = get_node_page(sbi, fi->i_xattr_nid);
|
||||
if (IS_ERR(page)) {
|
||||
mutex_unlock_op(sbi, NODE_NEW);
|
||||
return PTR_ERR(page);
|
||||
error = PTR_ERR(page);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
base_addr = page_address(page);
|
||||
|
@ -438,6 +439,7 @@ int f2fs_setxattr(struct inode *inode, int name_index, const char *name,
|
|||
return 0;
|
||||
cleanup:
|
||||
f2fs_put_page(page, 1);
|
||||
exit:
|
||||
mutex_unlock_op(sbi, NODE_NEW);
|
||||
return error;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue