Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1244218 > unrolled thread
| Started by | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| First post | 2015-10-11 22:40 +0200 |
| Last post | 2015-10-15 13:20 +0200 |
| Articles | 11 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH] powerpc/mpc5xxx: Use of_get_next_parent to simplify code Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2015-10-11 22:40 +0200
Re: [PATCH] powerpc/mpc5xxx: Use of_get_next_parent to simplify code Julia Lawall <julia.lawall@lip6.fr> - 2015-10-11 22:50 +0200
Re: [PATCH] powerpc/mpc5xxx: Use of_get_next_parent to simplify code Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2015-10-12 07:10 +0200
Re: powerpc/mpc5xxx: Use of_get_next_parent to simplify code Michael Ellerman <mpe@ellerman.id.au> - 2015-10-14 06:10 +0200
[PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2015-10-15 08:00 +0200
Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Michael Ellerman <mpe@ellerman.id.au> - 2015-10-15 08:40 +0200
Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2015-10-16 08:30 +0200
Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Gabriel Paubert <paubert@iram.es> - 2015-10-16 09:50 +0200
Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Michael Ellerman <mpe@ellerman.id.au> - 2015-10-16 11:50 +0200
Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory Christophe JAILLET <christophe.jaillet@wanadoo.fr> - 2015-10-16 22:10 +0200
Re: powerpc/mpc5xxx: Use of_get_next_parent to simplify code Michael Ellerman <mpe@ellerman.id.au> - 2015-10-15 13:20 +0200
| From | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| Date | 2015-10-11 22:40 +0200 |
| Subject | [PATCH] powerpc/mpc5xxx: Use of_get_next_parent to simplify code |
| Message-ID | <qivzr-2sI-3@gated-at.bofh.it> |
of_get_next_parent can be used to simplify the while() loop and
avoid the need of a temp variable.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
arch/powerpc/sysdev/mpc5xxx_clocks.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
index f4f0301..5732926 100644
--- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
+++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
@@ -13,7 +13,6 @@
unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
{
- struct device_node *np;
const unsigned int *p_bus_freq = NULL;
of_node_get(node);
@@ -22,9 +21,7 @@ unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
if (p_bus_freq)
break;
- np = of_get_parent(node);
- of_node_put(node);
- node = np;
+ node = of_get_next_parent(node);
}
of_node_put(node);
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| Date | 2015-10-11 22:50 +0200 |
| Subject | Re: [PATCH] powerpc/mpc5xxx: Use of_get_next_parent to simplify code |
| Message-ID | <qivJ8-2Fs-19@gated-at.bofh.it> |
| In reply to | #1244218 |
On Sun, 11 Oct 2015, Christophe JAILLET wrote:
> of_get_next_parent can be used to simplify the while() loop and
> avoid the need of a temp variable.
Can you do something with the loop in __of_translate_address, in
drivers/of/address.c? Is there not an iterator for this?
julia
>
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> arch/powerpc/sysdev/mpc5xxx_clocks.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
> index f4f0301..5732926 100644
> --- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
> +++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
> @@ -13,7 +13,6 @@
>
> unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
> {
> - struct device_node *np;
> const unsigned int *p_bus_freq = NULL;
>
> of_node_get(node);
> @@ -22,9 +21,7 @@ unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
> if (p_bus_freq)
> break;
>
> - np = of_get_parent(node);
> - of_node_put(node);
> - node = np;
> + node = of_get_next_parent(node);
> }
> of_node_put(node);
>
> --
> 2.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| Date | 2015-10-12 07:10 +0200 |
| Message-ID | <qiDx0-5Nl-19@gated-at.bofh.it> |
| In reply to | #1244222 |
Le 11/10/2015 22:44, Julia Lawall a écrit : > >> of_get_next_parent can be used to simplify the while() loop and >> avoid the need of a temp variable. > Can you do something with the loop in __of_translate_address, in > drivers/of/address.c? Is there not an iterator for this? > > julia > Hi Julia, There does not seem to be any 'for_each_parent_of_node' or equivalent. Best regards, CJ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Michael Ellerman <mpe@ellerman.id.au> |
|---|---|
| Date | 2015-10-14 06:10 +0200 |
| Subject | Re: powerpc/mpc5xxx: Use of_get_next_parent to simplify code |
| Message-ID | <qjly2-3OG-5@gated-at.bofh.it> |
| In reply to | #1244218 |
On Sun, 2015-11-10 at 20:27:40 UTC, Christophe Jaillet wrote:
> of_get_next_parent can be used to simplify the while() loop and
> avoid the need of a temp variable.
>
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> arch/powerpc/sysdev/mpc5xxx_clocks.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
> index f4f0301..5732926 100644
> --- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
> +++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
> @@ -13,7 +13,6 @@
>
> unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
> {
> - struct device_node *np;
> const unsigned int *p_bus_freq = NULL;
>
> of_node_get(node);
> @@ -22,9 +21,7 @@ unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
> if (p_bus_freq)
> break;
>
> - np = of_get_parent(node);
> - of_node_put(node);
> - node = np;
> + node = of_get_next_parent(node);
> }
> of_node_put(node);
This conversion is OK, but the logic in the function is still wrong.
It uses of_get_property() inside the loop, but then drops the reference to the
node before dereferencing the p_bus_freq pointer, which could by then point to
junk if the node has been freed.
Instead it should use of_property_read_u32() to actually read the property
value before dropping the reference.
cheers
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| Date | 2015-10-15 08:00 +0200 |
| Subject | [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qjJK1-5GL-7@gated-at.bofh.it> |
| In reply to | #1246294 |
Use 'of_property_read_u32()' instead of 'of_get_property()'+pointer
dereference in order to avoid access to potentially freed memory.
Use 'of_get_next_parent()' to simplify the while() loop and avoid the
need of a temp variable.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
v2: Use of_property_read_u32 instead of of_get_property+pointer dereference
*** Untested ***
---
arch/powerpc/sysdev/mpc5xxx_clocks.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
index f4f0301..92fbcf8 100644
--- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
+++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
@@ -13,21 +13,17 @@
unsigned long mpc5xxx_get_bus_frequency(struct device_node *node)
{
- struct device_node *np;
- const unsigned int *p_bus_freq = NULL;
+ u32 bus_freq = 0;
of_node_get(node);
while (node) {
- p_bus_freq = of_get_property(node, "bus-frequency", NULL);
- if (p_bus_freq)
+ if (!of_property_read_u32(node, "bus-frequency", &bus_freq))
break;
- np = of_get_parent(node);
- of_node_put(node);
- node = np;
+ node = of_get_next_parent(node);
}
of_node_put(node);
- return p_bus_freq ? *p_bus_freq : 0;
+ return bus_freq;
}
EXPORT_SYMBOL(mpc5xxx_get_bus_frequency);
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Michael Ellerman <mpe@ellerman.id.au> |
|---|---|
| Date | 2015-10-15 08:40 +0200 |
| Subject | Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qjKmK-6HK-31@gated-at.bofh.it> |
| In reply to | #1247401 |
On Thu, 2015-10-15 at 07:56 +0200, Christophe JAILLET wrote: > Use 'of_property_read_u32()' instead of 'of_get_property()'+pointer > dereference in order to avoid access to potentially freed memory. > > Use 'of_get_next_parent()' to simplify the while() loop and avoid the > need of a temp variable. > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- > v2: Use of_property_read_u32 instead of of_get_property+pointer dereference > *** Untested *** Thanks. Can someone with an mpc5xxx test this? cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| Date | 2015-10-16 08:30 +0200 |
| Subject | Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qk6GB-6cl-9@gated-at.bofh.it> |
| In reply to | #1247479 |
Le 15/10/2015 08:36, Michael Ellerman a écrit : > On Thu, 2015-10-15 at 07:56 +0200, Christophe JAILLET wrote: >> Use 'of_property_read_u32()' instead of 'of_get_property()'+pointer >> dereference in order to avoid access to potentially freed memory. >> >> Use 'of_get_next_parent()' to simplify the while() loop and avoid the >> need of a temp variable. >> >> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> >> --- >> v2: Use of_property_read_u32 instead of of_get_property+pointer dereference >> *** Untested *** > Thanks. > > Can someone with an mpc5xxx test this? > > cheers > Hi, I don't think it is an issue, but while looking at another similar patch, I noticed that the proposed patch adds a call to be32_to_cpup() (within of_property_read_u32). Apparently, powerPC is a BE architecture, so this call should be a no-op. Just wanted to point it out, in case of. Best regards, CJ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Gabriel Paubert <paubert@iram.es> |
|---|---|
| Date | 2015-10-16 09:50 +0200 |
| Subject | Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qk7W2-872-35@gated-at.bofh.it> |
| In reply to | #1248370 |
On Fri, Oct 16, 2015 at 08:20:13AM +0200, Christophe JAILLET wrote:
> Le 15/10/2015 08:36, Michael Ellerman a écrit :
> >On Thu, 2015-10-15 at 07:56 +0200, Christophe JAILLET wrote:
> >>Use 'of_property_read_u32()' instead of 'of_get_property()'+pointer
> >>dereference in order to avoid access to potentially freed memory.
> >>
> >>Use 'of_get_next_parent()' to simplify the while() loop and avoid the
> >>need of a temp variable.
> >>
> >>Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> >>---
> >>v2: Use of_property_read_u32 instead of of_get_property+pointer dereference
> >>*** Untested ***
> >Thanks.
> >
> >Can someone with an mpc5xxx test this?
> >
> >cheers
> >
>
> Hi,
> I don't think it is an issue, but while looking at another similar
> patch, I noticed that the proposed patch adds a call to
> be32_to_cpup() (within of_property_read_u32).
> Apparently, powerPC is a BE architecture, so this call should be a no-op.
Sadly no more. 32 bit is BE only, but 64 bit can be either BEtter or
LEsser.
Gabriel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Michael Ellerman <mpe@ellerman.id.au> |
|---|---|
| Date | 2015-10-16 11:50 +0200 |
| Subject | Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qk9Ob-2oP-25@gated-at.bofh.it> |
| In reply to | #1248370 |
On Fri, 2015-10-16 at 08:20 +0200, Christophe JAILLET wrote: > Le 15/10/2015 08:36, Michael Ellerman a écrit : > > On Thu, 2015-10-15 at 07:56 +0200, Christophe JAILLET wrote: > > > Use 'of_property_read_u32()' instead of > > > 'of_get_property()'+pointer > > > dereference in order to avoid access to potentially freed memory. > > > > > > Use 'of_get_next_parent()' to simplify the while() loop and avoid > > > the > > > need of a temp variable. > > > > > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > > > --- > > > v2: Use of_property_read_u32 instead of of_get_property+pointer > > > dereference > > > *** Untested *** > > Thanks. > > > > Can someone with an mpc5xxx test this? > > Hi, > I don't think it is an issue, but while looking at another similar > patch, I noticed that the proposed patch adds a call to > be32_to_cpup() > (within of_property_read_u32). > Apparently, powerPC is a BE architecture, so this call should be a no > -op. > > Just wanted to point it out, in case of. Hi Christoph, I'm not sure I follow. The device tree is always big endian, but of_property_read_u32() does the conversion to CPU endian for you already. That is one of the advantages of using it. cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
|---|---|
| Date | 2015-10-16 22:10 +0200 |
| Subject | Re: [PATCH v2] powerpc/mpc5xxx: Avoid dereferencing potentially freed memory |
| Message-ID | <qkju9-8qx-1@gated-at.bofh.it> |
| In reply to | #1248534 |
Le 16/10/2015 11:49, Michael Ellerman a écrit : > On Fri, 2015-10-16 at 08:20 +0200, Christophe JAILLET wrote: >> Le 15/10/2015 08:36, Michael Ellerman a écrit : >>> On Thu, 2015-10-15 at 07:56 +0200, Christophe JAILLET wrote: >>>> Use 'of_property_read_u32()' instead of >>>> 'of_get_property()'+pointer >>>> dereference in order to avoid access to potentially freed memory. >>>> >>>> Use 'of_get_next_parent()' to simplify the while() loop and avoid >>>> the >>>> need of a temp variable. >>>> >>>> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> >>>> --- >>>> v2: Use of_property_read_u32 instead of of_get_property+pointer >>>> dereference >>>> *** Untested *** >>> Thanks. >>> >>> Can someone with an mpc5xxx test this? >> Hi, >> I don't think it is an issue, but while looking at another similar >> patch, I noticed that the proposed patch adds a call to >> be32_to_cpup() >> (within of_property_read_u32). >> Apparently, powerPC is a BE architecture, so this call should be a no >> -op. >> >> Just wanted to point it out, in case of. > Hi Christoph, > > I'm not sure I follow. > > The device tree is always big endian, but of_property_read_u32() does > the > conversion to CPU endian for you already. That is one of the advantages > of > using it. > > cheers > Hi, sorry if un-clear. What I mean is that in the patch related 'powerpc/sysdev/mpc5xxx_clocks.c', there was no call to 'be32_to_cpup'. So in the proposed patch, 'of_property_read_u32' adds it. While in the patch against 'powerpc/kernel/prom.c', 'be32_to_cpup' was called explicitly. So using 'of_property_read_u32' keep the same logic. Basically the code from 'mpc5xxx_clocks.c' and from 'prom.c' were written the same way. I found spurious that a call to 'be32_to_cpup' was done in only one case. Maybe, it was a missing in 'mpc5xxx_clocks.c'. I don't know if it can be an issue or not. I just find it 'strange'. CJ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Michael Ellerman <mpe@ellerman.id.au> |
|---|---|
| Date | 2015-10-15 13:20 +0200 |
| Subject | Re: powerpc/mpc5xxx: Use of_get_next_parent to simplify code |
| Message-ID | <qjOJI-4LQ-29@gated-at.bofh.it> |
| In reply to | #1244218 |
On Sun, 2015-11-10 at 20:27:40 UTC, Christophe Jaillet wrote: > of_get_next_parent can be used to simplify the while() loop and > avoid the need of a temp variable. > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/b340587e68b479e52039f800 cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web