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


Reply via email to