@@ -0,0 +1,38 @@+#include<linux/string.h>+#include<linux/err.h>+#include<linux/slab.h>+#include<linux/of.h>++#include"of_helpers.h"++/**+*pseries_of_derive_parent-basicallylikedirname(1)+*@path:thefull_nameofanodetobeaddedtothetree+*+*Returnsthenodewhichshouldbetheparentofthenode+*describedbypath.E.g.,forpath="/foo/bar",returns+*thenodewithfull_name="/foo".+*/+structdevice_node*pseries_of_derive_parent(constchar*path)+{+structdevice_node*parent=NULL;+char*parent_path="/";+size_tparent_path_len=strrchr(path,'/')-path+1;++/* reject if path is "/" */+if(!strcmp(path,"/"))+returnERR_PTR(-EINVAL);++if(strrchr(path,'/')!=path){+parent_path=kmalloc(parent_path_len,GFP_KERNEL);+if(!parent_path)+returnERR_PTR(-ENOMEM);+strlcpy(parent_path,path,parent_path_len);+}+parent=of_find_node_by_path(parent_path);+if(!parent)+returnERR_PTR(-EINVAL);+if(strcmp(parent_path,"/"))+kfree(parent_path);+returnparent;+}
@@ -22,37 +22,7 @@#include<asm/uaccess.h>#include<asm/mmu.h>-/**-*derive_parent-basicallylikedirname(1)-*@path:thefull_nameofanodetobeaddedtothetree-*-*Returnsthenodewhichshouldbetheparentofthenode-*describedbypath.E.g.,forpath="/foo/bar",returns-*thenodewithfull_name="/foo".-*/-staticstructdevice_node*derive_parent(constchar*path)-{-structdevice_node*parent=NULL;-char*parent_path="/";-size_tparent_path_len=strrchr(path,'/')-path+1;--/* reject if path is "/" */-if(!strcmp(path,"/"))-returnERR_PTR(-EINVAL);--if(strrchr(path,'/')!=path){-parent_path=kmalloc(parent_path_len,GFP_KERNEL);-if(!parent_path)-returnERR_PTR(-ENOMEM);-strlcpy(parent_path,path,parent_path_len);-}-parent=of_find_node_by_path(parent_path);-if(!parent)-returnERR_PTR(-EINVAL);-if(strcmp(parent_path,"/"))-kfree(parent_path);-returnparent;-}+#include"of_helpers.h"staticintpSeries_reconfig_add_node(constchar*path,structproperty*proplist){
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-08-11 11:23:15
The derive_parent() has similar semantics to what we have in newly introduced
of_helpers module. The replacement reduces code base and propagates the actual
error code to the caller.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/dlpar.c | 31 +++++--------------------------
1 file changed, 5 insertions(+), 26 deletions(-)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-08-11 11:23:43
In case we have a full node name like /foo/bar and /foo is not found the
parent_path left unfreed. So, free a memory before return to a caller.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/of_helpers.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-08-11 11:23:44
The helper kstrndup() will do the same in one line.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/of_helpers.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-08-11 11:23:45
In case we have node without '/' strrchr() returns NULL which might lead to
crash. Replace strrchr() by kbasename() and modify condition to avoid such
behaviour.
Suggested-by: Segher Boessenkool <redacted>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/of_helpers.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2015-08-14 11:52:00
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted hunk
The derive_parent() has similar semantics to what we have in newly introduced
of_helpers module. The replacement reduces code base and propagates the actual
error code to the caller.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/dlpar.c | 31 +++++--------------------------
1 file changed, 5 insertions(+), 26 deletions(-)
^
?
There are cross compilers on kernel.org, or on Ubuntu you can just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
cheers
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-09-30 16:20:18
On Fri, 2015-08-14 at 21:51 +1000, Michael Ellerman wrote:
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted
The derive_parent() has similar semantics to what we have in newly
introduced
of_helpers module. The replacement reduces code base and propagates
the actual
error code to the caller.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
arch/powerpc/platforms/pseries/dlpar.c | 31 +++++-----------------
---------
1 file changed, 5 insertions(+), 26 deletions(-)
^
?
There are cross compilers on kernel.org, or on Ubuntu you can just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
Thanks! I tried today and the above the only problem with the series.
Would you like me to resend whole series?
cheers
--
Andy Shevchenko [off-list ref]
Intel Finland Oy
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2015-10-01 02:56:40
On Wed, 2015-09-30 at 19:19 +0300, Andy Shevchenko wrote:
On Fri, 2015-08-14 at 21:51 +1000, Michael Ellerman wrote:
quoted
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted
int dlpar_attach_node(struct device_node *dn)
{
int rc;
- dn->parent = derive_parent(dn->full_name);
- if (!dn->parent)
- return -ENOMEM;
+ dn->parent = pseries_of_derive_parent(dn->full_name);
+ if (IS_ERR(dn->parent))
+ return PTR_ERR(dn_parent);
^
?
There are cross compilers on kernel.org, or on Ubuntu you can just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
Thanks! I tried today and the above the only problem with the series.
Would you like me to resend whole series?
I'd like someone to test it. I gather that you haven't because it didn't
compile.
I assume you don't have access to hardware to test it on?
cheers
On 10/1/15, Michael Ellerman [off-list ref] wrote:
On Wed, 2015-09-30 at 19:19 +0300, Andy Shevchenko wrote:
quoted
On Fri, 2015-08-14 at 21:51 +1000, Michael Ellerman wrote:
quoted
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted
int dlpar_attach_node(struct device_node *dn)
{
int rc;
- dn->parent = derive_parent(dn->full_name);
- if (!dn->parent)
- return -ENOMEM;
+ dn->parent = pseries_of_derive_parent(dn->full_name);
+ if (IS_ERR(dn->parent))
+ return PTR_ERR(dn_parent);
^
?
There are cross compilers on kernel.org, or on Ubuntu you can just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
Thanks! I tried today and the above the only problem with the series.
Would you like me to resend whole series?
I'd like someone to test it. I gather that you haven't because it didn't
compile.
Oh yeah, totally untested:
CC arch/powerpc/platforms/pseries/dlpar.o
arch/powerpc/platforms/pseries/dlpar.c: In function 'dlpar_attach_node':
arch/powerpc/platforms/pseries/dlpar.c:255:18: error: 'dn_parent'
undeclared (first use in this function)
return PTR_ERR(dn_parent);
^
arch/powerpc/platforms/pseries/dlpar.c:255:18: note: each undeclared
identifier is reported only once for each function it appears in
scripts/Makefile.build:258: recipe for target
'arch/powerpc/platforms/pseries/dlpar.o' failed
make[2]: *** [arch/powerpc/platforms/pseries/dlpar.o] Error 1
scripts/Makefile.build:403: recipe for target
'arch/powerpc/platforms/pseries' failed
make[1]: *** [arch/powerpc/platforms/pseries] Error 2
Makefile:941: recipe for target 'arch/powerpc/platforms' failed
make: *** [arch/powerpc/platforms] Error 2
I assume you don't have access to hardware to test it on?
cheers
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Date: 2015-10-01 08:39:35
On Thu, 2015-10-01 at 10:02 +0300, Denis Kirjanov wrote:
On 10/1/15, Michael Ellerman [off-list ref] wrote:
quoted
On Wed, 2015-09-30 at 19:19 +0300, Andy Shevchenko wrote:
quoted
On Fri, 2015-08-14 at 21:51 +1000, Michael Ellerman wrote:
quoted
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted
int dlpar_attach_node(struct device_node *dn)
{
int rc;
- dn->parent = derive_parent(dn->full_name);
- if (!dn->parent)
- return -ENOMEM;
+ dn->parent = pseries_of_derive_parent(dn
->full_name);
+ if (IS_ERR(dn->parent))
+ return PTR_ERR(dn_parent);
^
?
There are cross compilers on kernel.org, or on Ubuntu you can
just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
Thanks! I tried today and the above the only problem with the
series.
Would you like me to resend whole series?
I'd like someone to test it. I gather that you haven't because it
didn't
compile.
Oh yeah, totally untested:
CC arch/powerpc/platforms/pseries/dlpar.o
arch/powerpc/platforms/pseries/dlpar.c: In function
'dlpar_attach_node':
arch/powerpc/platforms/pseries/dlpar.c:255:18: error: 'dn_parent'
undeclared (first use in this function)
return PTR_ERR(dn_parent);
^
arch/powerpc/platforms/pseries/dlpar.c:255:18: note: each undeclared
identifier is reported only once for each function it appears in
scripts/Makefile.build:258: recipe for target
'arch/powerpc/platforms/pseries/dlpar.o' failed
make[2]: *** [arch/powerpc/platforms/pseries/dlpar.o] Error 1
scripts/Makefile.build:403: recipe for target
'arch/powerpc/platforms/pseries' failed
make[1]: *** [arch/powerpc/platforms/pseries] Error 2
Makefile:941: recipe for target 'arch/powerpc/platforms' failed
make: *** [arch/powerpc/platforms] Error 2
Like I mentioned earlier this is the only one issue to compile the
series. Can you fix it and try on real HW?
quoted
I assume you don't have access to hardware to test it on?
cheers
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
--
Andy Shevchenko [off-list ref]
Intel Finland Oy
On Thu, 2015-10-01 at 10:02 +0300, Denis Kirjanov wrote:
quoted
On 10/1/15, Michael Ellerman [off-list ref] wrote:
quoted
On Wed, 2015-09-30 at 19:19 +0300, Andy Shevchenko wrote:
quoted
On Fri, 2015-08-14 at 21:51 +1000, Michael Ellerman wrote:
quoted
On Tue, 2015-11-08 at 11:23:09 UTC, Andy Shevchenko wrote:
quoted
int dlpar_attach_node(struct device_node *dn)
{
int rc;
- dn->parent = derive_parent(dn->full_name);
- if (!dn->parent)
- return -ENOMEM;
+ dn->parent = pseries_of_derive_parent(dn
->full_name);
+ if (IS_ERR(dn->parent))
+ return PTR_ERR(dn_parent);
^
?
There are cross compilers on kernel.org, or on Ubuntu you can
just:
$ apt-get install gcc-powerpc-linux-gnu
$ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-gcc
Thanks! I tried today and the above the only problem with the
series.
Would you like me to resend whole series?
I'd like someone to test it. I gather that you haven't because it
didn't
compile.
Oh yeah, totally untested:
CC arch/powerpc/platforms/pseries/dlpar.o
arch/powerpc/platforms/pseries/dlpar.c: In function
'dlpar_attach_node':
arch/powerpc/platforms/pseries/dlpar.c:255:18: error: 'dn_parent'
undeclared (first use in this function)
return PTR_ERR(dn_parent);
^
arch/powerpc/platforms/pseries/dlpar.c:255:18: note: each undeclared
identifier is reported only once for each function it appears in
scripts/Makefile.build:258: recipe for target
'arch/powerpc/platforms/pseries/dlpar.o' failed
make[2]: *** [arch/powerpc/platforms/pseries/dlpar.o] Error 1
scripts/Makefile.build:403: recipe for target
'arch/powerpc/platforms/pseries' failed
make[1]: *** [arch/powerpc/platforms/pseries] Error 2
Makefile:941: recipe for target 'arch/powerpc/platforms' failed
make: *** [arch/powerpc/platforms] Error 2
Like I mentioned earlier this is the only one issue to compile the
series. Can you fix it and try on real HW?
Please resend the updates series and then I'll test it.
Thanks!
quoted
quoted
I assume you don't have access to hardware to test it on?
cheers
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
--
Andy Shevchenko [off-list ref]
Intel Finland Oy