pointers with __free attribute initialized to NULL pose potential cleanup issues [1] when a function uses interdependent variables with cleanup attributes
Link: https://docs.kernel.org/core-api/cleanup.html [1] Link: https://lore.kernel.org/all/[email protected]/ Suggested-by: Dan Williams <[email protected]> Signed-off-by: Ally Heev <[email protected]> --- Documentation/dev-tools/checkpatch.rst | 6 ++++++ scripts/checkpatch.pl | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst index 1a304bf38bcd27e50bbb7cd4383b07ac54d20b0a..c39213b814f487290d2b0e5d320a4313ada9bbad 100644 --- a/Documentation/dev-tools/checkpatch.rst +++ b/Documentation/dev-tools/checkpatch.rst @@ -1015,6 +1015,12 @@ Functions and Variables in case not initialized) to the pointer is freed automatically when the pointer goes out of scope. + **NULL_INITIALIZED_PTR_WITH_FREE** + Pointers with __free attribute should not be initialized to NULL. + Always define and assign such pointers in one statement. + + See: https://docs.kernel.org/core-api/cleanup.html + Permissions ----------- diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 1009a4a065e910143dabeee6640b3b3a4bd3fe06..cf186dafc191f1c39d01b3660f19101f6cc61a82 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -7728,6 +7728,12 @@ sub process { ERROR("UNINITIALIZED_PTR_WITH_FREE", "pointer '$1' with __free attribute should be initialized\n" . $herecurr); } + +# check for pointers with __free attribute initialized to NULL + while ($line =~ /\*\s*($Ident)\s+$FreeAttribute\s*=\s*NULL\b/g) { + WARN("NULL_INITIALIZED_PTR_WITH_FREE", + "pointer '$1' with __free attribute should be initialized to a non-NULL address\n" . $herecurr); + } } # If we have no input at all, then there is nothing to report on -- 2.47.3
