Author: Julia Lawall <julia@diku.dk> Platform_device_del should be called before platform_device_put, as platform_device_put can delete the structure. Additionally, improve the error handling code for the call to ioremap, so that it calls platform_device_put. The semantic match that finds this problem is: (http://coccinelle.lip6.fr/) // @@ expression e1,e2; @@ *platform_device_put(e1); … when != e1 = e2 *platform_device_del(e1); // …