mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
i3c: fix incorrect address slot lookup on 64-bit
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: 3a379bbcea
("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>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20210922165600.179394-1-quic_jiles@quicinc.com
This commit is contained in:
parent
313ece2260
commit
f18f98110f
1 changed files with 2 additions and 1 deletions
|
@ -343,7 +343,8 @@ struct bus_type i3c_bus_type = {
|
||||||
static enum i3c_addr_slot_status
|
static enum i3c_addr_slot_status
|
||||||
i3c_bus_get_addr_slot_status(struct i3c_bus *bus, u16 addr)
|
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)
|
if (addr > I2C_MAX_ADDR)
|
||||||
return I3C_ADDR_SLOT_RSVD;
|
return I3C_ADDR_SLOT_RSVD;
|
||||||
|
|
Loading…
Add table
Reference in a new issue