fs: jfs: fix shift-out-of-bounds in dbDiscardAG
authorHoi Pok Wu <wuhoipok@gmail.com>
Tue, 25 Oct 2022 15:20:45 +0000 (23:20 +0800)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Thu, 27 Oct 2022 22:34:21 +0000 (17:34 -0500)
This should be applied to most URSAN bugs found recently by syzbot,
by guarding the dbMount. As syzbot feeding rubbish into the bmap
descriptor.

Signed-off-by: Hoi Pok Wu <wuhoipok@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
fs/jfs/jfs_dmap.c

index e1cbfbb..7658385 100644 (file)
@@ -198,6 +198,11 @@ int dbMount(struct inode *ipbmap)
                goto err_release_metapage;
        }
 
+       if (((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) {
+               err = -EINVAL;
+               goto err_release_metapage;
+       }
+
        for (i = 0; i < MAXAG; i++)
                bmp->db_agfree[i] = le64_to_cpu(dbmp_le->dn_agfree[i]);
        bmp->db_agsize = le64_to_cpu(dbmp_le->dn_agsize);