From 3e3b3431316558de0fa69d4e7b0af15574363744 Mon Sep 17 00:00:00 2001 From: sfilippone Date: Fri, 10 May 2024 15:02:36 +0200 Subject: [PATCH] Fix potential overflow issue in SOC_MAP_BLD --- amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_c_soc2_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_d_soc2_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_s_soc2_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 | 3 ++- amgprec/impl/aggregator/amg_z_soc2_map_bld.F90 | 3 ++- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 index 53892ebc..24720675 100644 --- a/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 @@ -275,7 +275,8 @@ subroutine amg_c_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in disjoint = all(ilaggr(icol(1:ip)) == -(nr+1)).or.(ip==0) if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_c_soc2_map_bld.F90 b/amgprec/impl/aggregator/amg_c_soc2_map_bld.F90 index b250e434..57ed8893 100644 --- a/amgprec/impl/aggregator/amg_c_soc2_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_c_soc2_map_bld.F90 @@ -309,7 +309,8 @@ subroutine amg_c_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 index fba80c10..200d630c 100644 --- a/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 @@ -275,7 +275,8 @@ subroutine amg_d_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in disjoint = all(ilaggr(icol(1:ip)) == -(nr+1)).or.(ip==0) if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_d_soc2_map_bld.F90 b/amgprec/impl/aggregator/amg_d_soc2_map_bld.F90 index 345cd1ad..e2b7ea0c 100644 --- a/amgprec/impl/aggregator/amg_d_soc2_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_d_soc2_map_bld.F90 @@ -309,7 +309,8 @@ subroutine amg_d_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 index 857c6ff3..0f8bb7dd 100644 --- a/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 @@ -275,7 +275,8 @@ subroutine amg_s_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in disjoint = all(ilaggr(icol(1:ip)) == -(nr+1)).or.(ip==0) if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_s_soc2_map_bld.F90 b/amgprec/impl/aggregator/amg_s_soc2_map_bld.F90 index ef7f5707..99047468 100644 --- a/amgprec/impl/aggregator/amg_s_soc2_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_s_soc2_map_bld.F90 @@ -309,7 +309,8 @@ subroutine amg_s_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 index 50fe70a2..7961921a 100644 --- a/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 @@ -275,7 +275,8 @@ subroutine amg_z_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in disjoint = all(ilaggr(icol(1:ip)) == -(nr+1)).or.(ip==0) if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info) diff --git a/amgprec/impl/aggregator/amg_z_soc2_map_bld.F90 b/amgprec/impl/aggregator/amg_z_soc2_map_bld.F90 index c6ac226e..35d02fd0 100644 --- a/amgprec/impl/aggregator/amg_z_soc2_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_z_soc2_map_bld.F90 @@ -309,7 +309,8 @@ subroutine amg_z_soc2_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! if (disjoint) then locnaggr(kk) = locnaggr(kk) + 1 - itmp = (bnds(kk)-1+locnaggr(kk))*nths+kk + itmp = (bnds(kk)-1+locnaggr(kk)) !be careful about overflow + itmp = itmp*nths+kk if (itmp < (bnds(kk)-1+locnaggr(kk))) then !$omp atomic update info = max(12345678,info)