From: "Rafał Miłecki" <zajec5@gmail.com>
To: Kalle Valo <kvalo@codeaurora.org>, linux-wireless@vger.kernel.org
Cc: "Brett Rudley" <brudley@broadcom.com>,
"Arend van Spriel" <arend@broadcom.com>,
"Franky (Zhenhui) Lin" <frankyl@broadcom.com>,
"Hante Meuleman" <meuleman@broadcom.com>,
brcm80211-dev-list@broadcom.com,
"Rafał Miłecki" <zajec5@gmail.com>
Subject: [PATCH 1/5] brcmfmac: analyze descriptors of current component only
Date: Tue, 26 Jan 2016 17:57:01 +0100 [thread overview]
Message-ID: <1453827425-16455-2-git-send-email-zajec5@gmail.com> (raw)
In-Reply-To: <1453827425-16455-1-git-send-email-zajec5@gmail.com>
So far we were looking for address descriptors without a check for
crossing current component border. In case of dealing with unsupported
descriptor or descriptor missing at all the code would incorrectly get
data from another component.
Consider this binary-described component from BCM4366 EROM:
4bf83b01 TAG==CI CID==0x83b
20080201 TAG==CI PORTS==0+1 WRAPPERS==0+1
18400035 TAG==ADDR SZ_SZD TYPE_SLAVE
00050000
18107085 TAG==ADDR SZ_4K TYPE_SWRAP
Driver was assigning invalid base address to this core:
brcmfmac: [6 ] core 0x83b:32 base 0x18109000 wrap 0x18107000
which came from totally different component defined in EROM:
43b36701 TAG==CI CID==0x367
00000201 TAG==CI PORTS==0+1 WRAPPERS==0+0
18109005 TAG==ADDR SZ_4K TYPE_SLAVE
This change will also allow us to support components without wrapper
address in the future.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index 82e4382..e434e2a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -803,7 +803,14 @@ static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr,
*eromaddr -= 4;
return -EFAULT;
}
- } while (desc != DMP_DESC_ADDRESS);
+ } while (desc != DMP_DESC_ADDRESS &&
+ desc != DMP_DESC_COMPONENT);
+
+ /* stop if we crossed current component border */
+ if (desc == DMP_DESC_COMPONENT) {
+ *eromaddr -= 4;
+ return 0;
+ }
/* skip upper 32-bit address descriptor */
if (val & DMP_DESC_ADDRSIZE_GT32)
--
1.8.4.5
next prev parent reply other threads:[~2016-01-26 16:57 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 16:57 [PATCH 0/5] brcmfmac: support for new 14e43:4365 card with BCM4366 Rafał Miłecki
2016-01-26 16:57 ` Rafał Miłecki [this message]
2016-01-26 16:57 ` [PATCH 2/5] brcmfmac: allow storing PMU core without wrapper address Rafał Miłecki
2016-01-26 16:57 ` [PATCH 3/5] brcmfmac: read extended capabilities of ChipCommon core Rafał Miłecki
2016-01-26 16:57 ` [PATCH 4/5] brcmfmac: access PMU registers using standalone PMU core if available Rafał Miłecki
2016-01-26 17:30 ` kbuild test robot
2016-01-27 12:27 ` Kalle Valo
2016-01-27 13:08 ` Rafał Miłecki
2016-01-27 22:55 ` Julian Calaby
2016-01-26 16:57 ` [PATCH 5/5] brcmfmac: add support for 14e4:4365 PCI ID with BCM4366 chipset Rafał Miłecki
2016-02-06 11:53 ` [PATCH 0/5] brcmfmac: support for new 14e43:4365 card with BCM4366 Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1453827425-16455-2-git-send-email-zajec5@gmail.com \
--to=zajec5@gmail.com \
--cc=arend@broadcom.com \
--cc=brcm80211-dev-list@broadcom.com \
--cc=brudley@broadcom.com \
--cc=frankyl@broadcom.com \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=meuleman@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).