| From c05e6621f7d8fdce660471339d2549dacbcb00e2 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 20 Feb 2025 10:31:19 -0600 |
| Subject: fs/jfs: consolidate sanity checking in dbMount |
| |
| From: Dave Kleikamp <dave.kleikamp@oracle.com> |
| |
| [ 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 | 37 +++++++++---------------------------- |
| 1 file changed, 9 insertions(+), 28 deletions(-) |
| |
| diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c |
| index d161bbafe77f6..6bd9ab705cc66 100644 |
| --- a/fs/jfs/jfs_dmap.c |
| +++ b/fs/jfs/jfs_dmap.c |
| @@ -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; |
| } |
| -- |
| 2.39.5 |
| |