diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2018-07-20 00:11:52 +0300 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2018-07-20 00:11:52 +0300 |
commit | 73ab603f44149ff48889d5109ea9ab64bf38cc69 (patch) | |
tree | 9550d8fb31ddf6dffedf1f602ed44769e529c1d3 /drivers/of/overlay.c | |
parent | 41afb1dfad4d6af0c716746f6a15f3230482955c (diff) | |
parent | fb7d1bcf1602b46f37ada72178516c01a250e434 (diff) | |
download | linux-73ab603f44149ff48889d5109ea9ab64bf38cc69.tar.xz |
Merge branch 'linus' into x86/timers
Pick up upstream changes to avoid conflicts
Diffstat (limited to 'drivers/of/overlay.c')
-rw-r--r-- | drivers/of/overlay.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 7baa53e5b1d7..eda57ef12fd0 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -804,6 +804,8 @@ static int of_overlay_apply(const void *fdt, struct device_node *tree, goto err_free_overlay_changeset; } + of_populate_phandle_cache(); + ret = __of_changeset_apply_notify(&ovcs->cset); if (ret) pr_err("overlay changeset entry notify error %d\n", ret); @@ -1046,8 +1048,17 @@ int of_overlay_remove(int *ovcs_id) list_del(&ovcs->ovcs_list); + /* + * Disable phandle cache. Avoids race condition that would arise + * from removing cache entry when the associated node is deleted. + */ + of_free_phandle_cache(); + ret_apply = 0; ret = __of_changeset_revert_entries(&ovcs->cset, &ret_apply); + + of_populate_phandle_cache(); + if (ret) { if (ret_apply) devicetree_state_flags |= DTSF_REVERT_FAIL; |