[PATCH v3 0/4] of: change overlay apply input data from unflattened
From: frowand . list
Date: Thu Feb 15 2018 - 00:36:37 EST
From: Frank Rowand <frank.rowand@xxxxxxxx>
Move duplicating and unflattening of an overlay flattened devicetree
(FDT) into the overlay application code. To accomplish this,
of_overlay_apply() is replaced by of_overlay_fdt_apply().
The copy of the FDT (aka "duplicate FDT") now belongs to devicetree
code, which is thus responsible for freeing the duplicate FDT. The
caller of of_overlay_fdt_apply() remains responsible for freeing the
original FDT.
The unflattened devicetree now belongs to devicetree code, which is
thus responsible for freeing the unflattened devicetree.
These ownership changes prevent early freeing of the duplicated FDT
or the unflattened devicetree, which could result in use after free
errors.
These changes led to migrating some unittest overlay data into
their own devicetree source files, and then converting most of
them to use sugar syntax instead of hand coding fragments.
Changes from v2:
- improve error messages in patch 4/4, as suggested by Geert
Changes from v1:
- rebase on v4.16-rc1
- update documentation
- split out error message to a separate patch
Frank Rowand (4):
of: change overlay apply input data from unflattened to FDT
of: Documentation: of_overlay_apply() replaced by
of_overlay_fdt_apply()
of: convert unittest overlay devicetree source to sugar syntax
of: improve reporting invalid overlay target path
Documentation/devicetree/overlay-notes.txt | 4 +-
drivers/of/of_private.h | 1 +
drivers/of/overlay.c | 129 ++++++++--
drivers/of/resolver.c | 6 -
drivers/of/unittest-data/Makefile | 28 ++-
drivers/of/unittest-data/overlay.dts | 101 ++++----
drivers/of/unittest-data/overlay_0.dts | 14 ++
drivers/of/unittest-data/overlay_1.dts | 14 ++
drivers/of/unittest-data/overlay_10.dts | 27 +++
drivers/of/unittest-data/overlay_11.dts | 28 +++
drivers/of/unittest-data/overlay_12.dts | 14 ++
drivers/of/unittest-data/overlay_13.dts | 14 ++
drivers/of/unittest-data/overlay_15.dts | 30 +++
drivers/of/unittest-data/overlay_2.dts | 9 +
drivers/of/unittest-data/overlay_3.dts | 9 +
drivers/of/unittest-data/overlay_4.dts | 18 ++
drivers/of/unittest-data/overlay_5.dts | 9 +
drivers/of/unittest-data/overlay_6.dts | 10 +
drivers/of/unittest-data/overlay_7.dts | 10 +
drivers/of/unittest-data/overlay_8.dts | 10 +
drivers/of/unittest-data/overlay_9.dts | 10 +
drivers/of/unittest-data/overlay_bad_phandle.dts | 23 +-
drivers/of/unittest-data/overlay_bad_symbol.dts | 25 +-
drivers/of/unittest-data/tests-overlay.dtsi | 217 +----------------
drivers/of/unittest.c | 294 +++++++++++------------
include/linux/of.h | 7 -
26 files changed, 574 insertions(+), 487 deletions(-)
create mode 100644 drivers/of/unittest-data/overlay_0.dts
create mode 100644 drivers/of/unittest-data/overlay_1.dts
create mode 100644 drivers/of/unittest-data/overlay_10.dts
create mode 100644 drivers/of/unittest-data/overlay_11.dts
create mode 100644 drivers/of/unittest-data/overlay_12.dts
create mode 100644 drivers/of/unittest-data/overlay_13.dts
create mode 100644 drivers/of/unittest-data/overlay_15.dts
create mode 100644 drivers/of/unittest-data/overlay_2.dts
create mode 100644 drivers/of/unittest-data/overlay_3.dts
create mode 100644 drivers/of/unittest-data/overlay_4.dts
create mode 100644 drivers/of/unittest-data/overlay_5.dts
create mode 100644 drivers/of/unittest-data/overlay_6.dts
create mode 100644 drivers/of/unittest-data/overlay_7.dts
create mode 100644 drivers/of/unittest-data/overlay_8.dts
create mode 100644 drivers/of/unittest-data/overlay_9.dts
--
Frank Rowand <frank.rowand@xxxxxxxx>