i3c: fix incorrect address slot lookup on 64-bit
[ Upstream commit f18f98110f2b179792cb70d85cba697320a3790f ] 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> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Link: https://lore.kernel.org/r/20210922165600.179394-1-quic_jiles@quicinc.com Stable-dep-of: 851bd21cdb55 ("i3c: master: Fix dynamic address leak when 'assigned-address' is present") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2f716567ad
commit
b14e10b87b
1 changed files with 2 additions and 1 deletions
|
@ -347,7 +347,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;
|
||||
|
|
Loading…
Reference in a new issue