RDMA/irdma: Fix issues with u8 left shift operation
authorColin Ian King <colin.king@canonical.com>
Sat, 5 Jun 2021 12:20:59 +0000 (13:20 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 7 Jun 2021 23:19:03 +0000 (20:19 -0300)
commit7fde2dbe03f41fd9ce0f38ebf9879e02487e5bdc
tree15fdabc43ad3f21a5f194bbbee9e622a97ae9717
parentaeb27bb76ad8197eb47890b1ff470d5faf8ec9a5
RDMA/irdma: Fix issues with u8 left shift operation

The shifting of the u8 integer info->map[i] the left will be promoted
to a 32 bit signed int and then sign-extended to a u64. In the event
that the top bit of the u8 is set then all then all the upper 32 bits
of the u64 end up as also being set because of the sign-extension.
Fix this by casting the u8 values to a u64 before the left shift. This

Link: https://lore.kernel.org/r/20210605122059.25105-1-colin.king@canonical.com
Addresses-Coverity: ("Unitentional integer overflow / bad shift operation")
Fixes: 3f49d6842569 ("RDMA/irdma: Implement HW Admin Queue OPs")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/irdma/ctrl.c