Re: [PATCH v2 03/15] NTB: Fix UB/bug in ntb_mw_get_align()

From: Logan Gunthorpe
Date: Tue Dec 05 2017 - 12:01:28 EST




On 05/12/17 09:52 AM, Jon Mason wrote:
On Sun, Dec 3, 2017 at 2:17 PM, Serge Semin <fancer.lancer@xxxxxxxxx> wrote:
Simple (1 << pidx) operation causes undefined behaviour when
pidx >= 32. It must be casted to u64 to match the actual return
value of ntb_link_is_up() method, so to have all the possible
peer indexes covered and to get rid of undefined behaviour.
Additionally there are special macros in "linux/bitops.h" to perform
the bit-set-shift operations, so it's recommended to have them used
for proper bit setting.

This looks good to me, but also seems like a bug fix. Please comment
on if this is not noticed.

It would be a bug on any system that has more than 32 partitions which is run on a 32 bit machine (or 64 partitions on a 64bit machine). Such a system is theoretical for the foreseeable future. But it would be good to fix it now.

Logan