Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1634088 > unrolled thread
| Started by | frowand.list@gmail.com |
|---|---|
| First post | 2017-05-02 04:50 +0200 |
| Last post | 2017-05-02 04:50 +0200 |
| Articles | 4 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH v4 0/4] of: remove *phandle properties from expanded device tree frowand.list@gmail.com - 2017-05-02 04:50 +0200
[PATCH v4 2/4] of: make __of_attach_node() static frowand.list@gmail.com - 2017-05-02 04:50 +0200
[PATCH v4 4/4] of: detect invalid phandle in overlay frowand.list@gmail.com - 2017-05-02 04:50 +0200
[PATCH v4 3/4] of: be consistent in form of file mode frowand.list@gmail.com - 2017-05-02 04:50 +0200
| From | frowand.list@gmail.com |
|---|---|
| Date | 2017-05-02 04:50 +0200 |
| Subject | [PATCH v4 0/4] of: remove *phandle properties from expanded device tree |
| Message-ID | <tCw2Z-rv-3@gated-at.bofh.it> |
From: Frank Rowand <frank.rowand@sony.com>
Remove "phandle" and "linux,phandle" properties from the internal
device tree. The phandle will still be in the struct device_node
phandle field.
This is to resolve the issue found by Stephen Boyd [1] when he changed
the type of struct property.value from void * to const void *. As
a result of the type change, the overlay code had compile errors
where the resolver updates phandle values.
[1] http://lkml.iu.edu/hypermail/linux/kernel/1702.1/04160.html
Patch 1 is the phandle related changes.
Patches 2 - 4 are minor fixups for issues that became visible
while implementing patch 1.
Changes from v3:
- patch 1: fix incorrect variable name in __of_add_phandle_sysfs().
Problem was reported by the kbuild test robot
Changes from v2:
- patch 1: Remove check in __of_add_phandle_sysfs() that would not
add a sysfs entry if IS_ENABLED(CONFIG_PPC_PSERIES)
Changes from v1:
- Remove phandle properties in of_attach_node(), before attaching
the node to the live tree.
- Add the phandle sysfs entry for the node in of_attach_node().
- When creating an overlay changeset, duplicate the node phandle in
__of_node_dup().
Frank Rowand (4):
of: remove *phandle properties from expanded device tree
of: make __of_attach_node() static
of: be consistent in form of file mode
of: detect invalid phandle in overlay
drivers/of/base.c | 50 +++++++++++++++++++++++++++++++++++++++----
drivers/of/dynamic.c | 56 ++++++++++++++++++++++++++++++++++++-------------
drivers/of/fdt.c | 40 +++++++++++++++++++++--------------
drivers/of/of_private.h | 2 +-
drivers/of/overlay.c | 8 ++++---
drivers/of/resolver.c | 23 +-------------------
include/linux/of.h | 1 +
7 files changed, 120 insertions(+), 60 deletions(-)
--
Frank Rowand <frank.rowand@sony.com>
[toc] | [next] | [standalone]
| From | frowand.list@gmail.com |
|---|---|
| Date | 2017-05-02 04:50 +0200 |
| Subject | [PATCH v4 2/4] of: make __of_attach_node() static |
| Message-ID | <tCw30-rv-13@gated-at.bofh.it> |
| In reply to | #1634088 |
From: Frank Rowand <frank.rowand@sony.com>
__of_attach_node() is not used outside of drivers/of/dynamic.c. Make
it static and remove it from drivers/of/of_private.h.
Signed-off-by: Frank Rowand <frank.rowand@sony.com>
---
drivers/of/dynamic.c | 2 +-
drivers/of/of_private.h | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c
index 59545b8fbf46..0b9cf6d5914c 100644
--- a/drivers/of/dynamic.c
+++ b/drivers/of/dynamic.c
@@ -216,7 +216,7 @@ int of_property_notify(int action, struct device_node *np,
return of_reconfig_notify(action, &pr);
}
-void __of_attach_node(struct device_node *np)
+static void __of_attach_node(struct device_node *np)
{
np->child = NULL;
np->sibling = np->parent->child;
diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h
index 33f11a5384f3..b1ff70e1fdda 100644
--- a/drivers/of/of_private.h
+++ b/drivers/of/of_private.h
@@ -79,7 +79,6 @@ extern int __of_update_property(struct device_node *np,
extern void __of_update_property_sysfs(struct device_node *np,
struct property *newprop, struct property *oldprop);
-extern void __of_attach_node(struct device_node *np);
extern int __of_attach_node_sysfs(struct device_node *np);
extern void __of_detach_node(struct device_node *np);
extern void __of_detach_node_sysfs(struct device_node *np);
--
Frank Rowand <frank.rowand@sony.com>
[toc] | [prev] | [next] | [standalone]
| From | frowand.list@gmail.com |
|---|---|
| Date | 2017-05-02 04:50 +0200 |
| Subject | [PATCH v4 4/4] of: detect invalid phandle in overlay |
| Message-ID | <tCw30-rv-21@gated-at.bofh.it> |
| In reply to | #1634088 |
From: Frank Rowand <frank.rowand@sony.com>
Overlays are not allowed to modify phandle values of previously existing
nodes because there is no information available to allow fixup up
properties that use the previously existing phandle.
Signed-off-by: Frank Rowand <frank.rowand@sony.com>
---
drivers/of/overlay.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
index ca0b85f5deb1..20ab49d2f7a4 100644
--- a/drivers/of/overlay.c
+++ b/drivers/of/overlay.c
@@ -130,6 +130,10 @@ static int of_overlay_apply_single_device_node(struct of_overlay *ov,
/* NOTE: Multiple mods of created nodes not supported */
tchild = of_get_child_by_name(target, cname);
if (tchild != NULL) {
+ /* new overlay phandle value conflicts with existing value */
+ if (child->phandle)
+ return -EINVAL;
+
/* apply overlay recursively */
ret = of_overlay_apply_one(ov, tchild, child);
of_node_put(tchild);
--
Frank Rowand <frank.rowand@sony.com>
[toc] | [prev] | [next] | [standalone]
| From | frowand.list@gmail.com |
|---|---|
| Date | 2017-05-02 04:50 +0200 |
| Subject | [PATCH v4 3/4] of: be consistent in form of file mode |
| Message-ID | <tCw30-rv-19@gated-at.bofh.it> |
| In reply to | #1634088 |
From: Frank Rowand <frank.rowand@sony.com> checkpatch whined about using S_IRUGO instead of octal equivalent when adding phandle sysfs code, so used octal in that patch. Change other instances of the S_* constants in the same file to the octal form. Signed-off-by: Frank Rowand <frank.rowand@sony.com> --- drivers/of/base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 8a0cf9003cf8..8a7ca2a49ba8 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -168,7 +168,7 @@ int __of_add_property_sysfs(struct device_node *np, struct property *pp) sysfs_bin_attr_init(&pp->attr); pp->attr.attr.name = safe_name(&np->kobj, pp->name); - pp->attr.attr.mode = secure ? S_IRUSR : S_IRUGO; + pp->attr.attr.mode = secure ? 0400 : 0444; pp->attr.size = secure ? 0 : pp->length; pp->attr.read = of_node_property_read; -- Frank Rowand <frank.rowand@sony.com>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web