OSDN Git Service

ntb_hw_switchtec: potential shift wrapping bug in switchtec_ntb_init_sndev()
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 25 Mar 2019 09:17:26 +0000 (12:17 +0300)
committerJon Mason <jdmason@kudzu.us>
Thu, 13 Jun 2019 12:59:14 +0000 (08:59 -0400)
This code triggers a Smatch warning:

    drivers/ntb/hw/mscc/ntb_hw_switchtec.c:884 switchtec_ntb_init_sndev()
    warn: should '(1 << sndev->peer_partition)' be a 64 bit type?

The "part_map" and "tpart_vec" variables are u64 type so this seems like
a valid warning.

Fixes: 3df54c870f52 ("ntb_hw_switchtec: Allow using Switchtec NTB in multi-partition setups")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
drivers/ntb/hw/mscc/ntb_hw_switchtec.c

index d905d36..26a8873 100644 (file)
@@ -881,7 +881,7 @@ static int switchtec_ntb_init_sndev(struct switchtec_ntb *sndev)
                }
 
                sndev->peer_partition = ffs(tpart_vec) - 1;
-               if (!(part_map & (1 << sndev->peer_partition))) {
+               if (!(part_map & (1ULL << sndev->peer_partition))) {
                        dev_err(&sndev->stdev->dev,
                                "ntb target partition is not NT partition\n");
                        return -ENODEV;