From: Ally Heev <allyheev@gmail.com>
To: Dwaipayan Ray <dwaipayanray1@gmail.com>,
Lukas Bulwahn <lukas.bulwahn@gmail.com>,
Joe Perches <joe@perches.com>, Jonathan Corbet <corbet@lwn.net>,
Andy Whitcroft <apw@canonical.com>
Cc: workflows@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
Dan Carpenter <dan.carpenter@linaro.org>,
David Hunter <david.hunter.linux@gmail.com>,
Shuah Khan <skhan@linuxfoundation.org>,
Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>,
Stephen Boyd <sboyd@kernel.org>,
linux-pm <linux-pm@vger.kernel.org>,
dan.j.williams@intel.com, Ally Heev <allyheev@gmail.com>
Subject: [PATCH v2 1/2] checkpatch: add uninitialized pointer with __free attribute check
Date: Fri, 24 Oct 2025 22:59:15 +0530 [thread overview]
Message-ID: <20251024-aheev-checkpatch-uninitialized-free-v2-1-16c0900e8130@gmail.com> (raw)
In-Reply-To: <20251024-aheev-checkpatch-uninitialized-free-v2-0-16c0900e8130@gmail.com>
uninitialized pointers with __free attribute can cause undefined
behaviour as the memory allocated to the pointer is freed
automatically when the pointer goes out of scope.
add check in checkpatch to detect such issues
Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/all/8a4c0b43-cf63-400d-b33d-d9c447b7e0b9@suswa.mountain/
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Ally Heev <allyheev@gmail.com>
---
Documentation/dev-tools/checkpatch.rst | 5 +++++
scripts/checkpatch.pl | 7 +++++++
2 files changed, 12 insertions(+)
diff --git a/Documentation/dev-tools/checkpatch.rst b/Documentation/dev-tools/checkpatch.rst
index d5c47e560324fb2399a5b1bc99c891ed1de10535..1a304bf38bcd27e50bbb7cd4383b07ac54d20b0a 100644
--- a/Documentation/dev-tools/checkpatch.rst
+++ b/Documentation/dev-tools/checkpatch.rst
@@ -1009,6 +1009,11 @@ Functions and Variables
return bar;
+ **UNINITIALIZED_PTR_WITH_FREE**
+ Pointers with __free attribute should be initialized. Not doing so
+ may lead to undefined behavior as the memory allocated (garbage,
+ in case not initialized) to the pointer is freed automatically
+ when the pointer goes out of scope.
Permissions
-----------
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 92669904eecc7a8d2afd3f2625528e02b6d17cd6..1009a4a065e910143dabeee6640b3b3a4bd3fe06 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -509,6 +509,7 @@ our $InitAttributeData = qr{$InitAttributePrefix(?:initdata\b)};
our $InitAttributeConst = qr{$InitAttributePrefix(?:initconst\b)};
our $InitAttributeInit = qr{$InitAttributePrefix(?:init\b)};
our $InitAttribute = qr{$InitAttributeData|$InitAttributeConst|$InitAttributeInit};
+our $FreeAttribute = qr{__free\s*\(\s*$Ident\s*\)};
# Notes to $Attribute:
# We need \b after 'init' otherwise 'initconst' will cause a false positive in a check
@@ -7721,6 +7722,12 @@ sub process {
ERROR("MISSING_SENTINEL", "missing sentinel in ID array\n" . "$here\n$stat\n");
}
}
+
+# check for uninitialized pointers with __free attribute
+ while ($line =~ /\*\s*($Ident)\s+$FreeAttribute\s*[,;]/g) {
+ ERROR("UNINITIALIZED_PTR_WITH_FREE",
+ "pointer '$1' with __free attribute should be initialized\n" . $herecurr);
+ }
}
# If we have no input at all, then there is nothing to report on
--
2.47.3
next prev parent reply other threads:[~2025-10-24 17:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-24 17:29 [PATCH v2 0/2] checkpatch: add checks incorrectly initialized pointers with __free attr Ally Heev
2025-10-24 17:29 ` Ally Heev [this message]
2025-10-24 18:14 ` [PATCH v2 1/2] checkpatch: add uninitialized pointer with __free attribute check Joe Perches
2025-10-25 3:37 ` ally heev
2025-10-24 17:29 ` [PATCH v2 2/2] add check for pointers with __free attribute initialized to NULL Ally Heev
2025-10-24 18:01 ` Joe Perches
2025-10-24 18:14 ` dan.j.williams
2025-10-24 18:23 ` Joe Perches
2025-10-24 18:37 ` dan.j.williams
2025-10-25 6:17 ` ally heev
2025-10-24 18:08 ` Dan Carpenter
2025-10-25 6:23 ` ally heev
2025-10-27 5:27 ` Dan Carpenter
2025-10-27 8:34 ` ally heev
2025-10-25 6:29 ` ally heev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251024-aheev-checkpatch-uninitialized-free-v2-1-16c0900e8130@gmail.com \
--to=allyheev@gmail.com \
--cc=apw@canonical.com \
--cc=corbet@lwn.net \
--cc=dan.carpenter@linaro.org \
--cc=dan.j.williams@intel.com \
--cc=david.hunter.linux@gmail.com \
--cc=dwaipayanray1@gmail.com \
--cc=joe@perches.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukas.bulwahn@gmail.com \
--cc=nm@ti.com \
--cc=sboyd@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=vireshk@kernel.org \
--cc=workflows@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).