linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] linux/types.h: Tidy __bitwise, add __CHECKER__ hints
@ 2022-03-15 15:30 Bjorn Helgaas
  2022-03-15 15:30 ` [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__ Bjorn Helgaas
  2022-03-15 15:30 ` [PATCH v2 2/2] Documentation/sparse: Add hints about __CHECKER__ Bjorn Helgaas
  0 siblings, 2 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2022-03-15 15:30 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Nathan Chancellor, Nick Desaulniers, Michael S . Tsirkin, llvm,
	linux-doc, linux-kernel, Bjorn Helgaas

From: Bjorn Helgaas <bhelgaas@google.com>

- Tidy up __bitwise__, which is unused except in the __bitwise definition

- Add hints about what __CHECKER__ means


Changes since v1:
  - Also remove unnecessary __bitwise__ in tools/include/linux/types.h
    (thanks to Andrew for pointing this out)

v1: https://lore.kernel.org/all/20220310220927.245704-1-helgaas@kernel.org/

Bjorn Helgaas (2):
  linux/types.h: Remove unnecessary __bitwise__
  Documentation/sparse: Add hints about __CHECKER__

 Documentation/dev-tools/sparse.rst | 2 ++
 include/linux/compiler_types.h     | 1 +
 include/uapi/linux/types.h         | 6 +++---
 tools/include/linux/types.h        | 5 ++---
 4 files changed, 8 insertions(+), 6 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__
  2022-03-15 15:30 [PATCH v2 0/2] linux/types.h: Tidy __bitwise, add __CHECKER__ hints Bjorn Helgaas
@ 2022-03-15 15:30 ` Bjorn Helgaas
  2022-03-15 17:03   ` Michael S. Tsirkin
  2022-05-25  6:51   ` Jiri Slaby
  2022-03-15 15:30 ` [PATCH v2 2/2] Documentation/sparse: Add hints about __CHECKER__ Bjorn Helgaas
  1 sibling, 2 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2022-03-15 15:30 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Nathan Chancellor, Nick Desaulniers, Michael S . Tsirkin, llvm,
	linux-doc, linux-kernel, Bjorn Helgaas

From: Bjorn Helgaas <bhelgaas@google.com>

There are no users of "__bitwise__" except the definition of "__bitwise".
Remove __bitwise__ and define __bitwise directly.

This is a follow-up to 05de97003c77 ("linux/types.h: enable endian checks
for all sparse builds").

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
---
 include/uapi/linux/types.h  | 5 ++---
 tools/include/linux/types.h | 5 ++---
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
index f6d2f83cbe29..71696f424ac8 100644
--- a/include/uapi/linux/types.h
+++ b/include/uapi/linux/types.h
@@ -20,11 +20,10 @@
  */
 
 #ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
+#define __bitwise	__attribute__((bitwise))
 #else
-#define __bitwise__
+#define __bitwise
 #endif
-#define __bitwise __bitwise__
 
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
diff --git a/tools/include/linux/types.h b/tools/include/linux/types.h
index 6e14a533ab4e..6c18c54e7d7f 100644
--- a/tools/include/linux/types.h
+++ b/tools/include/linux/types.h
@@ -43,11 +43,10 @@ typedef __u8  u8;
 typedef __s8  s8;
 
 #ifdef __CHECKER__
-#define __bitwise__ __attribute__((bitwise))
+#define __bitwise	__attribute__((bitwise))
 #else
-#define __bitwise__
+#define __bitwise
 #endif
-#define __bitwise __bitwise__
 
 #define __force
 #define __user
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] Documentation/sparse: Add hints about __CHECKER__
  2022-03-15 15:30 [PATCH v2 0/2] linux/types.h: Tidy __bitwise, add __CHECKER__ hints Bjorn Helgaas
  2022-03-15 15:30 ` [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__ Bjorn Helgaas
@ 2022-03-15 15:30 ` Bjorn Helgaas
  1 sibling, 0 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2022-03-15 15:30 UTC (permalink / raw)
  To: Andrew Morton, Jonathan Corbet
  Cc: Nathan Chancellor, Nick Desaulniers, Michael S . Tsirkin, llvm,
	linux-doc, linux-kernel, Bjorn Helgaas

From: Bjorn Helgaas <bhelgaas@google.com>

Several attributes depend on __CHECKER__, but previously there was no clue
in the tree about when __CHECKER__ might be defined.  Add hints at the most
common places (__kernel, __user, __iomem, __bitwise) and in the sparse
documentation.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 Documentation/dev-tools/sparse.rst | 2 ++
 include/linux/compiler_types.h     | 1 +
 include/uapi/linux/types.h         | 1 +
 3 files changed, 4 insertions(+)

diff --git a/Documentation/dev-tools/sparse.rst b/Documentation/dev-tools/sparse.rst
index 02102be7ff49..dc791c8d84d1 100644
--- a/Documentation/dev-tools/sparse.rst
+++ b/Documentation/dev-tools/sparse.rst
@@ -100,3 +100,5 @@ have already built it.
 
 The optional make variable CF can be used to pass arguments to sparse.  The
 build system passes -Wbitwise to sparse automatically.
+
+Note that sparse defines the __CHECKER__ preprocessor symbol.
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index 3c1795fdb568..4b3915ce38a4 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -4,6 +4,7 @@
 
 #ifndef __ASSEMBLY__
 
+/* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
 #ifdef __CHECKER__
 /* address spaces */
 # define __kernel	__attribute__((address_space(0)))
diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
index 71696f424ac8..c4dc597f3dcf 100644
--- a/include/uapi/linux/types.h
+++ b/include/uapi/linux/types.h
@@ -19,6 +19,7 @@
  * any application/library that wants linux/types.h.
  */
 
+/* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
 #ifdef __CHECKER__
 #define __bitwise	__attribute__((bitwise))
 #else
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__
  2022-03-15 15:30 ` [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__ Bjorn Helgaas
@ 2022-03-15 17:03   ` Michael S. Tsirkin
  2022-05-25  6:51   ` Jiri Slaby
  1 sibling, 0 replies; 6+ messages in thread
From: Michael S. Tsirkin @ 2022-03-15 17:03 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Andrew Morton, Jonathan Corbet, Nathan Chancellor,
	Nick Desaulniers, llvm, linux-doc, linux-kernel, Bjorn Helgaas

On Tue, Mar 15, 2022 at 10:30:47AM -0500, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> There are no users of "__bitwise__" except the definition of "__bitwise".
> Remove __bitwise__ and define __bitwise directly.
> 
> This is a follow-up to 05de97003c77 ("linux/types.h: enable endian checks
> for all sparse builds").
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>

Acked-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  include/uapi/linux/types.h  | 5 ++---
>  tools/include/linux/types.h | 5 ++---
>  2 files changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
> index f6d2f83cbe29..71696f424ac8 100644
> --- a/include/uapi/linux/types.h
> +++ b/include/uapi/linux/types.h
> @@ -20,11 +20,10 @@
>   */
>  
>  #ifdef __CHECKER__
> -#define __bitwise__ __attribute__((bitwise))
> +#define __bitwise	__attribute__((bitwise))
>  #else
> -#define __bitwise__
> +#define __bitwise
>  #endif
> -#define __bitwise __bitwise__
>  
>  typedef __u16 __bitwise __le16;
>  typedef __u16 __bitwise __be16;
> diff --git a/tools/include/linux/types.h b/tools/include/linux/types.h
> index 6e14a533ab4e..6c18c54e7d7f 100644
> --- a/tools/include/linux/types.h
> +++ b/tools/include/linux/types.h
> @@ -43,11 +43,10 @@ typedef __u8  u8;
>  typedef __s8  s8;
>  
>  #ifdef __CHECKER__
> -#define __bitwise__ __attribute__((bitwise))
> +#define __bitwise	__attribute__((bitwise))
>  #else
> -#define __bitwise__
> +#define __bitwise
>  #endif
> -#define __bitwise __bitwise__
>  
>  #define __force
>  #define __user
> -- 
> 2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__
  2022-03-15 15:30 ` [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__ Bjorn Helgaas
  2022-03-15 17:03   ` Michael S. Tsirkin
@ 2022-05-25  6:51   ` Jiri Slaby
  2022-05-25 14:34     ` Bjorn Helgaas
  1 sibling, 1 reply; 6+ messages in thread
From: Jiri Slaby @ 2022-05-25  6:51 UTC (permalink / raw)
  To: Bjorn Helgaas, Andrew Morton, Jonathan Corbet
  Cc: Nathan Chancellor, Nick Desaulniers, Michael S . Tsirkin, llvm,
	linux-doc, linux-kernel, Bjorn Helgaas

On 15. 03. 22, 16:30, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> There are no users of "__bitwise__" except the definition of "__bitwise".
> Remove __bitwise__ and define __bitwise directly.
> 
> This is a follow-up to 05de97003c77 ("linux/types.h: enable endian checks
> for all sparse builds").
> 
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> ---
>   include/uapi/linux/types.h  | 5 ++---
>   tools/include/linux/types.h | 5 ++---
>   2 files changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
> index f6d2f83cbe29..71696f424ac8 100644
> --- a/include/uapi/linux/types.h
> +++ b/include/uapi/linux/types.h
> @@ -20,11 +20,10 @@
>    */
>   
>   #ifdef __CHECKER__
> -#define __bitwise__ __attribute__((bitwise))
> +#define __bitwise	__attribute__((bitwise))
>   #else
> -#define __bitwise__
> +#define __bitwise
>   #endif
> -#define __bitwise __bitwise__

Hi,

this broke userspace, like open-iscsi:
> [   34s] In file included from session_info.h:9,
> [   34s]                  from iscsi_util.c:38:
> [   34s] ../include/iscsi_proto.h:66:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'itt_t'
> [   34s]    66 | typedef uint32_t __bitwise__ itt_t;
> [   34s]       |                              ^~~~~

It looks like we need __bitwise__ back.

thanks,
-- 
js
suse labs

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__
  2022-05-25  6:51   ` Jiri Slaby
@ 2022-05-25 14:34     ` Bjorn Helgaas
  0 siblings, 0 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2022-05-25 14:34 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Andrew Morton, Jonathan Corbet, Nathan Chancellor,
	Nick Desaulniers, Michael S . Tsirkin, llvm, linux-doc,
	linux-kernel, Bjorn Helgaas

On Wed, May 25, 2022 at 08:51:29AM +0200, Jiri Slaby wrote:
> On 15. 03. 22, 16:30, Bjorn Helgaas wrote:
> > From: Bjorn Helgaas <bhelgaas@google.com>
> > 
> > There are no users of "__bitwise__" except the definition of "__bitwise".
> > Remove __bitwise__ and define __bitwise directly.
> > 
> > This is a follow-up to 05de97003c77 ("linux/types.h: enable endian checks
> > for all sparse builds").
> > 
> > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >   include/uapi/linux/types.h  | 5 ++---
> >   tools/include/linux/types.h | 5 ++---
> >   2 files changed, 4 insertions(+), 6 deletions(-)
> > 
> > diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
> > index f6d2f83cbe29..71696f424ac8 100644
> > --- a/include/uapi/linux/types.h
> > +++ b/include/uapi/linux/types.h
> > @@ -20,11 +20,10 @@
> >    */
> >   #ifdef __CHECKER__
> > -#define __bitwise__ __attribute__((bitwise))
> > +#define __bitwise	__attribute__((bitwise))
> >   #else
> > -#define __bitwise__
> > +#define __bitwise
> >   #endif
> > -#define __bitwise __bitwise__
> 
> Hi,
> 
> this broke userspace, like open-iscsi:
> > [   34s] In file included from session_info.h:9,
> > [   34s]                  from iscsi_util.c:38:
> > [   34s] ../include/iscsi_proto.h:66:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'itt_t'
> > [   34s]    66 | typedef uint32_t __bitwise__ itt_t;
> > [   34s]       |                              ^~~~~
> 
> It looks like we need __bitwise__ back.

Crap, sorry.  I don't know why I thought it would be safe to remove
something from uapi.  I'll send a revert.

Bjorn

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-05-25 14:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-15 15:30 [PATCH v2 0/2] linux/types.h: Tidy __bitwise, add __CHECKER__ hints Bjorn Helgaas
2022-03-15 15:30 ` [PATCH v2 1/2] linux/types.h: Remove unnecessary __bitwise__ Bjorn Helgaas
2022-03-15 17:03   ` Michael S. Tsirkin
2022-05-25  6:51   ` Jiri Slaby
2022-05-25 14:34     ` Bjorn Helgaas
2022-03-15 15:30 ` [PATCH v2 2/2] Documentation/sparse: Add hints about __CHECKER__ Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).