cocci: remove unnecessary casts of void * while avoiding casts with __user or __force ?

From: Joe Perches
Date: Mon Aug 28 2017 - 12:49:27 EST


A simple cocci script that removes unnecessary casts of
a void * will also remove casts with __force or __user

e.g.:

-       xemaclite_aligned_write(address_ptr, (u32 __force *) addr, ETH_ALEN);
+       xemaclite_aligned_write(address_ptr, addr, ETH_ALEN);

Is there a simple mechanism to avoid converting those?

$ cat void.cocci
@@
type T;
void *v;
expression e;
@@

- e = (T *)v;
+ e = v;

@@
identifier f;
type T;
void *v;
@@

f(...,
- (T *)v,
+ v,
...)

$