From 1dcd3a98954075f3218d9bf1d00eaad250f92833 Mon Sep 17 00:00:00 2001
From: Mark Spender <mspender@solarflare.com>
Date: Mon, 10 Jun 2019 08:38:18 +0100
Subject: [PATCH] net/sfc/base: fix shift by more bits than field width

This was probably an oversight when support for multiple sensor pages
was added.

Despite being undefined behaviour in C, it probably worked on Intel
x32/x64 as on them bit shift operations wrap round.

Fixes: dfb3b1ce15f6 ("net/sfc/base: import monitors access via MCDI")
Cc: stable@dpdk.org

Signed-off-by: Mark Spender <mspender@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/base/mcdi_mon.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/sfc/base/mcdi_mon.c b/drivers/net/sfc/base/mcdi_mon.c
index b53de0d680..d0247dc44c 100644
--- a/drivers/net/sfc/base/mcdi_mon.c
+++ b/drivers/net/sfc/base/mcdi_mon.c
@@ -73,7 +73,8 @@ mcdi_mon_decode_stats(
 			/* This sensor is one of the page boundary bits. */
 		}
 
-		if (~(sensor_mask[page]) & (1U << sensor))
+		if (~(sensor_mask[page]) &
+		    (1U << (sensor % (sizeof (sensor_mask[page]) * 8))))
 			continue;
 		/* This sensor not in DMA buffer */
 
-- 
2.39.5