[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200617220226.88948-1-luc.vanoostenryck@gmail.com>
Date: Thu, 18 Jun 2020 00:02:26 +0200
From: Luc Van Oostenryck <luc.vanoostenryck@...il.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Miguel Ojeda <miguel.ojeda.sandonis@...il.com>,
linux-kernel@...r.kernel.org,
Luc Van Oostenryck <luc.vanoostenryck@...il.com>
Subject: [PATCH] sparse: use identifiers to define address spaces
Currently, address spaces in warnings are displayed as
'<asn:X>' with 'X' replaced with the address space's number.
But since v0.6.0-rc1 (late December 2018), Sparse allows
to define the address spaces using an identifier instead of
a number. This identifier is then directly used in the warnings.
So, use the identifiers '__user', '__iomem', '__percpu' & '__rcu'
for the corresponding address spaces. The default address space,
__kernel, being not displayed in warnings, stays defined as '0'.
With this change, warnings used to be displayed as:
cast removes address space '<asn:1>' of expression
... void [noderef] <asn:2> *
will now be displayed as:
cast removes address space '__user' of expression
... void [noderef] __iomem *
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@...il.com>
---
include/linux/compiler_types.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index 21aed0981edf..e368384445b6 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -5,20 +5,20 @@
#ifndef __ASSEMBLY__
#ifdef __CHECKER__
-# define __user __attribute__((noderef, address_space(1)))
# define __kernel __attribute__((address_space(0)))
+# define __user __attribute__((noderef, address_space(__user)))
# define __safe __attribute__((safe))
# define __force __attribute__((force))
# define __nocast __attribute__((nocast))
-# define __iomem __attribute__((noderef, address_space(2)))
+# define __iomem __attribute__((noderef, address_space(__iomem)))
# define __must_hold(x) __attribute__((context(x,1,1)))
# define __acquires(x) __attribute__((context(x,0,1)))
# define __releases(x) __attribute__((context(x,1,0)))
# define __acquire(x) __context__(x,1)
# define __release(x) __context__(x,-1)
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
-# define __percpu __attribute__((noderef, address_space(3)))
-# define __rcu __attribute__((noderef, address_space(4)))
+# define __percpu __attribute__((noderef, address_space(__percpu)))
+# define __rcu __attribute__((noderef, address_space(__rcu)))
# define __private __attribute__((noderef))
extern void __chk_user_ptr(const volatile void __user *);
extern void __chk_io_ptr(const volatile void __iomem *);
--
2.27.0
Powered by blists - more mailing lists