diff --git a/drivers/of/address.c b/drivers/of/address.c index c42aebba35ab8248cf297bedd603de321929e988..30806dd35735057712d81be5f02b60b6eaa6c7e7 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -975,11 +975,13 @@ EXPORT_SYMBOL_GPL(of_dma_get_range); */ bool of_dma_is_coherent(struct device_node *np) { - struct device_node *node = of_node_get(np); + struct device_node *node; if (IS_ENABLED(CONFIG_OF_DMA_DEFAULT_COHERENT)) return true; + node = of_node_get(np); + while (node) { if (of_property_read_bool(node, "dma-coherent")) { of_node_put(node);