of/address: Fix of_node memory leak in of_dma_is_coherent
Commitdabf6b36b8
("of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc") added a check to of_dma_is_coherent which returns early if OF_DMA_DEFAULT_COHERENT is enabled. This results in the of_node_put() being skipped causing a memory leak. Moved the of_node_get() below this check so we now we only get the node if OF_DMA_DEFAULT_COHERENT is not enabled. Fixes:dabf6b36b8
("of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc") Signed-off-by: Evan Nimmo <evan.nimmo@alliedtelesis.co.nz> Link: https://lore.kernel.org/r/20201110022825.30895-1-evan.nimmo@alliedtelesis.co.nz Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
f8394f232b
commit
a5bea04fcc
|
@ -1034,11 +1034,13 @@ out:
|
||||||
*/
|
*/
|
||||||
bool of_dma_is_coherent(struct device_node *np)
|
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))
|
if (IS_ENABLED(CONFIG_OF_DMA_DEFAULT_COHERENT))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
node = of_node_get(np);
|
||||||
|
|
||||||
while (node) {
|
while (node) {
|
||||||
if (of_property_read_bool(node, "dma-coherent")) {
|
if (of_property_read_bool(node, "dma-coherent")) {
|
||||||
of_node_put(node);
|
of_node_put(node);
|
||||||
|
|
Loading…
Reference in New Issue