From: Frantisek Sumsal Date: Wed, 25 Oct 2023 09:16:37 +0000 (+0200) Subject: coccinelle: don't run iovec-make on iovec_done{,_erase} X-Git-Tag: v255-rc1~143^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b3bfb95178a8dce6bf3db9337bb0d3901485883b;p=thirdparty%2Fsystemd.git coccinelle: don't run iovec-make on iovec_done{,_erase} As the result is a bit funky (but still valid), i.e.: static inline void iovec_done_erase(struct iovec *iovec) { assert(iovec); - iovec->iov_base = erase_and_free(iovec->iov_base); - iovec->iov_len = 0; + *iovec = IOVEC_MAKE(erase_and_free(iovec->iov_base), 0); } --- diff --git a/coccinelle/iovec-make.cocci b/coccinelle/iovec-make.cocci index 79116882fc7..bbbf4a2b008 100644 --- a/coccinelle/iovec-make.cocci +++ b/coccinelle/iovec-make.cocci @@ -13,9 +13,13 @@ expression x, p, l; - x.iov_len = l; + x = IOVEC_MAKE(p, l); @@ +/* Don't run this transformation on iovec_done() and iovec_done_erase(), + * since the result, albeit correct, is a bit funky. */ + position pos : script:python() { pos[0].current_element != "iovec_done" and + pos[0].current_element != "iovec_done_erase" }; expression x, p, l; @@ -- x->iov_base = p; +- x->iov_base@pos = p; - x->iov_len = l; + *x = IOVEC_MAKE(p, l); @@