]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fs/jfs: consolidate sanity checking in dbMount
authorDave Kleikamp <dave.kleikamp@oracle.com>
Thu, 20 Feb 2025 16:31:19 +0000 (10:31 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:27:39 +0000 (18:27 +0200)
[ Upstream commit 0d250b1c52484d489e31df2cf9118b7c4bd49d31 ]

Sanity checks have been added to dbMount as individual if clauses with
identical error handling. Move these all into one clause.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Stable-dep-of: 37bfb464ddca ("jfs: validate AG parameters in dbMount() to prevent crashes")
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/jfs/jfs_dmap.c

index 9dccebbee55ad093ae07c5c471592e30a5b24cec..ba60e24b30a45729e2c7313a510a9cb432cab71d 100644 (file)
@@ -178,45 +178,26 @@ int dbMount(struct inode *ipbmap)
        dbmp_le = (struct dbmap_disk *) mp->data;
        bmp->db_mapsize = le64_to_cpu(dbmp_le->dn_mapsize);
        bmp->db_nfree = le64_to_cpu(dbmp_le->dn_nfree);
-
        bmp->db_l2nbperpage = le32_to_cpu(dbmp_le->dn_l2nbperpage);
-       if (bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE ||
-               bmp->db_l2nbperpage < 0) {
-               err = -EINVAL;
-               goto err_release_metapage;
-       }
-
        bmp->db_numag = le32_to_cpu(dbmp_le->dn_numag);
-       if (!bmp->db_numag || bmp->db_numag > MAXAG) {
-               err = -EINVAL;
-               goto err_release_metapage;
-       }
-
        bmp->db_maxlevel = le32_to_cpu(dbmp_le->dn_maxlevel);
        bmp->db_maxag = le32_to_cpu(dbmp_le->dn_maxag);
        bmp->db_agpref = le32_to_cpu(dbmp_le->dn_agpref);
-       if (bmp->db_maxag >= MAXAG || bmp->db_maxag < 0 ||
-               bmp->db_agpref >= MAXAG || bmp->db_agpref < 0) {
-               err = -EINVAL;
-               goto err_release_metapage;
-       }
-
        bmp->db_aglevel = le32_to_cpu(dbmp_le->dn_aglevel);
        bmp->db_agheight = le32_to_cpu(dbmp_le->dn_agheight);
        bmp->db_agwidth = le32_to_cpu(dbmp_le->dn_agwidth);
-       if (!bmp->db_agwidth) {
-               err = -EINVAL;
-               goto err_release_metapage;
-       }
        bmp->db_agstart = le32_to_cpu(dbmp_le->dn_agstart);
        bmp->db_agl2size = le32_to_cpu(dbmp_le->dn_agl2size);
-       if (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG ||
-           bmp->db_agl2size < 0) {
-               err = -EINVAL;
-               goto err_release_metapage;
-       }
 
-       if (((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) {
+       if ((bmp->db_l2nbperpage > L2PSIZE - L2MINBLOCKSIZE) ||
+           (bmp->db_l2nbperpage < 0) ||
+           !bmp->db_numag || (bmp->db_numag > MAXAG) ||
+           (bmp->db_maxag >= MAXAG) || (bmp->db_maxag < 0) ||
+           (bmp->db_agpref >= MAXAG) || (bmp->db_agpref < 0) ||
+           !bmp->db_agwidth ||
+           (bmp->db_agl2size > L2MAXL2SIZE - L2MAXAG) ||
+           (bmp->db_agl2size < 0) ||
+           ((bmp->db_mapsize - 1) >> bmp->db_agl2size) > MAXAG) {
                err = -EINVAL;
                goto err_release_metapage;
        }