diff options
Diffstat (limited to 'fs/ext2/xattr.c')
-rw-r--r-- | fs/ext2/xattr.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c index 8c29ae15129e..529970617a21 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c | |||
@@ -35,7 +35,7 @@ | |||
35 | * +------------------+ | 35 | * +------------------+ |
36 | * | 36 | * |
37 | * The block header is followed by multiple entry descriptors. These entry | 37 | * The block header is followed by multiple entry descriptors. These entry |
38 | * descriptors are variable in size, and alligned to EXT2_XATTR_PAD | 38 | * descriptors are variable in size, and aligned to EXT2_XATTR_PAD |
39 | * byte boundaries. The entry descriptors are sorted by attribute name, | 39 | * byte boundaries. The entry descriptors are sorted by attribute name, |
40 | * so that two extended attribute blocks can be compared efficiently. | 40 | * so that two extended attribute blocks can be compared efficiently. |
41 | * | 41 | * |
@@ -199,14 +199,6 @@ bad_block: ext2_error(inode->i_sb, "ext2_xattr_get", | |||
199 | goto found; | 199 | goto found; |
200 | entry = next; | 200 | entry = next; |
201 | } | 201 | } |
202 | /* Check the remaining name entries */ | ||
203 | while (!IS_LAST_ENTRY(entry)) { | ||
204 | struct ext2_xattr_entry *next = | ||
205 | EXT2_XATTR_NEXT(entry); | ||
206 | if ((char *)next >= end) | ||
207 | goto bad_block; | ||
208 | entry = next; | ||
209 | } | ||
210 | if (ext2_xattr_cache_insert(bh)) | 202 | if (ext2_xattr_cache_insert(bh)) |
211 | ea_idebug(inode, "cache insert failed"); | 203 | ea_idebug(inode, "cache insert failed"); |
212 | error = -ENODATA; | 204 | error = -ENODATA; |
@@ -355,7 +347,7 @@ static void ext2_xattr_update_super_block(struct super_block *sb) | |||
355 | /* | 347 | /* |
356 | * ext2_xattr_set() | 348 | * ext2_xattr_set() |
357 | * | 349 | * |
358 | * Create, replace or remove an extended attribute for this inode. Buffer | 350 | * Create, replace or remove an extended attribute for this inode. Value |
359 | * is NULL to remove an existing extended attribute, and non-NULL to | 351 | * is NULL to remove an existing extended attribute, and non-NULL to |
360 | * either replace an existing extended attribute, or create a new extended | 352 | * either replace an existing extended attribute, or create a new extended |
361 | * attribute. The flags XATTR_REPLACE and XATTR_CREATE | 353 | * attribute. The flags XATTR_REPLACE and XATTR_CREATE |
@@ -699,7 +691,7 @@ ext2_xattr_set2(struct inode *inode, struct buffer_head *old_bh, | |||
699 | EXT2_I(inode)->i_file_acl = new_bh ? new_bh->b_blocknr : 0; | 691 | EXT2_I(inode)->i_file_acl = new_bh ? new_bh->b_blocknr : 0; |
700 | inode->i_ctime = CURRENT_TIME_SEC; | 692 | inode->i_ctime = CURRENT_TIME_SEC; |
701 | if (IS_SYNC(inode)) { | 693 | if (IS_SYNC(inode)) { |
702 | error = ext2_sync_inode (inode); | 694 | error = sync_inode_metadata(inode, 1); |
703 | /* In case sync failed due to ENOSPC the inode was actually | 695 | /* In case sync failed due to ENOSPC the inode was actually |
704 | * written (only some dirty data were not) so we just proceed | 696 | * written (only some dirty data were not) so we just proceed |
705 | * as if nothing happened and cleanup the unused block */ | 697 | * as if nothing happened and cleanup the unused block */ |