diff mbox series

i3c: fix incorrect address slot lookup on 64-bit

Message ID 20210922165600.179394-1-quic_jiles@quicinc.com (mailing list archive)
State Accepted
Headers show
Series i3c: fix incorrect address slot lookup on 64-bit | expand

Commit Message

Jamie Iles Sept. 22, 2021, 4:56 p.m. UTC
The address slot bitmap is an array of unsigned long's which are the
same size as an int on 32-bit platforms but not 64-bit.  Loading the
bitmap into an int could result in the incorrect status being returned
for a slot and slots being reported as the wrong status.

Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Cc: Boris Brezillon <bbrezillon@kernel.org>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Jamie Iles <quic_jiles@quicinc.com>
---
 drivers/i3c/master.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Alexandre Belloni Sept. 25, 2021, 9:20 p.m. UTC | #1
On Wed, 22 Sep 2021 17:56:00 +0100, Jamie Iles wrote:
> The address slot bitmap is an array of unsigned long's which are the
> same size as an int on 32-bit platforms but not 64-bit.  Loading the
> bitmap into an int could result in the incorrect status being returned
> for a slot and slots being reported as the wrong status.
> 
> 

Applied, thanks!

[1/1] i3c: fix incorrect address slot lookup on 64-bit
      commit: a3587e2c0578101900d4abbbd72ab3dad6d5568a

Best regards,
diff mbox series

Patch

diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index e2e12a5585e5..426027110a79 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -345,7 +345,8 @@  struct bus_type i3c_bus_type = {
 static enum i3c_addr_slot_status
 i3c_bus_get_addr_slot_status(struct i3c_bus *bus, u16 addr)
 {
-	int status, bitpos = addr * 2;
+	unsigned long status;
+	int bitpos = addr * 2;
 
 	if (addr > I2C_MAX_ADDR)
 		return I3C_ADDR_SLOT_RSVD;