Re: [PATCH] IB/hfi1: Fix a wrapping test (make it less strict)

Doug Ledford
2017-10-23T15:05:16Z

On Fri, 2017-10-13 at 13:56 +0300, Dan Carpenter wrote:
> The "2 * UINT_MAX" overflows so the test is essentially doing this:
>
> if ((u64)(ts - cce->timestamp) > UINT_MAX - 1) {
>
> I've changed it to a 64bit type.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> Not tested.
>
> diff --git a/drivers/infiniband/hw/hfi1/mad.c
> b/drivers/infiniband/hw/hfi1/mad.c
> index f4c0ffc040cc..3aeea8afd44f 100644
> --- a/drivers/infiniband/hw/hfi1/mad.c
> +++ b/drivers/infiniband/hw/hfi1/mad.c
> @@ -3781,7 +3781,7 @@ static int __subn_get_opa_hfi1_cong_log(struct
> opa_smp *smp, u32 am,
> * required to wrap the counter are supposed to
> * be zeroed (CA10-49 IBTA, release 1.2.1, V1).
> */
> - if ((u64)(ts - cce->timestamp) > (2 * UINT_MAX))
> + if ((u64)(ts - cce->timestamp) > (2ULL * UINT_MAX))
> continue;
> memcpy(cong_log->events[i].local_qp_cn_entry, &cce-
> >lqpn, 3);
> memcpy(cong_log-
> >events[i].remote_qp_number_cn_entry,

Denny, I'm looking for feedback from you on this patch. This fixes a
bug, my only concern is that the code used to work with the bug, could
this make the code not work?

--
Doug Ledford <dledford@redhat.com>
GPG KeyID: B826A3330E572FDD
Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD