From e1319ea5db6dee48b7fa3a5822c3940dc649ee6a Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Tue, 10 Jun 2014 11:59:14 -0700 Subject: [PATCH 1/3] of/platform: Fix microblaze build failure Commit bf5db2f (microblaze: Use generic device.h) removes the microblaze specific pdev_archdata and dma_mask. At the same time, commit 591c1ee (of: configure the platform device dma parameters) initializes the just removed field. This causes all microblaze builds to fail. Drop the unnecessary initialization. Cc: Michal Simek Signed-off-by: Guenter Roeck Acked-by: Michal Simek Signed-off-by: Rob Herring --- drivers/of/platform.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 6c48d73a7fd7..500436f9be7f 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -166,10 +166,6 @@ static void of_dma_configure(struct platform_device *pdev) int ret; struct device *dev = &pdev->dev; -#if defined(CONFIG_MICROBLAZE) - pdev->archdata.dma_mask = 0xffffffffUL; -#endif - /* * Set default dma-mask to 32 bit. Drivers are expected to setup * the correct supported dma_mask. From 28d3ee40ef5ad488f4ad3376d8f237b9502cecfb Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 10 Jun 2014 09:57:00 -0700 Subject: [PATCH 2/3] of: avoid format string parsing in kobject names This makes sure a format string cannot leak into the kobject name that is constructed. (And splits the >80 character line.) Signed-off-by: Kees Cook Signed-off-by: Rob Herring --- drivers/of/base.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 8368d96ae7b4..f27d922eaece 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -227,7 +227,8 @@ static int __of_node_add(struct device_node *np) np->kobj.kset = of_kset; if (!np->parent) { /* Nodes without parents are new top level trees */ - rc = kobject_add(&np->kobj, NULL, safe_name(&of_kset->kobj, "base")); + rc = kobject_add(&np->kobj, NULL, "%s", + safe_name(&of_kset->kobj, "base")); } else { name = safe_name(&np->parent->kobj, kbasename(np->full_name)); if (!name || !name[0]) From 99de64984c3a7c9bf56a50e6dcc51006c9485620 Mon Sep 17 00:00:00 2001 From: Frank Rowand Date: Sat, 14 Jun 2014 20:39:05 -0700 Subject: [PATCH 3/3] OF: fix of_find_node_by_path() assumption that of_allnodes is root of_find_node_by_path() is borked because of_allnodes is not guaranteed to contain the root of the tree after using any of the dynamic update functions because some other nodes ends up as of_allnodes. Fixes: c22e650e66b8 of: Make of_find_node_by_path() handle /aliases Reported-by: pantelis.antoniou@konsulko.com Signed-off-by: Frank Rowand Signed-off-by: Rob Herring --- drivers/of/base.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index f27d922eaece..b9864806e9b8 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1961,9 +1961,9 @@ int of_attach_node(struct device_node *np) raw_spin_lock_irqsave(&devtree_lock, flags); np->sibling = np->parent->child; - np->allnext = of_allnodes; + np->allnext = np->parent->allnext; + np->parent->allnext = np; np->parent->child = np; - of_allnodes = np; of_node_clear_flag(np, OF_DETACHED); raw_spin_unlock_irqrestore(&devtree_lock, flags);