diff options
author | Namjae Jeon <namjae.jeon@samsung.com> | 2013-03-17 09:26:39 +0100 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2013-03-20 10:30:15 +0100 |
commit | 7c909772f1222dd82098659da4d0c41d8a051790 (patch) | |
tree | 9e1ce1175d34ffc8114b861e613b78c62a9edb0e /fs | |
parent | f2fs: notify when discard is not supported (diff) | |
download | linux-7c909772f1222dd82098659da4d0c41d8a051790.tar.xz linux-7c909772f1222dd82098659da4d0c41d8a051790.zip |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/xattr.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index 8038c0496504..3bfea80610ff 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -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; } |