Skip to content

Commit 611a4f5

Browse files
vladumnmorey
authored andcommitted
librdmacm/cmtime: Prevent time stats u32 overflow
[ Upstream commit 039fe91 ] The sum can overflow quite quickly on experiments with many connections. Convert the others too, though less likely to overflow in practice. Fixes: 76407ee ("librdmacm/cmtime: Update output format") Signed-off-by: Vlad Dumitrescu <vdumitrescu@nvidia.com> Reviewed-by: Sean Hefty <shefty@nvidia.com> Signed-off-by: Nicolas Morey <nmorey@suse.com>
1 parent 79372bb commit 611a4f5

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

librdmacm/examples/cmtime.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
#include <stdatomic.h>
4646
#include <netinet/tcp.h>
4747
#include <ccan/container_of.h>
48-
48+
#include <inttypes.h>
4949
#include <rdma/rdma_cma.h>
5050
#include "common.h"
5151

@@ -145,7 +145,7 @@ static inline bool is_client(void)
145145

146146
static void show_perf(int iter)
147147
{
148-
uint32_t diff, max[STEP_CNT], min[STEP_CNT], sum[STEP_CNT];
148+
uint64_t diff, max[STEP_CNT], min[STEP_CNT], sum[STEP_CNT];
149149
int i, c;
150150

151151
for (i = 0; i < STEP_CNT; i++) {
@@ -179,9 +179,10 @@ static void show_perf(int iter)
179179

180180
printf("step avg/iter total(us) us/conn sum(us) max(us) min(us)\n");
181181
for (i = 0; i < STEP_CNT; i++) {
182-
diff = (uint32_t) (times[i][1] - times[i][0]);
182+
diff = (uint64_t) (times[i][1] - times[i][0]);
183183

184-
printf("%-13s %10u %10u %10u %10u %10d %10u\n",
184+
printf("%-13s %10" PRIu64 " %10" PRIu64 " %10" PRIu64
185+
" %10" PRIu64 " %10" PRIu64 " %10" PRIu64 "\n",
185186
step_str[i], diff / iter, diff,
186187
sum[i] / iter, sum[i], max[i], min[i]);
187188
}

0 commit comments

Comments
 (0)