| From 6419e6cfef9ec265affb127e037b5118e0b05632 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 5 Apr 2022 18:55:37 +0200 |
| Subject: brcmfmac: sdio: Fix undefined behavior due to shift overflowing the |
| constant |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Borislav Petkov <bp@alien8.de> |
| |
| [ Upstream commit 6fb3a5868b2117611f41e421e10e6a8c2a13039a ] |
| |
| Fix: |
| |
| drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function ‘brcmf_sdio_drivestrengthinit’: |
| drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3798:2: error: case label does not reduce to an integer constant |
| case SDIOD_DRVSTR_KEY(BRCM_CC_43143_CHIP_ID, 17): |
| ^~~~ |
| drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3809:2: error: case label does not reduce to an integer constant |
| case SDIOD_DRVSTR_KEY(BRCM_CC_43362_CHIP_ID, 13): |
| ^~~~ |
| |
| See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory |
| details as to why it triggers with older gccs only. |
| |
| Signed-off-by: Borislav Petkov <bp@suse.de> |
| Cc: Arend van Spriel <aspriel@gmail.com> |
| Cc: Franky Lin <franky.lin@broadcom.com> |
| Cc: Hante Meuleman <hante.meuleman@broadcom.com> |
| Cc: Kalle Valo <kvalo@kernel.org> |
| Cc: "David S. Miller" <davem@davemloft.net> |
| Cc: Jakub Kicinski <kuba@kernel.org> |
| Cc: brcm80211-dev-list.pdl@broadcom.com |
| Cc: netdev@vger.kernel.org |
| Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> |
| Signed-off-by: Kalle Valo <kvalo@kernel.org> |
| Link: https://lore.kernel.org/r/Ykx0iRlvtBnKqtbG@zn.tnic |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c |
| index 998a4bd6db78..d8f34883c096 100644 |
| --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c |
| +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c |
| @@ -547,7 +547,7 @@ enum brcmf_sdio_frmtype { |
| BRCMF_SDIO_FT_SUB, |
| }; |
| |
| -#define SDIOD_DRVSTR_KEY(chip, pmu) (((chip) << 16) | (pmu)) |
| +#define SDIOD_DRVSTR_KEY(chip, pmu) (((unsigned int)(chip) << 16) | (pmu)) |
| |
| /* SDIO Pad drive strength to select value mappings */ |
| struct sdiod_drive_str { |
| -- |
| 2.35.1 |
| |