[PATCH 09/17] xen: address violations of MISRA C:2012 Directive 4.10

Alessandro Zucchelli posted 17 patches 3 months, 2 weeks ago
There is a newer version of this series
[PATCH 09/17] xen: address violations of MISRA C:2012 Directive 4.10
Posted by Alessandro Zucchelli 3 months, 2 weeks ago
From: Simone Ballarin <simone.ballarin@bugseng.com>

Amend inclusion guards to address violations of
MISRA C:2012 Directive 4.10 ("Precautions shall be taken in order
to prevent the contents of a header file being included more than
once").

Inclusion guards must appear at the beginning of the headers
(comments are permitted anywhere) and the #if directive cannot
be used for other checks.

Mechanical change.

Signed-off-by: Simone Ballarin  <simone.ballarin@bugseng.com>
Signed-off-by: Maria Celeste Cesario <maria.celeste.cesario@bugseng.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
Signed-off-by: Alessandro Zucchelli <alessandro.zucchelli@bugseng.com>

---
Changes in v4:
- drop XEN_ prefix from inclusion guard, according to the feedback received
Changes in v3:
- remove trailing underscores
- change inclusion guard name to adhere to the new standard
Changes in v2:
- drop changes in xen/include/xen/unaligned.h since this second
  series adds a comment-based deviation in a separate patch
- use #ifndef instead of #if !defined()
---
 xen/include/xen/err.h     | 8 +++++---
 xen/include/xen/pci_ids.h | 5 +++++
 xen/include/xen/softirq.h | 8 +++++---
 xen/include/xen/vmap.h    | 8 +++++---
 4 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/xen/include/xen/err.h b/xen/include/xen/err.h
index cbdd1bf7f8..65549caac2 100644
--- a/xen/include/xen/err.h
+++ b/xen/include/xen/err.h
@@ -1,5 +1,6 @@
-#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
-#define __XEN_ERR_H__
+#ifndef INCLUDE_XEN_ERR_H
+#define INCLUDE_XEN_ERR_H
+#ifndef __ASSEMBLY__
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -41,4 +42,5 @@ static inline int __must_check PTR_RET(const void *ptr)
 	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
 }
 
-#endif /* __XEN_ERR_H__ */
+#endif /* __ASSEMBLY__ */
+#endif /* INCLUDE_XEN_ERR_H */
diff --git a/xen/include/xen/pci_ids.h b/xen/include/xen/pci_ids.h
index e798477a7e..8e40c78db7 100644
--- a/xen/include/xen/pci_ids.h
+++ b/xen/include/xen/pci_ids.h
@@ -1,3 +1,6 @@
+#ifndef INCLUDE_XEN_PCI_IDS_H
+#define INCLUDE_XEN_PCI_IDS_H
+
 #define PCI_VENDOR_ID_AMD                0x1022
 
 #define PCI_VENDOR_ID_NVIDIA             0x10de
@@ -11,3 +14,5 @@
 #define PCI_VENDOR_ID_BROADCOM           0x14e4
 
 #define PCI_VENDOR_ID_INTEL              0x8086
+
+#endif /* INCLUDE_XEN_PCI_IDS_H */
diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
index 33d6f2ecd2..90d4875df7 100644
--- a/xen/include/xen/softirq.h
+++ b/xen/include/xen/softirq.h
@@ -1,5 +1,6 @@
-#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
-#define __XEN_SOFTIRQ_H__
+#ifndef INCLUDE_XEN_SOFTIRQ_H
+#define INCLUDE_XEN_SOFTIRQ_H
+#ifndef __ASSEMBLY__
 
 /* Low-latency softirqs come first in the following list. */
 enum {
@@ -40,4 +41,5 @@ void cpu_raise_softirq_batch_finish(void);
  */
 void process_pending_softirqs(void);
 
-#endif /* __XEN_SOFTIRQ_H__ */
+#endif /* __ASSEMBLY__ */
+#endif /* INCLUDE_XEN_SOFTIRQ_H */
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index 0c16baa85f..ec1b6b05e9 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -1,5 +1,6 @@
-#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
-#define __XEN_VMAP_H__
+#ifndef INCLUDE_XEN_VMAP_H
+#define INCLUDE_XEN_VMAP_H
+#ifdef VMAP_VIRT_START
 
 #include <xen/mm-frame.h>
 #include <xen/page-size.h>
@@ -42,4 +43,5 @@ static inline void vm_init(void)
     vm_init_type(VMAP_DEFAULT, (void *)VMAP_VIRT_START, arch_vmap_virt_end());
 }
 
-#endif /* __XEN_VMAP_H__ */
+#endif /* VMAP_VIRT_START */
+#endif /* INCLUDE_XEN_VMAP_H */
-- 
2.34.1
Re: [PATCH 09/17] xen: address violations of MISRA C:2012 Directive 4.10
Posted by Jan Beulich 3 months, 2 weeks ago
On 01.07.2024 15:36, Alessandro Zucchelli wrote:
> --- a/xen/include/xen/err.h
> +++ b/xen/include/xen/err.h
> @@ -1,5 +1,6 @@
> -#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
> -#define __XEN_ERR_H__
> +#ifndef INCLUDE_XEN_ERR_H
> +#define INCLUDE_XEN_ERR_H

There once was a document (or was it a patch description) describing the
naming system for these guards. Where did that go? With include files
typically living under include/, seeing INCLUDE_ as a prefix is, well,
odd and unnecessary baggage. I also don't recall there having been
agreement to use names like the ones presented here.

Jan

> +#ifndef __ASSEMBLY__
>  
>  #include <xen/compiler.h>
>  #include <xen/errno.h>
> @@ -41,4 +42,5 @@ static inline int __must_check PTR_RET(const void *ptr)
>  	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
>  }
>  
> -#endif /* __XEN_ERR_H__ */
> +#endif /* __ASSEMBLY__ */
> +#endif /* INCLUDE_XEN_ERR_H */
> diff --git a/xen/include/xen/pci_ids.h b/xen/include/xen/pci_ids.h
> index e798477a7e..8e40c78db7 100644
> --- a/xen/include/xen/pci_ids.h
> +++ b/xen/include/xen/pci_ids.h
> @@ -1,3 +1,6 @@
> +#ifndef INCLUDE_XEN_PCI_IDS_H
> +#define INCLUDE_XEN_PCI_IDS_H
> +
>  #define PCI_VENDOR_ID_AMD                0x1022
>  
>  #define PCI_VENDOR_ID_NVIDIA             0x10de
> @@ -11,3 +14,5 @@
>  #define PCI_VENDOR_ID_BROADCOM           0x14e4
>  
>  #define PCI_VENDOR_ID_INTEL              0x8086
> +
> +#endif /* INCLUDE_XEN_PCI_IDS_H */
> diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
> index 33d6f2ecd2..90d4875df7 100644
> --- a/xen/include/xen/softirq.h
> +++ b/xen/include/xen/softirq.h
> @@ -1,5 +1,6 @@
> -#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
> -#define __XEN_SOFTIRQ_H__
> +#ifndef INCLUDE_XEN_SOFTIRQ_H
> +#define INCLUDE_XEN_SOFTIRQ_H
> +#ifndef __ASSEMBLY__
>  
>  /* Low-latency softirqs come first in the following list. */
>  enum {
> @@ -40,4 +41,5 @@ void cpu_raise_softirq_batch_finish(void);
>   */
>  void process_pending_softirqs(void);
>  
> -#endif /* __XEN_SOFTIRQ_H__ */
> +#endif /* __ASSEMBLY__ */
> +#endif /* INCLUDE_XEN_SOFTIRQ_H */
> diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
> index 0c16baa85f..ec1b6b05e9 100644
> --- a/xen/include/xen/vmap.h
> +++ b/xen/include/xen/vmap.h
> @@ -1,5 +1,6 @@
> -#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
> -#define __XEN_VMAP_H__
> +#ifndef INCLUDE_XEN_VMAP_H
> +#define INCLUDE_XEN_VMAP_H
> +#ifdef VMAP_VIRT_START
>  
>  #include <xen/mm-frame.h>
>  #include <xen/page-size.h>
> @@ -42,4 +43,5 @@ static inline void vm_init(void)
>      vm_init_type(VMAP_DEFAULT, (void *)VMAP_VIRT_START, arch_vmap_virt_end());
>  }
>  
> -#endif /* __XEN_VMAP_H__ */
> +#endif /* VMAP_VIRT_START */
> +#endif /* INCLUDE_XEN_VMAP_H */
Re: [PATCH 09/17] xen: address violations of MISRA C:2012 Directive 4.10
Posted by Stefano Stabellini 3 months, 1 week ago
On Wed, 3 Jul 2024, Jan Beulich wrote:
> On 01.07.2024 15:36, Alessandro Zucchelli wrote:
> > --- a/xen/include/xen/err.h
> > +++ b/xen/include/xen/err.h
> > @@ -1,5 +1,6 @@
> > -#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
> > -#define __XEN_ERR_H__
> > +#ifndef INCLUDE_XEN_ERR_H
> > +#define INCLUDE_XEN_ERR_H
> 
> There once was a document (or was it a patch description) describing the
> naming system for these guards. Where did that go? With include files
> typically living under include/, seeing INCLUDE_ as a prefix is, well,
> odd and unnecessary baggage. I also don't recall there having been
> agreement to use names like the ones presented here.

I agree with Jan that INCLUDE_ is unnecessary and looking at patch #0
and our previous discussions it would seem that this case was not
covered.

I think we should just use XEN_ERR_H

The rule could be (to be added to the others in patch #0):
- xen/include/xen -> XEN_<filename>_H


> > +#ifndef __ASSEMBLY__
> >  
> >  #include <xen/compiler.h>
> >  #include <xen/errno.h>
> > @@ -41,4 +42,5 @@ static inline int __must_check PTR_RET(const void *ptr)
> >  	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
> >  }
> >  
> > -#endif /* __XEN_ERR_H__ */
> > +#endif /* __ASSEMBLY__ */
> > +#endif /* INCLUDE_XEN_ERR_H */
> > diff --git a/xen/include/xen/pci_ids.h b/xen/include/xen/pci_ids.h
> > index e798477a7e..8e40c78db7 100644
> > --- a/xen/include/xen/pci_ids.h
> > +++ b/xen/include/xen/pci_ids.h
> > @@ -1,3 +1,6 @@
> > +#ifndef INCLUDE_XEN_PCI_IDS_H
> > +#define INCLUDE_XEN_PCI_IDS_H
> > +
> >  #define PCI_VENDOR_ID_AMD                0x1022
> >  
> >  #define PCI_VENDOR_ID_NVIDIA             0x10de
> > @@ -11,3 +14,5 @@
> >  #define PCI_VENDOR_ID_BROADCOM           0x14e4
> >  
> >  #define PCI_VENDOR_ID_INTEL              0x8086
> > +
> > +#endif /* INCLUDE_XEN_PCI_IDS_H */
> > diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
> > index 33d6f2ecd2..90d4875df7 100644
> > --- a/xen/include/xen/softirq.h
> > +++ b/xen/include/xen/softirq.h
> > @@ -1,5 +1,6 @@
> > -#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
> > -#define __XEN_SOFTIRQ_H__
> > +#ifndef INCLUDE_XEN_SOFTIRQ_H
> > +#define INCLUDE_XEN_SOFTIRQ_H
> > +#ifndef __ASSEMBLY__
> >  
> >  /* Low-latency softirqs come first in the following list. */
> >  enum {
> > @@ -40,4 +41,5 @@ void cpu_raise_softirq_batch_finish(void);
> >   */
> >  void process_pending_softirqs(void);
> >  
> > -#endif /* __XEN_SOFTIRQ_H__ */
> > +#endif /* __ASSEMBLY__ */
> > +#endif /* INCLUDE_XEN_SOFTIRQ_H */
> > diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
> > index 0c16baa85f..ec1b6b05e9 100644
> > --- a/xen/include/xen/vmap.h
> > +++ b/xen/include/xen/vmap.h
> > @@ -1,5 +1,6 @@
> > -#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
> > -#define __XEN_VMAP_H__
> > +#ifndef INCLUDE_XEN_VMAP_H
> > +#define INCLUDE_XEN_VMAP_H
> > +#ifdef VMAP_VIRT_START
> >  
> >  #include <xen/mm-frame.h>
> >  #include <xen/page-size.h>
> > @@ -42,4 +43,5 @@ static inline void vm_init(void)
> >      vm_init_type(VMAP_DEFAULT, (void *)VMAP_VIRT_START, arch_vmap_virt_end());
> >  }
> >  
> > -#endif /* __XEN_VMAP_H__ */
> > +#endif /* VMAP_VIRT_START */
> > +#endif /* INCLUDE_XEN_VMAP_H */
> 
>