Subject: Coverity: irdma_prm_get_pbles(): Integer handling issues

From: coverity-bot <[email-masked]>
Date: Tue, 8 Jun 2021 11:01:04 -0700

Hello!

This is an experimental semi-automated report about issues detected by
Coverity from a scan of next-20210608 as part of the linux-next scan project:
https://scan.coverity.com/projects/linux-next-weekly-scan

You're getting this email because you were associated with the identified
lines of code (noted below) that were touched by commits:

  Wed Jun 2 19:55:19 2021 -0300
    915cc7ac0f8e ("RDMA/irdma: Add miscellaneous utility definitions")

Coverity reported the following:

*** CID 1505157:  Integer handling issues  (OVERFLOW_BEFORE_WIDEN)
/drivers/infiniband/hw/irdma/utils.c: 2329 in irdma_prm_get_pbles()
2323     	struct list_head *chunk_entry = pprm->clist.next;
2324     	u32 offset;
2325     	unsigned long flags;
2326     	*vaddr = 0;
2327     	*fpm_addr = 0;
2328
vvv     CID 1505157:  Integer handling issues  (OVERFLOW_BEFORE_WIDEN)
vvv     Potentially overflowing expression "1 << pprm->pble_shift" with type "int" (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "u64" (64 bits, unsigned).
2329     	bits_needed = (mem_size + (1 << pprm->pble_shift) - 1) >> pprm->pble_shift;
2330
2331     	spin_lock_irqsave(&pprm->prm_lock, flags);
2332     	while (chunk_entry != &pprm->clist) {
2333     		pchunk = (struct irdma_chunk *)chunk_entry;
2334     		bit_idx = bitmap_find_next_zero_area(pchunk->bitmapbuf,

If this is a false positive, please let us know so we can mark it as
such, or teach the Coverity rules to be smarter. If not, please make
sure fixes get into linux-next. :) For patches fixing this, please
include these lines (but double-check the "Fixes" first):

Reported-by: coverity-bot <[email-masked]>
Addresses-Coverity-ID: 1505157 ("Integer handling issues")
Fixes: 915cc7ac0f8e ("RDMA/irdma: Add miscellaneous utility definitions")

Thanks for your attention!

-- 
Coverity-bot