| #define __user __attribute__((address_space(1))) |
| |
| typedef unsigned long ulong; |
| typedef struct s obj_t; |
| |
| static void expl(ulong u, void *v, obj_t *o, obj_t __user *p) |
| { |
| (obj_t*)(u); |
| (obj_t __user*)(u); |
| |
| (obj_t*)(v); |
| (obj_t __user*)(v); |
| |
| (ulong)(o); |
| (void *)(o); |
| (obj_t*)(o); |
| (obj_t __user*)(o); |
| |
| (ulong)(p); // w! |
| (void *)(p); // w |
| (obj_t*)(p); // w |
| (obj_t __user*)(p); // ok |
| } |
| |
| /* |
| * check-name: Waddress-space-strict |
| * check-command: sparse -Wcast-from-as -Wcast-to-as $file |
| * |
| * check-error-start |
| Waddress-space-strict.c:9:10: warning: cast adds address space '<asn:1>' to expression |
| Waddress-space-strict.c:12:10: warning: cast adds address space '<asn:1>' to expression |
| Waddress-space-strict.c:17:10: warning: cast adds address space '<asn:1>' to expression |
| Waddress-space-strict.c:19:10: warning: cast removes address space '<asn:1>' of expression |
| Waddress-space-strict.c:20:10: warning: cast removes address space '<asn:1>' of expression |
| Waddress-space-strict.c:21:10: warning: cast removes address space '<asn:1>' of expression |
| * check-error-end |
| */ |