public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 5.4.y 1/2] erofs: fix order >= MAX_ORDER warning due to crafted negative i_size
@ 2024-12-18  7:39 Gao Xiang
  2024-12-18  7:39 ` [PATCH 5.4.y 2/2] erofs: fix incorrect symlink detection in fast symlink Gao Xiang
  2024-12-18 12:33 ` [PATCH 5.4.y 1/2] erofs: fix order >= MAX_ORDER warning due to crafted negative i_size Sasha Levin
  0 siblings, 2 replies; 4+ messages in thread
From: Gao Xiang @ 2024-12-18  7:39 UTC (permalink / raw)
  To: stable, gregkh
  Cc: allison.karlitskaya, linux-erofs, Gao Xiang,
	syzbot+f966c13b1b4fc0403b19, Yue Hu

commit 1dd73601a1cba37a0ed5f89a8662c90191df5873 upstream.

As syzbot reported [1], the root cause is that i_size field is a
signed type, and negative i_size is also less than EROFS_BLKSIZ.
As a consequence, it's handled as fast symlink unexpectedly.

Let's fall back to the generic path to deal with such unusual i_size.

[1] https://lore.kernel.org/r/000000000000ac8efa05e7feaa1f@google.com

Reported-by: syzbot+f966c13b1b4fc0403b19@syzkaller.appspotmail.com
Fixes: 431339ba9042 ("staging: erofs: add inode operations")
Reviewed-by: Yue Hu <huyue2@coolpad.com>
Link: https://lore.kernel.org/r/20220909023948.28925-1-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
 fs/erofs/inode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c
index 0dbeaf68e1d6..ba981076d6f2 100644
--- a/fs/erofs/inode.c
+++ b/fs/erofs/inode.c
@@ -202,7 +202,7 @@ static int erofs_fill_symlink(struct inode *inode, void *data,
 
 	/* if it cannot be handled with fast symlink scheme */
 	if (vi->datalayout != EROFS_INODE_FLAT_INLINE ||
-	    inode->i_size >= PAGE_SIZE) {
+	    inode->i_size >= PAGE_SIZE || inode->i_size < 0) {
 		inode->i_op = &erofs_symlink_iops;
 		return 0;
 	}
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-18 12:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-18  7:39 [PATCH 5.4.y 1/2] erofs: fix order >= MAX_ORDER warning due to crafted negative i_size Gao Xiang
2024-12-18  7:39 ` [PATCH 5.4.y 2/2] erofs: fix incorrect symlink detection in fast symlink Gao Xiang
2024-12-18 12:34   ` Sasha Levin
2024-12-18 12:33 ` [PATCH 5.4.y 1/2] erofs: fix order >= MAX_ORDER warning due to crafted negative i_size Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox