Message ID | 20220627113036.1324-1-thomas.liu@ucloud.cn (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] linux/dim: Fix divide 0 in RDMA DIM. | expand |
On Mon, Jun 27, 2022 at 07:30:36PM +0800, Tao Liu wrote: > We hit a divide 0 error in ofed 5.1.2.3.7.1. It is caused in > rdma_dim_stats_compare() when prev->cpe_ratio == 0. > > dim.c and rdma_dim.c in ofed share same code with upstream. > We check the 0 case in IS_SIGNIFICANT_DIFF(), and do not change > decision order. > > Signed-off-by: Tao Liu <thomas.liu@ucloud.cn> > --- > include/linux/dim.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) I liked the commit message from v1 more. It had proper kernel panic dump together with Fixes line. https://lore.kernel.org/all/20220623085858.42945-1-thomas.liu@ucloud.cn The change itself is ok. Thanks, Acked-by: Leon Romanovsky <leonro@nvidia.com>
On 6/27/2022 3:51 PM, Leon Romanovsky wrote: > On Mon, Jun 27, 2022 at 07:30:36PM +0800, Tao Liu wrote: >> We hit a divide 0 error in ofed 5.1.2.3.7.1. It is caused in >> rdma_dim_stats_compare() when prev->cpe_ratio == 0. >> >> dim.c and rdma_dim.c in ofed share same code with upstream. >> We check the 0 case in IS_SIGNIFICANT_DIFF(), and do not change >> decision order. >> >> Signed-off-by: Tao Liu <thomas.liu@ucloud.cn> >> --- >> include/linux/dim.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > I liked the commit message from v1 more. I think you need to do a combination of the commit msg (remove the ofed notion): "fix a divide 0 error in rdma_dim_stats_compare() when prev->cpe_ratio == 0. CallTrace: .... Fixes(...)" Otherwise, Looks good, Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com> > It had proper kernel panic dump together with Fixes line. > https://lore.kernel.org/all/20220623085858.42945-1-thomas.liu@ucloud.cn > > The change itself is ok. > > Thanks, > Acked-by: Leon Romanovsky <leonro@nvidia.com>
diff --git a/include/linux/dim.h b/include/linux/dim.h index b698266d0035..6c5733981563 100644 --- a/include/linux/dim.h +++ b/include/linux/dim.h @@ -21,7 +21,7 @@ * We consider 10% difference as significant. */ #define IS_SIGNIFICANT_DIFF(val, ref) \ - (((100UL * abs((val) - (ref))) / (ref)) > 10) + ((ref) && (((100UL * abs((val) - (ref))) / (ref)) > 10)) /* * Calculate the gap between two values.
We hit a divide 0 error in ofed 5.1.2.3.7.1. It is caused in rdma_dim_stats_compare() when prev->cpe_ratio == 0. dim.c and rdma_dim.c in ofed share same code with upstream. We check the 0 case in IS_SIGNIFICANT_DIFF(), and do not change decision order. Signed-off-by: Tao Liu <thomas.liu@ucloud.cn> --- include/linux/dim.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)