Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> ---
CC: Gerd Hoffmann <[email protected]> CC: "Gonglei (Arei)" <[email protected]> CC: Eduardo Habkost <[email protected]> CC: Igor Mammedov <[email protected]> CC: Laurent Vivier <[email protected]> CC: Amit Shah <[email protected]> CC: Kevin Wolf <[email protected]> CC: Max Reitz <[email protected]> CC: John Snow <[email protected]> CC: Ari Sundholm <[email protected]> CC: Pavel Dovgalyuk <[email protected]> CC: Paolo Bonzini <[email protected]> CC: Stefan Hajnoczi <[email protected]> CC: Fam Zheng <[email protected]> CC: Stefan Weil <[email protected]> CC: Ronnie Sahlberg <[email protected]> CC: Peter Lieven <[email protected]> CC: Eric Blake <[email protected]> CC: "Denis V. Lunev" <[email protected]> CC: Markus Armbruster <[email protected]> CC: Alberto Garcia <[email protected]> CC: Jason Dillaman <[email protected]> CC: Wen Congyang <[email protected]> CC: Xie Changlong <[email protected]> CC: Liu Yuan <[email protected]> CC: "Richard W.M. Jones" <[email protected]> CC: Jeff Cody <[email protected]> CC: "Marc-André Lureau" <[email protected]> CC: "Daniel P. Berrangé" <[email protected]> CC: Richard Henderson <[email protected]> CC: Greg Kurz <[email protected]> CC: "Michael S. Tsirkin" <[email protected]> CC: Marcel Apfelbaum <[email protected]> CC: Beniamino Galvani <[email protected]> CC: Peter Maydell <[email protected]> CC: "Cédric Le Goater" <[email protected]> CC: Andrew Jeffery <[email protected]> CC: Joel Stanley <[email protected]> CC: Andrew Baumann <[email protected]> CC: "Philippe Mathieu-Daudé" <[email protected]> CC: Antony Pavlov <[email protected]> CC: Jean-Christophe Dubois <[email protected]> CC: Peter Chubb <[email protected]> CC: Subbaraya Sundeep <[email protected]> CC: Eric Auger <[email protected]> CC: Alistair Francis <[email protected]> CC: "Edgar E. Iglesias" <[email protected]> CC: Stefano Stabellini <[email protected]> CC: Anthony Perard <[email protected]> CC: Paul Durrant <[email protected]> CC: Paul Burton <[email protected]> CC: Aleksandar Rikalo <[email protected]> CC: Chris Wulff <[email protected]> CC: Marek Vasut <[email protected]> CC: David Gibson <[email protected]> CC: Cornelia Huck <[email protected]> CC: Halil Pasic <[email protected]> CC: Christian Borntraeger <[email protected]> CC: "Hervé Poussineau" <[email protected]> CC: Xiao Guangrong <[email protected]> CC: Aurelien Jarno <[email protected]> CC: Aleksandar Markovic <[email protected]> CC: Mark Cave-Ayland <[email protected]> CC: Jason Wang <[email protected]> CC: Laszlo Ersek <[email protected]> CC: Yuval Shaia <[email protected]> CC: Palmer Dabbelt <[email protected]> CC: Sagar Karandikar <[email protected]> CC: Bastian Koppelmann <[email protected]> CC: David Hildenbrand <[email protected]> CC: Thomas Huth <[email protected]> CC: Eric Farman <[email protected]> CC: Matthew Rosato <[email protected]> CC: Hannes Reinecke <[email protected]> CC: Michael Walle <[email protected]> CC: Artyom Tarasenko <[email protected]> CC: Stefan Berger <[email protected]> CC: Samuel Thibault <[email protected]> CC: Alex Williamson <[email protected]> CC: Tony Krowiak <[email protected]> CC: Pierre Morel <[email protected]> CC: Michael Roth <[email protected]> CC: Hailiang Zhang <[email protected]> CC: Juan Quintela <[email protected]> CC: "Dr. David Alan Gilbert" <[email protected]> CC: Luigi Rizzo <[email protected]> CC: Giuseppe Lettieri <[email protected]> CC: Vincenzo Maffione <[email protected]> CC: Jan Kiszka <[email protected]> CC: Anthony Green <[email protected]> CC: Stafford Horne <[email protected]> CC: Guan Xuetao <[email protected]> CC: Max Filippov <[email protected]> CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected] scripts/coccinelle/auto-propagated-errp.cocci | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 scripts/coccinelle/auto-propagated-errp.cocci diff --git a/scripts/coccinelle/auto-propagated-errp.cocci b/scripts/coccinelle/auto-propagated-errp.cocci new file mode 100644 index 0000000000..d9731620aa --- /dev/null +++ b/scripts/coccinelle/auto-propagated-errp.cocci @@ -0,0 +1,118 @@ +@rule0@ +// Add invocation to errp-functions where necessary +identifier fn, local_err; +symbol errp; +@@ + + fn(..., Error **errp, ...) + { ++ ERRP_AUTO_PROPAGATE(); + <+... +( + error_append_hint(errp, ...); +| + error_prepend(errp, ...); +| + Error *local_err = NULL; +) + ...+> + } + +@@ +// Drop doubled invocation +identifier rule0.fn; +@@ + + fn(...) +{ +- ERRP_AUTO_PROPAGATE(); + ERRP_AUTO_PROPAGATE(); + ... +} + +@rule1@ +// Drop local_err +identifier fn, local_err; +symbol errp; +@@ + + fn(..., Error **errp, ...) + { + <... +- Error *local_err = NULL; + ...> + } + +@@ +// Handle pattern with goto, otherwise we'll finish up +// with labels at function end which will not compile. +identifier rule1.fn; +identifier rule1.local_err; +identifier OUT; +@@ + + fn(...) + { + <... +- goto OUT; ++ return; + ...> +- OUT: +- error_propagate(errp, local_err); + } + +@@ +identifier rule1.fn; +identifier rule1.local_err; +@@ + + fn(...) + { + <... +( +- error_free(local_err); +- local_err = NULL; ++ error_free_errp(errp); +| +- error_free(local_err); ++ error_free_errp(errp); +| +- error_report_err(local_err); ++ error_report_errp(errp); +| +- warn_report_err(local_err); ++ warn_report_errp(errp); +| +- error_propagate_prepend(errp, local_err, ++ error_prepend(errp, + ...); +| +- error_propagate(errp, local_err); +) + ...> + } + +@@ +identifier rule1.fn; +identifier rule1.local_err; +@@ + + fn(...) + { + <... +( +- &local_err ++ errp +| +- local_err ++ *errp +) + ...> + } + +@@ +symbol errp; +@@ + +- *errp != NULL ++ *errp -- 2.21.0
