From: Magnus Lindholm <linmag7@gmail.com>
To: davem@davemloft.net, andreas@gaisler.com, sparclinux@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
jirislaby@kernel.org, linux-serial@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, krzk@kernel.org, oleg@redhat.com,
linmag7@gmail.com
Subject: [PATCH v3 5/8] sparc64: validate Fire register properties before initialization
Date: Mon, 12 Oct 2026 20:48:06 +0200 [thread overview]
Message-ID: <20261012184826.986050-6-linmag7@gmail.com> (raw)
In-Reply-To: <20261012184826.986050-1-linmag7@gmail.com>
The Fire interrupt translator reads one reg entry, and PCI PBM setup
reads two, without checking that the firmware supplied enough data.
Check the property before allocating the translator or changing PBM
state. Halt early translation on invalid firmware data rather than leave
raw interrupt numbers untranslated. Return an error from PBM setup so
probe can release its allocations.
Signed-off-by: Magnus Lindholm <linmag7@gmail.com>
---
arch/sparc/kernel/pci_fire.c | 9 +++++++--
arch/sparc/kernel/prom_irqtrans.c | 8 +++++++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
index c35a8e3c1eae..db160eeb0ffe 100644
--- a/arch/sparc/kernel/pci_fire.c
+++ b/arch/sparc/kernel/pci_fire.c
@@ -416,7 +416,13 @@ static int pci_fire_pbm_init(struct pci_pbm_info *pbm,
{
const struct linux_prom64_registers *regs;
struct device_node *dp = op->dev.of_node;
- int err;
+ int err, len;
+
+ regs = of_get_property(dp, "reg", &len);
+ if (!regs || len < 2 * sizeof(*regs)) {
+ dev_err(&op->dev, "missing or short reg property\n");
+ return -EINVAL;
+ }
pbm->numa_node = NUMA_NO_NODE;
@@ -429,7 +435,6 @@ static int pci_fire_pbm_init(struct pci_pbm_info *pbm,
pbm->op = op;
pbm->name = dp->full_name;
- regs = of_get_property(dp, "reg", NULL);
pbm->pbm_regs = regs[0].phys_addr;
pbm->controller_regs = regs[1].phys_addr - 0x410000UL;
diff --git a/arch/sparc/kernel/prom_irqtrans.c b/arch/sparc/kernel/prom_irqtrans.c
index 5752bfd73ac0..558ed5114664 100644
--- a/arch/sparc/kernel/prom_irqtrans.c
+++ b/arch/sparc/kernel/prom_irqtrans.c
@@ -544,13 +544,19 @@ static void __init fire_irq_trans_init(struct device_node *dp)
{
const struct linux_prom64_registers *regs;
struct fire_irq_data *irq_data;
+ int len;
+
+ regs = of_get_property(dp, "reg", &len);
+ if (!regs || len < sizeof(*regs)) {
+ prom_printf("%s: missing or short reg property.\n", dp->full_name);
+ prom_halt();
+ }
dp->irq_trans = prom_early_alloc(sizeof(struct of_irq_controller));
dp->irq_trans->irq_build = fire_irq_build;
irq_data = prom_early_alloc(sizeof(struct fire_irq_data));
- regs = of_get_property(dp, "reg", NULL);
dp->irq_trans->data = irq_data;
irq_data->pbm_regs = regs[0].phys_addr;
next prev parent reply other threads:[~2026-10-12 18:48 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 18:48 [PATCH v3 0/8] sparc64: add Fujitsu M3000 support Magnus Lindholm
2026-10-12 18:48 ` [PATCH v3 1/8] sparc64: return from the generic clear_page implementation Magnus Lindholm
2026-10-12 18:55 ` sashiko-bot
2026-10-12 18:48 ` [PATCH v3 2/8] sparc64: honor queued spinlock layout in secondary startup Magnus Lindholm
2026-10-12 18:55 ` sashiko-bot
2026-10-12 18:48 ` [PATCH v3 3/8] sparc64: avoid huge kernel PUD mappings on sun4u Magnus Lindholm
2026-10-12 18:55 ` sashiko-bot
2026-10-12 18:48 ` [PATCH v3 4/8] sparc64: stop IRQ setup when descriptor allocation fails Magnus Lindholm
2026-10-12 19:03 ` sashiko-bot
2026-10-12 18:48 ` Magnus Lindholm [this message]
2026-10-12 18:55 ` [PATCH v3 5/8] sparc64: validate Fire register properties before initialization sashiko-bot
2026-10-12 18:48 ` [PATCH v3 6/8] sparc64: add SPARC64 VII CPU, MMU and SMP support Magnus Lindholm
2026-10-12 19:03 ` sashiko-bot
2026-10-12 18:48 ` [PATCH v3 7/8] sparc64: add M3000 Oberon PCIe support Magnus Lindholm
2026-10-12 19:01 ` sashiko-bot
2026-10-12 18:48 ` [PATCH v3 8/8] hvc: add an M3000 firmware console backend Magnus Lindholm
2026-10-12 18:57 ` sashiko-bot
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=20261012184826.986050-6-linmag7@gmail.com \
--to=linmag7@gmail.com \
--cc=andreas@gaisler.com \
--cc=davem@davemloft.net \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=oleg@redhat.com \
--cc=sparclinux@vger.kernel.org \
/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