From: Finn Thain <fthain@telegraphics.com.au>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-m68k@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 05/14] nubus: Validate slot resource IDs
Date: Tue, 5 Dec 2017 01:20:02 -0500 (EST) [thread overview]
Message-ID: <2b320fc21f2549f19de582fcbd296031e97fd683.1512454057.git.fthain@telegraphics.com.au> (raw)
In-Reply-To: <cover.1512454057.git.fthain@telegraphics.com.au>
While we are here, include the slot number in the related error messages.
Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
---
drivers/nubus/nubus.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/drivers/nubus/nubus.c b/drivers/nubus/nubus.c
index 2475b48c29d4..2919a5c7321a 100644
--- a/drivers/nubus/nubus.c
+++ b/drivers/nubus/nubus.c
@@ -616,7 +616,7 @@ static int __init nubus_get_board_resource(struct nubus_board *board, int slot,
nbtdata[0], nbtdata[1], nbtdata[2], nbtdata[3]);
if (nbtdata[0] != 1 || nbtdata[1] != 0 ||
nbtdata[2] != 0 || nbtdata[3] != 0)
- pr_err("this sResource is not a board resource!\n");
+ pr_err("Slot %X: sResource is not a board resource!\n", slot);
break;
}
case NUBUS_RESID_NAME:
@@ -671,6 +671,7 @@ static struct nubus_board * __init nubus_add_board(int slot, int bytelanes)
unsigned long dpat;
struct nubus_dir dir;
struct nubus_dirent ent;
+ int prev_resid = -1;
/* Move to the start of the format block */
rp = nubus_rom_addr(slot);
@@ -710,10 +711,10 @@ static struct nubus_board * __init nubus_add_board(int slot, int bytelanes)
/* Directory offset should be small and negative... */
if (!(board->doffset & 0x00FF0000))
- pr_warn("Dodgy doffset!\n");
+ pr_warn("Slot %X: Dodgy doffset!\n", slot);
dpat = nubus_get_rom(&rp, 4, bytelanes);
if (dpat != NUBUS_TEST_PATTERN)
- pr_warn("Wrong test pattern %08lx!\n", dpat);
+ pr_warn("Slot %X: Wrong test pattern %08lx!\n", slot, dpat);
/*
* I wonder how the CRC is meant to work -
@@ -739,12 +740,15 @@ static struct nubus_board * __init nubus_add_board(int slot, int bytelanes)
for each of them. */
if (nubus_readdir(&dir, &ent) == -1) {
/* We can't have this! */
- pr_err("Board resource not found!\n");
+ pr_err("Slot %X: Board resource not found!\n", slot);
return NULL;
- } else {
- nubus_get_board_resource(board, slot, &ent);
}
+ if (ent.type < 1 || ent.type > 127)
+ pr_warn("Slot %X: Board resource ID is invalid!\n", slot);
+
+ nubus_get_board_resource(board, slot, &ent);
+
while (nubus_readdir(&dir, &ent) != -1) {
struct nubus_dev *dev;
struct nubus_dev **devp;
@@ -753,6 +757,15 @@ static struct nubus_board * __init nubus_add_board(int slot, int bytelanes)
if (dev == NULL)
continue;
+ /* Resources should appear in ascending ID order. This sanity
+ * check prevents duplicate resource IDs.
+ */
+ if (dev->resid <= prev_resid) {
+ kfree(dev);
+ continue;
+ }
+ prev_resid = dev->resid;
+
/* We zeroed this out above */
if (board->first_dev == NULL)
board->first_dev = dev;
--
2.13.6
next prev parent reply other threads:[~2017-12-05 6:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-05 6:20 [PATCH v3 00/14] Modernization and fixes for NuBus subsystem Finn Thain
2017-12-05 6:20 ` [PATCH v3 02/14] nubus: Fix up header split Finn Thain
2017-12-05 6:20 ` [PATCH v3 01/14] nubus: Avoid array underflow and overflow Finn Thain
2017-12-05 6:20 ` [PATCH v3 03/14] nubus: Use static functions where possible Finn Thain
2017-12-05 6:20 ` [PATCH v3 09/14] nubus: Generalize block resource handling Finn Thain
2017-12-05 6:20 ` [PATCH v3 08/14] nubus: Clean up whitespace Finn Thain
2017-12-05 6:20 ` [PATCH v3 10/14] nubus: Rework /proc/bus/nubus/s/ implementation Finn Thain
2017-12-05 6:20 ` [PATCH v3 13/14] nubus: Add expansion_type values for various Mac models Finn Thain
2017-12-05 6:20 ` [PATCH v3 06/14] nubus: Call proc_mkdir() not more than once per slot directory Finn Thain
2017-12-05 6:20 ` Finn Thain [this message]
2017-12-05 6:20 ` [PATCH v3 07/14] nubus: Remove redundant code Finn Thain
2017-12-05 6:20 ` [PATCH v3 11/14] nubus: Rename struct nubus_dev Finn Thain
2017-12-05 13:50 ` Bartlomiej Zolnierkiewicz
2017-12-05 6:20 ` [PATCH v3 12/14] nubus: Adopt standard linked list implementation Finn Thain
2017-12-05 13:51 ` Bartlomiej Zolnierkiewicz
2017-12-05 6:20 ` [PATCH v3 14/14] nubus: Add support for the driver model Finn Thain
2017-12-05 8:25 ` Greg Kroah-Hartman
2017-12-07 9:57 ` Philippe Ombredanne
2017-12-10 10:03 ` Finn Thain
2017-12-10 12:08 ` Philippe Ombredanne
2017-12-05 6:20 ` [PATCH v3 04/14] nubus: Fix log spam Finn Thain
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=2b320fc21f2549f19de582fcbd296031e97fd683.1512454057.git.fthain@telegraphics.com.au \
--to=fthain@telegraphics.com.au \
--cc=geert@linux-m68k.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m68k@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;
as well as URLs for NNTP newsgroup(s).