[PATCH] Add null pointer check to of_find_property

Subsystems: open firmware and flattened device tree, the rest · Maintainers: Rob Herring, Saravana Kannan, Linus Torvalds

STALE6743d

5 messages, 4 authors, 2008-05-12 · open the first message on its own page

[PATCH] Add null pointer check to of_find_property

From: Timur Tabi <hidden>
Date: 2008-05-07 19:20:09

Update function of_find_property() to return NULL if the device_node passed
to it is also NULL.  Otherwise, passing NULL will cause a null pointer
dereference.

Signed-off-by: Timur Tabi <redacted>
---

This patch allows callers to do this:

np = of_find_compatible_node(...);
prop = of_get_property(np);
if (!prop)
     goto error;

Today, we need a np==NULL check between the two of_ calls.  Some callers may
not care whether the node is missing or the property is missing.

 drivers/of/base.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 9bd7c4a..23ffb7c 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -65,6 +65,9 @@ struct property *of_find_property(const struct device_node *np,
 {
 	struct property *pp;
 
+	if (!np)
+		return NULL;
+
 	read_lock(&devtree_lock);
 	for (pp = np->properties; pp != 0; pp = pp->next) {
 		if (of_prop_cmp(pp->name, name) == 0) {
-- 
1.5.5

Re: [PATCH] Add null pointer check to of_find_property

From: Grant Likely <hidden>
Date: 2008-05-07 19:27:35

On Wed, May 7, 2008 at 1:19 PM, Timur Tabi [off-list ref] wrote:
Update function of_find_property() to return NULL if the device_node passed
 to it is also NULL.  Otherwise, passing NULL will cause a null pointer
 dereference.

 Signed-off-by: Timur Tabi [off-list ref]
Acked-by: Grant Likely <redacted>
 ---

 This patch allows callers to do this:

 np = of_find_compatible_node(...);
 prop = of_get_property(np);
 if (!prop)
     goto error;

 Today, we need a np==NULL check between the two of_ calls.  Some callers may
 not care whether the node is missing or the property is missing.

  drivers/of/base.c |    3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)

 diff --git a/drivers/of/base.c b/drivers/of/base.c
 index 9bd7c4a..23ffb7c 100644
 --- a/drivers/of/base.c
 +++ b/drivers/of/base.c
 @@ -65,6 +65,9 @@ struct property *of_find_property(const struct device_node *np,
  {
        struct property *pp;

 +       if (!np)
 +               return NULL;
 +
        read_lock(&devtree_lock);
        for (pp = np->properties; pp != 0; pp = pp->next) {
                if (of_prop_cmp(pp->name, name) == 0) {
 --
 1.5.5

 _______________________________________________
 Linuxppc-dev mailing list
 Linuxppc-dev@ozlabs.org
 https://ozlabs.org/mailman/listinfo/linuxppc-dev


-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

Re: [PATCH] Add null pointer check to of_find_property

From: Michael Ellerman <hidden>
Date: 2008-05-07 23:21:06

On Wed, 2008-05-07 at 14:19 -0500, Timur Tabi wrote:
Update function of_find_property() to return NULL if the device_node passed
to it is also NULL.  Otherwise, passing NULL will cause a null pointer
dereference.

Signed-off-by: Timur Tabi <redacted>
---

This patch allows callers to do this:
np = of_find_compatible_node(...);
prop = of_get_property(np);
if (!prop)
     goto error;

...

error:
 of_node_put(np)

:)

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person

Re: [PATCH] Add null pointer check to of_find_property

From: Paul Mackerras <hidden>
Date: 2008-05-09 04:50:19

Michael Ellerman writes:
On Wed, 2008-05-07 at 14:19 -0500, Timur Tabi wrote:
quoted
Update function of_find_property() to return NULL if the device_node passed
to it is also NULL.  Otherwise, passing NULL will cause a null pointer
dereference.

Signed-off-by: Timur Tabi <redacted>
---

This patch allows callers to do this:
np = of_find_compatible_node(...);
prop = of_get_property(np);
if (!prop)
     goto error;

...

error:
 of_node_put(np)

:)
And of_node_put looks like this:

void of_node_put(struct device_node *node)
{
        if (node)
                kref_put(&node->kref, of_node_release);
}

so it's OK.

:)

Paul.

Re: [PATCH] Add null pointer check to of_find_property

From: Timur Tabi <hidden>
Date: 2008-05-12 16:46:53

Timur Tabi wrote:
Update function of_find_property() to return NULL if the device_node passed
to it is also NULL.  Otherwise, passing NULL will cause a null pointer
dereference.

Signed-off-by: Timur Tabi <redacted>
Paul, please pick this up for 2.6.26.  The legacy_serial driver will crash
without it if there's no 'chosen' node in the device tree.  I'm sure there are
other drivers that would crash similarly if given a device tree with missing nodes.

-- 
Timur Tabi
Linux kernel developer at Freescale
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help