From: "Rodríguez Barbarin, José Javier" <JoseJavier.Rodriguez@duagon.com>
To: "morbidrsa@gmail.com" <morbidrsa@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "jth@kernel.org" <jth@kernel.org>,
"Sanjuán García, Jorge" <Jorge.SanjuanGarcia@duagon.com>,
"Rodríguez Barbarin,
José Javier" <JoseJavier.Rodriguez@duagon.com>
Subject: [PATCH v3 2/3] mcb-pci: Reallocate memory region to avoid memory overlapping
Date: Thu, 30 Mar 2023 10:50:06 +0000 [thread overview]
Message-ID: <20230330104949.21918-3-josejavier.rodriguez@duagon.com> (raw)
In-Reply-To: <20230330104949.21918-1-josejavier.rodriguez@duagon.com>
mcb-pci requests a fixed-size memory region to parse the chameleon
table, however, if the chameleon table is smaller that the allocated
region, it could overlap with the IP Cores' memory regions.
After parsing the chameleon table, drop/reallocate the memory region
with the actual chameleon table size.
Co-developed-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com>
Signed-off-by: Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com>
Signed-off-by: Javier Rodriguez <josejavier.rodriguez@duagon.com>
---
drivers/mcb/mcb-pci.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c
index dc88232d9af8..53d9202ff9a7 100644
--- a/drivers/mcb/mcb-pci.c
+++ b/drivers/mcb/mcb-pci.c
@@ -31,7 +31,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
struct resource *res;
struct priv *priv;
- int ret;
+ int ret, table_size;
unsigned long flags;
priv = devm_kzalloc(&pdev->dev, sizeof(struct priv), GFP_KERNEL);
@@ -90,7 +90,30 @@ static int mcb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (ret < 0)
goto out_mcb_bus;
- dev_dbg(&pdev->dev, "Found %d cells\n", ret);
+ table_size = ret;
+
+ if (table_size < CHAM_HEADER_SIZE) {
+ /* Release the previous resources */
+ devm_iounmap(&pdev->dev, priv->base);
+ devm_release_mem_region(&pdev->dev, priv->mapbase, CHAM_HEADER_SIZE);
+
+ /* Then, allocate it again with the actual chameleon table size */
+ res = devm_request_mem_region(&pdev->dev, priv->mapbase,
+ table_size,
+ KBUILD_MODNAME);
+ if (!res) {
+ dev_err(&pdev->dev, "Failed to request PCI memory\n");
+ ret = -EBUSY;
+ goto out_mcb_bus;
+ }
+
+ priv->base = devm_ioremap(&pdev->dev, priv->mapbase, table_size);
+ if (!priv->base) {
+ dev_err(&pdev->dev, "Cannot ioremap\n");
+ ret = -ENOMEM;
+ goto out_mcb_bus;
+ }
+ }
mcb_bus_add_devices(priv->bus);
--
2.34.1
next prev parent reply other threads:[~2023-03-30 10:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 10:50 [PATCH v3 0/3] mcb-pci: fix memory overlapping on MCB devices Rodríguez Barbarin, José Javier
2023-03-30 10:50 ` [PATCH v3 1/3] mcb: Return actual parsed size when reading chameleon table Rodríguez Barbarin, José Javier
2023-03-30 10:50 ` Rodríguez Barbarin, José Javier [this message]
2023-03-30 10:50 ` [PATCH v3 3/3] mcb-lpc: Reallocate memory region to avoid memory overlapping Rodríguez Barbarin, José Javier
2023-03-30 14:53 ` [PATCH v3 0/3] mcb-pci: fix memory overlapping on MCB devices Johannes Thumshirn
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=20230330104949.21918-3-josejavier.rodriguez@duagon.com \
--to=josejavier.rodriguez@duagon.com \
--cc=Jorge.SanjuanGarcia@duagon.com \
--cc=jth@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=morbidrsa@gmail.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
all inboxes | Powered by JetHome®