Jiri Slaby 892913
From: Liu Shixin via Jfs-discussion <jfs-discussion@lists.sourceforge.net>
Jiri Slaby 892913
Date: Thu, 3 Nov 2022 11:01:59 +0800
Jiri Slaby 892913
Subject: [PATCH] fs/jfs: fix shift exponent db_agl2size negative
Jiri Slaby 892913
References: bsc#1012628
Jiri Slaby 892913
Patch-mainline: 6.2.5
Jiri Slaby 892913
Git-commit: fad376fce0af58deebc5075b8539dc05bf639af3
Jiri Slaby 892913
Jiri Slaby 892913
[ Upstream commit fad376fce0af58deebc5075b8539dc05bf639af3 ]
Jiri Slaby 892913
Jiri Slaby 892913
As a shift exponent, db_agl2size can not be less than 0. Add the missing
Jiri Slaby 892913
check to fix the shift-out-of-bounds bug reported by syzkaller:
Jiri Slaby 892913
Jiri Slaby 892913
 UBSAN: shift-out-of-bounds in fs/jfs/jfs_dmap.c:2227:15
Jiri Slaby 892913
 shift exponent -744642816 is negative
Jiri Slaby 892913
Jiri Slaby 892913
Reported-by: syzbot+0be96567042453c0c820@syzkaller.appspotmail.com
Jiri Slaby 892913
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Jiri Slaby 892913
Signed-off-by: Liu Shixin <liushixin2@huawei.com>
Jiri Slaby 892913
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Jiri Slaby 892913
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby 892913
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby 892913
---
Jiri Slaby 892913
 fs/jfs/jfs_dmap.c | 3 ++-
Jiri Slaby 892913
 1 file changed, 2 insertions(+), 1 deletion(-)
Jiri Slaby 892913
Jiri Slaby 892913
diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c
Jiri Slaby 892913
index 76583857..a3eb1e82 100644
Jiri Slaby 892913
--- a/fs/jfs/jfs_dmap.c
Jiri Slaby 892913
+++ b/fs/jfs/jfs_dmap.c
Jiri Slaby 892913
@@ -193,7 +193,8 @@ int dbMount(struct inode *ipbmap)
Jiri Slaby 892913
 	bmp->db_agwidth = le32_to_cpu(dbmp_le->dn_agwidth);
Jiri Slaby 892913
 	bmp->db_agstart = le32_to_cpu(dbmp_le->dn_agstart);
Jiri Slaby 892913
 	bmp->db_agl2size = le32_to_cpu(dbmp_le->dn_agl2size);
Jiri Slaby 892913
-	if (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG) {
Jiri Slaby 892913
+	if (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG ||
Jiri Slaby 892913
+	    bmp->db_agl2size < 0) {
Jiri Slaby 892913
 		err = -EINVAL;
Jiri Slaby 892913
 		goto err_release_metapage;
Jiri Slaby 892913
 	}
Jiri Slaby 892913
-- 
Jiri Slaby 892913
2.35.3
Jiri Slaby 892913