Commit 0d250b1c authored by Dave Kleikamp's avatar Dave Kleikamp
Browse files

fs/jfs: consolidate sanity checking in dbMount



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

Signed-off-by: default avatarDave Kleikamp <dave.kleikamp@oracle.com>
parent ddf2846f
Loading
Loading
Loading
Loading
+9 −28
Original line number Diff line number Diff line
@@ -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;
	}