brcm_pcie_get_inbound_wins() can return negative error. As num_inbound_wins is unsigned, we'll be unable to recognize the error. Hence store return value of brcm_pcie_get_inbound_wins() in ret which is signed and store result back to num_inbound_wins after confirming that it isn't negative. Fixes: 46c981fd60de ("PCI: brcmstb: Refactor for chips with many regular inbound windows") Signed-off-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx> --- drivers/pci/controller/pcie-brcmstb.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 55311dc47615d..054810d7962d7 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -1090,9 +1090,10 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie) u32p_replace_bits(&tmp, 1, PCIE_MISC_MISC_CTRL_PCIE_RCB_64B_MODE_MASK); writel(tmp, base + PCIE_MISC_MISC_CTRL); - num_inbound_wins = brcm_pcie_get_inbound_wins(pcie, inbound_wins); - if (num_inbound_wins < 0) - return num_inbound_wins; + ret = brcm_pcie_get_inbound_wins(pcie, inbound_wins); + if (ret < 0) + return ret; + num_inbound_wins = (u8)ret; set_inbound_win_registers(pcie, inbound_wins, num_inbound_wins); -- 2.39.2