Author: Julia Lawall <julia@diku.dk> The pd->lock mutex is released on a successful return, so it should be released on an error return as well. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // @@ expression l; @@ mutex_lock(l); … when != mutex_unlock(l) when any when strict ( if (…) { … when …