[bbb-overlays] Fixing overlay configfs for v4.14

From: Geert Uytterhoeven
Date: Tue Nov 21 2017 - 15:24:56 EST


Hi Pantelis,

Using overlay configfs on v4.14 requires two fixes, both due to commit
d1651b03c2df75db ("of: overlay: add overlay symbols to live device
tree"):

1. As the symbols were added to the ovinfo[] array without calling
of_fill_overlay_info(), the new of_overlay_info.info field (added by
your bbb-overlays patches) is not set up, causing a NULL pointer
dereference.

As calling of_fill_overlay_info() is not appropriate here, the patch
below fixes this by filling it in manually. Feel free to fold into
"of: overlay: add per overlay sysfs attributes".

2. "of: overlay: Pick up label symbols from overlays." must be
reverted, else loading overlays fails with:

OF: changeset: add_property failed @/__symbols__/...
OF: Error applying changeset (-17)

I've updated my topic/overlays and topic/renesas-overlays branches in
https://git.kernel.org/cgit/linux/kernel/git/geert/renesas-drivers.git
accordingly.

diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
index afa681014e19e3da..3cb6ae9ecb998d5e 100644
--- a/drivers/of/overlay.c
+++ b/drivers/of/overlay.c
@@ -569,6 +569,7 @@ static int of_build_overlay_info(struct of_overlay *ov,
if (node) {
ovinfo[cnt].overlay = node;
ovinfo[cnt].target = of_find_node_by_path("/__symbols__");
+ ovinfo[cnt].info = of_node_get(node);
ovinfo[cnt].is_symbols_node = 1;

if (!ovinfo[cnt].target) {

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds