From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Date: Wed, 27 Mar 2024 13:56:03 +0100 A wrapper macro is available since the commit 54da6a0924311c7cf5015533991e44fb8eb12773 ("locking: Introduce __cleanup() based infrastructure"). Provide design options for the adjustment of affected source code by the means of the semantic patch language (Coccinelle software). Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> --- scripts/coccinelle/api/use_return_ptr.cocci | 57 +++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 scripts/coccinelle/api/use_return_ptr.cocci diff --git a/scripts/coccinelle/api/use_return_ptr.cocci b/scripts/coccinelle/api/use_return_ptr.cocci new file mode 100644 index 000000000000..7b42a58cceb2 --- /dev/null +++ b/scripts/coccinelle/api/use_return_ptr.cocci @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0 +/// Simplify a return statement by using a known wrapper macro. +// +// Keywords: wrapper macro conversion returning objects +// Confidence: High +// Options: --no-includes --include-headers + +virtual context, patch, report, org + +@depends on context@ +expression e; +@@ + if (!e) + return NULL; + <+... when any +*return \( e \| no_free_ptr(e) \) + ; + ...+> + +@depends on patch@ +expression e; +@@ + if (!e) + return NULL; + <+... when any +( +-return ++return_ptr( + e ++) + ; +| +-return no_free_ptr ++return_ptr + (e); +) + ...+> + +@x depends on org || report@ +expression e; +position p; +@@ + if (!e) + return NULL; + <+... when any + return@p \( e \| no_free_ptr(e) \) ; + ...+> + +@script:python depends on org@ +p << x.p; +@@ +coccilib.org.print_todo(p[0], "WARNING: opportunity for return_ptr()") + +@script:python depends on report@ +p << x.p; +@@ +coccilib.report.print_report(p[0], "WARNING: opportunity for return_ptr()") -- 2.44.0