From: frowand.list@gmail.com
To: Rob Herring <robh+dt@kernel.org>,
Pantelis Antoniou <pantelis.antoniou@konsulko.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>, Alan Tull <atull@kernel.org>,
Moritz Fischer <mdf@kernel.org>
Cc: devicetree@vger.kernel.org, linux-fpga@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: [PATCH v4 18/18] of: unittest: initialize args before calling of_*parse_*()
Date: Mon, 15 Oct 2018 19:37:38 -0700 [thread overview]
Message-ID: <1539657458-24401-19-git-send-email-frowand.list@gmail.com> (raw)
In-Reply-To: <1539657458-24401-1-git-send-email-frowand.list@gmail.com>
From: Frank Rowand <frank.rowand@sony.com>
Callers of of_irq_parse_one() blindly use the pointer args.np
without checking whether of_irq_parse_one() had an error and
thus did not set the value of args.np. Initialize args to
zero so that using the format "%pOF" to show the value of
args.np will show "(null)" when of_irq_parse_one() has an
error. This prevents the dereference of a random value.
Make the same fix for callers of of_parse_phandle_with_args()
and of_parse_phandle_with_args_map().
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Frank Rowand <frank.rowand@sony.com>
---
drivers/of/unittest.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 785985bdbfa6..5f4db23e4752 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -375,6 +375,7 @@ static void __init of_unittest_parse_phandle_with_args(void)
for (i = 0; i < 8; i++) {
bool passed = true;
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args(np, "phandle-list",
"#phandle-cells", i, &args);
@@ -428,6 +429,7 @@ static void __init of_unittest_parse_phandle_with_args(void)
}
/* Check for missing list property */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args(np, "phandle-list-missing",
"#phandle-cells", 0, &args);
unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc);
@@ -436,6 +438,7 @@ static void __init of_unittest_parse_phandle_with_args(void)
unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc);
/* Check for missing cells property */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args(np, "phandle-list",
"#phandle-cells-missing", 0, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
@@ -444,6 +447,7 @@ static void __init of_unittest_parse_phandle_with_args(void)
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
/* Check for bad phandle in list */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args(np, "phandle-list-bad-phandle",
"#phandle-cells", 0, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
@@ -452,6 +456,7 @@ static void __init of_unittest_parse_phandle_with_args(void)
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
/* Check for incorrectly formed argument list */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args(np, "phandle-list-bad-args",
"#phandle-cells", 1, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
@@ -502,6 +507,7 @@ static void __init of_unittest_parse_phandle_with_args_map(void)
for (i = 0; i < 8; i++) {
bool passed = true;
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args_map(np, "phandle-list",
"phandle", i, &args);
@@ -559,21 +565,25 @@ static void __init of_unittest_parse_phandle_with_args_map(void)
}
/* Check for missing list property */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args_map(np, "phandle-list-missing",
"phandle", 0, &args);
unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc);
/* Check for missing cells,map,mask property */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args_map(np, "phandle-list",
"phandle-missing", 0, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
/* Check for bad phandle in list */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-phandle",
"phandle", 0, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
/* Check for incorrectly formed argument list */
+ memset(&args, 0, sizeof(args));
rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-args",
"phandle", 1, &args);
unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc);
@@ -780,7 +790,7 @@ static void __init of_unittest_parse_interrupts(void)
for (i = 0; i < 4; i++) {
bool passed = true;
- args.args_count = 0;
+ memset(&args, 0, sizeof(args));
rc = of_irq_parse_one(np, i, &args);
passed &= !rc;
@@ -801,7 +811,7 @@ static void __init of_unittest_parse_interrupts(void)
for (i = 0; i < 4; i++) {
bool passed = true;
- args.args_count = 0;
+ memset(&args, 0, sizeof(args));
rc = of_irq_parse_one(np, i, &args);
/* Test the values from tests-phandle.dtsi */
@@ -854,6 +864,7 @@ static void __init of_unittest_parse_interrupts_extended(void)
for (i = 0; i < 7; i++) {
bool passed = true;
+ memset(&args, 0, sizeof(args));
rc = of_irq_parse_one(np, i, &args);
/* Test the values from tests-phandle.dtsi */
--
Frank Rowand <frank.rowand@sony.com>
next prev parent reply other threads:[~2018-10-16 3:27 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-16 2:37 [PATCH v4 00/18] of: overlay: validation checks, subsequent fixes frowand.list
2018-10-16 2:37 ` [PATCH v4 01/18] of: overlay: add tests to validate kfrees from overlay removal frowand.list
2018-10-17 21:30 ` Alan Tull
2018-10-18 20:24 ` Alan Tull
2018-10-18 17:03 ` Rob Herring
2018-10-18 19:01 ` Frank Rowand
2018-10-16 2:37 ` [PATCH v4 02/18] of: overlay: add missing of_node_put() after add new node to changeset frowand.list
2018-10-18 17:05 ` Rob Herring
2018-10-18 19:02 ` Frank Rowand
2018-10-16 2:37 ` [PATCH v4 03/18] of: overlay: add missing of_node_get() in __of_attach_node_sysfs frowand.list
2018-10-16 2:37 ` [PATCH v4 04/18] powerpc/pseries: add of_node_put() in dlpar_detach_node() frowand.list
2018-10-18 17:09 ` Rob Herring
2018-10-18 19:09 ` Frank Rowand
2018-10-19 16:10 ` Rob Herring
2018-10-16 2:37 ` [PATCH v4 05/18] of: overlay: use prop add changeset entry for property in new nodes frowand.list
2018-10-16 2:37 ` [PATCH v4 06/18] of: overlay: do not duplicate properties from overlay for " frowand.list
2018-10-16 2:37 ` [PATCH v4 07/18] of: dynamic: change type of of_{at, de}tach_node() to void frowand.list
2018-10-16 2:37 ` [PATCH v4 08/18] of: overlay: reorder fields in struct fragment frowand.list
2018-10-16 2:37 ` [PATCH v4 09/18] of: overlay: validate overlay properties #address-cells and #size-cells frowand.list
2018-10-18 18:13 ` Rob Herring
2018-10-18 19:13 ` Frank Rowand
2018-10-16 2:37 ` [PATCH v4 10/18] of: overlay: make all pr_debug() and pr_err() messages unique frowand.list
2018-10-16 2:37 ` [PATCH v4 11/18] of: overlay: test case of two fragments adding same node frowand.list
2018-10-16 2:37 ` [PATCH v4 12/18] of: overlay: check prevents multiple fragments add or delete " frowand.list
2018-10-16 2:37 ` [PATCH v4 13/18] of: overlay: check prevents multiple fragments touching same property frowand.list
2018-10-16 2:37 ` [PATCH v4 14/18] of: unittest: remove unused of_unittest_apply_overlay() argument frowand.list
2018-10-16 2:37 ` [PATCH v4 15/18] of: overlay: set node fields from properties when add new overlay node frowand.list
2018-10-16 2:37 ` [PATCH v4 16/18] of: unittest: allow base devicetree to have symbol metadata frowand.list
2018-10-16 2:37 ` [PATCH v4 17/18] of: unittest: find overlays[] entry by name instead of index frowand.list
2018-10-16 2:37 ` frowand.list [this message]
2018-10-16 9:47 ` [PATCH v4 00/18] of: overlay: validation checks, subsequent fixes Michael Ellerman
2018-10-17 3:08 ` Frank Rowand
2018-10-17 21:16 ` Alan Tull
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=1539657458-24401-19-git-send-email-frowand.list@gmail.com \
--to=frowand.list@gmail.com \
--cc=atull@kernel.org \
--cc=benh@kernel.crashing.org \
--cc=devicetree@vger.kernel.org \
--cc=linux-fpga@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mdf@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=pantelis.antoniou@konsulko.com \
--cc=paulus@samba.org \
--cc=robh+dt@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).