Messages in this thread | | | From | Julia Lawall <> | Subject | [PATCH 0/5] fix error return code | Date | Tue, 14 Aug 2012 08:47:33 +0200 |
| |
These patches fix cases where the return code appears to be unintentially 0.
The complete semantic match that finds the problem is as follows: (http://coccinelle.lip6.fr/)
// <smpl> @r@ identifier f; expression ret,e; constant C; @@
f(...) { <+... ( return -C; | ret = -C ... when != ret = e return ret; | if (ret < 0) { ... return ret; } ) ...+> }
@s@ identifier r.f,ret; @@
f(...) { <+... return ret; ...+> }
@@ identifier r.f,s.ret; expression e,e1,e2,e3,e4,x; @@
f(...) { <+... ( if (\(ret != 0\|ret < 0\) || ...) { ... return ...; } | ret = 0 ) ... when != ret = e1 *x = \(kmalloc\|kzalloc\|kcalloc\|devm_kzalloc\|ioremap\|ioremap_nocache\|devm_ioremap\|devm_ioremap_nocache\)(...); ... when != x = e2 when != ret = e3 *if (x == NULL || ...) { ... when != ret = e4 * return ret; } ...+> } // </smpl>
| |