db/fixup_kernel.sh: update vfs_write() code
[smatch.git] / validation / Waddress-space-from.c
blob317a205b6c63afef5c9510c22c271267875357bf
2 #define __kernel __attribute__((address_space(0)))
3 #define __user __attribute__((address_space(__user)))
4 #define __iomem __attribute__((address_space(__iomem)))
5 #define __percpu __attribute__((address_space(__percpu)))
6 #define __rcu __attribute__((address_space(__rcu)))
9 typedef struct s obj_t;
11 static void expl(obj_t __kernel *k, obj_t __iomem *o,
12 obj_t __user *p, obj_t __percpu *pc,
13 obj_t __rcu *r)
15 (__UINTPTR_TYPE__)(k); // OK
16 (unsigned long)(k); // OK
17 (void *)(k); // OK
18 (obj_t*)(k); // OK
19 (obj_t __kernel*)(k); // OK
21 (__UINTPTR_TYPE__)(o); // OK
22 (unsigned long)(o); // OK
23 (void *)(o);
24 (obj_t*)(o);
25 (obj_t __iomem*)(o); // OK
27 (__UINTPTR_TYPE__)(p); // OK
28 (unsigned long)(p); // OK
29 (void *)(p);
30 (obj_t*)(p);
31 (obj_t __user*)(p); // OK
33 (__UINTPTR_TYPE__)(pc); // OK
34 (unsigned long)(pc); // OK
35 (void *)(pc);
36 (obj_t*)(pc);
37 (obj_t __percpu*)(pc); // OK
39 (__UINTPTR_TYPE__)(r); // OK
40 (unsigned long)(r); // OK
41 (void *)(r);
42 (obj_t*)(r);
43 (obj_t __rcu*)(r); // OK
47 * check-name: Waddress-space-from
48 * check-command: sparse -Wno-cast-from-as $file
49 * check-description: Test the removal of AS from a pointer but only
50 * in the non-strict variant where casts to ulong (or uintptr_t)
51 * are allowed.
53 * check-error-start
54 Waddress-space-from.c:23:10: warning: cast removes address space '__iomem' of expression
55 Waddress-space-from.c:24:10: warning: cast removes address space '__iomem' of expression
56 Waddress-space-from.c:29:10: warning: cast removes address space '__user' of expression
57 Waddress-space-from.c:30:10: warning: cast removes address space '__user' of expression
58 Waddress-space-from.c:35:10: warning: cast removes address space '__percpu' of expression
59 Waddress-space-from.c:36:10: warning: cast removes address space '__percpu' of expression
60 Waddress-space-from.c:41:10: warning: cast removes address space '__rcu' of expression
61 Waddress-space-from.c:42:10: warning: cast removes address space '__rcu' of expression
62 * check-error-end