ext4: replace BUG_ON with proper error handling in ext4_read_inline_folio
PATCH 1/1 ext4: replace BUG_ON with proper error handling in ext4_read_inline_folio
Replace BUG_ON() with proper error handling when inline data size exceeds PAGE_SIZE. This prevents kernel panic and allows the system to continue running while properly reporting the filesystem corruption.
The error is logged via ext4_error_inode(), the buffer head is released to prevent memory leak, and -EFSCORRUPTED is returned to indicate filesystem corruption.
--- fs/ext4/inline.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
fs/ext4/inline.c +9 -1
@@ -522,7 +522,15 @@ static int ext4_read_inline_folio(struct inode *inode, struct folio *folio) goto out; len =min_t (size_t,ext4_get_inline_size (inode),i_size_read (inode)); -BUG_ON (len >PAGE_SIZE ); + +if (len >PAGE_SIZE ) { +ext4_error_inode (inode, __func__, __LINE__,0 , +"inline size %zu exceeds PAGE_SIZE" , len); + ret = -EFSCORRUPTED ; +brelse (iloc.bh); + goto out; + } + kaddr =kmap_local_folio (folio,0 ); ret =ext4_read_inline_data (inode, kaddr, len, &iloc); kaddr =folio_zero_tail (folio, len, kaddr + len);
Signature · 8 lines
2.50.1 Amazon Web Services EMEA SARL, 38 avenue John F. Kennedy, L-1855 Luxembourg, R.C.S. Luxembourg B186284 Amazon Web Services EMEA SARL, Irish Branch, One Burlington Plaza, Burlington Road, Dublin 4, Ireland, branch registration number 908705
Quoted 9 lines · Yuto Ohnuki
Replace
BUG_ON()with proper error handling when inline data size exceedsPAGE_SIZE. This prevents kernel panic and allows the system to continue running while properly reporting the filesystem corruption.The error is logged via
ext4_error_inode(), the buffer head is released to prevent memory leak, and-EFSCORRUPTEDis returned to indicate filesystem corruption.[...]
Applied, thanks!
[1/1] ext4: replace BUG_ON with proper error handling in ext4_read_inline_folio
commit: e8814f7f4646aa0bba3f9e9a446b07753e87117d
Best regards,
Signature · 1 line
Theodore Ts'o <[email protected]>