Skip to content

Commit

Permalink
ext4: return error on ext4_find_inline_entry
Browse files Browse the repository at this point in the history
[ Upstream commit 4d231b91a944f3cab355fce65af5871fb5d7735b ]

In case of errors when reading an inode from disk or traversing inline
directory entries, return an error-encoded ERR_PTR instead of returning
NULL. ext4_find_inline_entry only caller, __ext4_find_entry already returns
such encoded errors.

Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Theodore Ts'o <[email protected]>
Stable-dep-of: c6b72f5d82b1 ("ext4: avoid OOB when system.data xattr changes underneath the filesystem")
Signed-off-by: Sasha Levin <[email protected]>
  • Loading branch information
Thadeu Lima de Souza Cascardo authored and simonami99 committed Oct 29, 2024
1 parent 9473f56 commit c685350
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions fs/ext4/inline.c
Original file line number Diff line number Diff line change
Expand Up @@ -1698,8 +1698,9 @@ struct buffer_head *ext4_find_inline_entry(struct inode *dir,
void *inline_start;
int inline_size;

if (ext4_get_inode_loc(dir, &iloc))
return NULL;
ret = ext4_get_inode_loc(dir, &iloc);
if (ret)
return ERR_PTR(ret);

down_read(&EXT4_I(dir)->xattr_sem);
if (!ext4_has_inline_data(dir)) {
Expand Down Expand Up @@ -1730,7 +1731,10 @@ struct buffer_head *ext4_find_inline_entry(struct inode *dir,

out:
brelse(iloc.bh);
iloc.bh = NULL;
if (ret < 0)
iloc.bh = ERR_PTR(ret);
else
iloc.bh = NULL;
out_find:
up_read(&EXT4_I(dir)->xattr_sem);
return iloc.bh;
Expand Down

0 comments on commit c685350

Please sign in to comment.