> 180 break; ---> Jump out of the loop without releasing it The device node reference is released behind this for loop. > 183 if (!of_device_is_available(state_node)) { > 184 of_node_put(state_node); This function call was added by the commit “cpuidle: dt: Add missing 'of_node_put()'” on 2017-06-12. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/cpuidle/dt_idle_states.c?id=b2cdd8e1b54849477a32d820acc2e87828a38f3d > 185 continue; ---> Release the object references within a loop I became curious on the applicability of an other coding style (for a software refactoring) at this place. How do you think about to achieve the same effect by using a goto statement instead of two statements in such an if branch? > 208 of_node_put(state_node); --> Release the object references within a loop > 209 } > 210 > 211 of_node_put(state_node); --> There may be double free here. This information points a recurring challenge out for safe source code analysis. How would you like to exclude the detection of false positives finally? > This code pattern is very interesting Thanks that you think also in this direction. > and the coccinelle software should also recognize this pattern. There are some open issues to consider for available analysis tools. How will corresponding details be clarified then? Regards, Markus