All of lore.kernel.org
 help / color / mirror / Atom feed
* [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3
@ 2024-06-20 14:02 Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
                   ` (12 more replies)
  0 siblings, 13 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Simone Ballarin, Doug Goldstein,
	Stefano Stabellini, Andrew Cooper, George Dunlap, Jan Beulich,
	Julien Grall, Roger Pau Monné

This patch series addresses violations of MISRA C Rule 16.3 and updates
the ECLAIR configuration to consider also hypened fall-through comment
as a deviation to the rule.

Federico Serafini (13):
  automation/eclair: consider also hypened fall-through
  x86/cpuid: use fallthrough pseudo keyword
  x86/domctl: add missing break statement
  x86/vpmu: address violations of MISRA C Rule 16.3
  x86/traps: use fallthrough pseudo keyword
  x86/mce: add missing break statements
  x86/hvm: address violations of MISRA C Rule 16.3
  x86/vpt: address a violation of MISRA C Rule 16.3
  x86/mm: add defensive return
  x86/mpparse: add break statement
  x86/pmtimer: address a violation of MISRA C Rule 16.3
  x86/vPIC: address a violation of MISRA C Rule 16.3
  x86/vlapic: address a violation of MISRA C Rule 16.3

 automation/eclair_analysis/ECLAIR/deviations.ecl | 2 +-
 docs/misra/deviations.rst                        | 4 ++++
 xen/arch/x86/cpu/mcheck/mce_amd.c                | 1 +
 xen/arch/x86/cpu/mcheck/mce_intel.c              | 2 ++
 xen/arch/x86/cpu/vpmu.c                          | 3 +++
 xen/arch/x86/cpu/vpmu_intel.c                    | 1 +
 xen/arch/x86/cpuid.c                             | 3 +--
 xen/arch/x86/domctl.c                            | 1 +
 xen/arch/x86/hvm/emulate.c                       | 3 +++
 xen/arch/x86/hvm/hvm.c                           | 6 ++++++
 xen/arch/x86/hvm/hypercall.c                     | 1 +
 xen/arch/x86/hvm/irq.c                           | 1 +
 xen/arch/x86/hvm/pmtimer.c                       | 1 +
 xen/arch/x86/hvm/vlapic.c                        | 1 +
 xen/arch/x86/hvm/vpic.c                          | 1 +
 xen/arch/x86/hvm/vpt.c                           | 2 ++
 xen/arch/x86/mm.c                                | 1 +
 xen/arch/x86/mpparse.c                           | 1 +
 xen/arch/x86/traps.c                             | 3 +++
 19 files changed, 35 insertions(+), 3 deletions(-)

-- 
2.34.1



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

* [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:15   ` Jan Beulich
  2024-06-20 14:39   ` Julien Grall
  2024-06-20 14:02 ` [XEN PATCH 02/13] x86/cpuid: use fallthrough pseudo keyword Federico Serafini
                   ` (11 subsequent siblings)
  12 siblings, 2 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Simone Ballarin, Doug Goldstein,
	Stefano Stabellini, Andrew Cooper, George Dunlap, Jan Beulich,
	Julien Grall

Update ECLAIR configuration to deviate MISRA C Rule 16.3
using different version of hypened fall-through and search for
the comment for 2 lines after the last statement.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 automation/eclair_analysis/ECLAIR/deviations.ecl | 2 +-
 docs/misra/deviations.rst                        | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
index b8f9155267..b99a6b8a92 100644
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -400,7 +400,7 @@ safe."
 -doc_end
 
 -doc_begin="Switch clauses ending with an explicit comment indicating the fallthrough intention are safe."
--config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
+-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all[ -]?through.? \\*/.*$,0..2))))"}
 -doc_end
 
 -doc_begin="Switch statements having a controlling expression of enum type deliberately do not have a default case: gcc -Wall enables -Wswitch which warns (and breaks the build as we use -Werror) if one of the enum labels is missing from the switch."
diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
index 41cdfbe5f5..411e1fed3d 100644
--- a/docs/misra/deviations.rst
+++ b/docs/misra/deviations.rst
@@ -353,6 +353,10 @@ Deviations related to MISRA C:2012 Rules:
        However, the use of such comments in new code is deprecated:
        the pseudo-keyword "fallthrough" shall be used.
      - Tagged as `safe` for ECLAIR. The accepted comments are:
+         - /\* fall-through \*/
+         - /\* Fall-through. \*/
+         - /\* Fall-through \*/
+         - /\* fall-through. \*/
          - /\* fall through \*/
          - /\* fall through. \*/
          - /\* fallthrough \*/
-- 
2.34.1



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

* [XEN PATCH 02/13] x86/cpuid: use fallthrough pseudo keyword
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 03/13] x86/domctl: add missing break statement Federico Serafini
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

The current comment making explicit the fallthrough intention does
not follow the agreed syntax: replace it with the pseduo keyword.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/cpuid.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
index a822e80c7e..2a777436ee 100644
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -97,9 +97,8 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
         if ( is_viridian_domain(d) )
             return cpuid_viridian_leaves(v, leaf, subleaf, res);
 
+        fallthrough;
         /*
-         * Fallthrough.
-         *
          * Intel reserve up until 0x4fffffff for hypervisor use.  AMD reserve
          * only until 0x400000ff, but we already use double that.
          */
-- 
2.34.1



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

* [XEN PATCH 03/13] x86/domctl: add missing break statement
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 02/13] x86/cpuid: use fallthrough pseudo keyword Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 04/13] x86/vpmu: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add missing break statement to address a violation of MISRA C Rule 16.3.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/domctl.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 9190e11faa..68b5b46d1a 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -517,6 +517,7 @@ long arch_do_domctl(
 
         default:
             ret = -ENOSYS;
+            break;
         }
         break;
     }
-- 
2.34.1



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

* [XEN PATCH 04/13] x86/vpmu: address violations of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (2 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 03/13] x86/domctl: add missing break statement Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 05/13] x86/traps: use fallthrough pseudo keyword Federico Serafini
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add missing break statements to address violations of MISRA C Rule
16.3: "An unconditional `break' statement shall terminate every
switch-clause".

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/cpu/vpmu.c       | 3 +++
 xen/arch/x86/cpu/vpmu_intel.c | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
index a7bc0cd1fc..b2ba999412 100644
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -663,6 +663,8 @@ long do_xenpmu_op(
 
         if ( pmu_params.version.maj != XENPMU_VER_MAJ )
             return -EINVAL;
+
+        break;
     }
 
     switch ( op )
@@ -776,6 +778,7 @@ long do_xenpmu_op(
 
     default:
         ret = -EINVAL;
+        break;
     }
 
     return ret;
diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index cd414165df..46f3ff86e7 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -713,6 +713,7 @@ static int cf_check core2_vpmu_do_rdmsr(unsigned int msr, uint64_t *msr_content)
             break;
         default:
             rdmsrl(msr, *msr_content);
+            break;
         }
     }
     else if ( msr == MSR_IA32_MISC_ENABLE )
-- 
2.34.1



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

* [XEN PATCH 05/13] x86/traps: use fallthrough pseudo keyword
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (3 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 04/13] x86/vpmu: address violations of MISRA C Rule 16.3 Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 06/13] x86/mce: add missing break statements Federico Serafini
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add break or pseudo keyword fallthrough to address violations of
MISRA C Rule 16.3.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/traps.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 9906e874d5..cbcec3fafb 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1186,6 +1186,7 @@ void cpuid_hypervisor_leaves(const struct vcpu *v, uint32_t leaf,
 
     default:
         ASSERT_UNREACHABLE();
+        break;
     }
 }
 
@@ -1748,6 +1749,7 @@ static void io_check_error(const struct cpu_user_regs *regs)
     {
     case 'd': /* 'dom0' */
         nmi_hwdom_report(_XEN_NMIREASON_io_error);
+        fallthrough;
     case 'i': /* 'ignore' */
         break;
     default:  /* 'fatal' */
@@ -1768,6 +1770,7 @@ static void unknown_nmi_error(const struct cpu_user_regs *regs,
     {
     case 'd': /* 'dom0' */
         nmi_hwdom_report(_XEN_NMIREASON_unknown);
+        fallthrough;
     case 'i': /* 'ignore' */
         break;
     default:  /* 'fatal' */
-- 
2.34.1



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

* [XEN PATCH 06/13] x86/mce: add missing break statements
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (4 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 05/13] x86/traps: use fallthrough pseudo keyword Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 07/13] x86/hvm: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add missing break statements to address violations of MISRA C Rule 16.3.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/cpu/mcheck/mce_amd.c   | 1 +
 xen/arch/x86/cpu/mcheck/mce_intel.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.c b/xen/arch/x86/cpu/mcheck/mce_amd.c
index 3318b8204f..4f06a3153b 100644
--- a/xen/arch/x86/cpu/mcheck/mce_amd.c
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.c
@@ -201,6 +201,7 @@ static void mcequirk_amd_apply(enum mcequirk_amd_flags flags)
 
     default:
         ASSERT(flags == MCEQUIRK_NONE);
+        break;
     }
 }
 
diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/mce_intel.c
index dd812f4b8a..9574dedbfd 100644
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -896,6 +896,8 @@ static void intel_init_ppin(const struct cpuinfo_x86 *c)
             ppin_msr = 0;
         else if ( c == &boot_cpu_data )
             ppin_msr = MSR_PPIN;
+
+        break;
     }
 }
 
-- 
2.34.1



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

* [XEN PATCH 07/13] x86/hvm: address violations of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (5 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 06/13] x86/mce: add missing break statements Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 08/13] x86/vpt: address a violation " Federico Serafini
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

MISRA C Rule 16.3 states that "An unconditional `break' statement shall
terminate every switch-clause".

Add pseudo keyword fallthrough and missing break statement
to address violations of the rule.

As a defensive measure, return -EOPNOTSUPP in case an unreachable return
statement is reached.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/hvm/emulate.c   | 3 +++
 xen/arch/x86/hvm/hvm.c       | 6 ++++++
 xen/arch/x86/hvm/hypercall.c | 1 +
 xen/arch/x86/hvm/irq.c       | 1 +
 4 files changed, 11 insertions(+)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 02e378365b..6d0fba9285 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2674,6 +2674,7 @@ static int _hvm_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt,
 
     default:
         ASSERT_UNREACHABLE();
+        break;
     }
 
     if ( hvmemul_ctxt->ctxt.retire.singlestep )
@@ -2764,6 +2765,7 @@ int hvm_emulate_one_mmio(unsigned long mfn, unsigned long gla)
         /* fallthrough */
     default:
         hvm_emulate_writeback(&ctxt);
+        break;
     }
 
     return rc;
@@ -2803,6 +2805,7 @@ void hvm_emulate_one_vm_event(enum emul_kind kind, unsigned int trapnr,
     default:
         ctx.set_context = (kind == EMUL_KIND_SET_CONTEXT_DATA);
         rc = hvm_emulate_one(&ctx, VIO_no_completion);
+        break;
     }
 
     switch ( rc )
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 7f4b627b1f..c263e562ff 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4919,6 +4919,8 @@ static int do_altp2m_op(
 
     default:
         ASSERT_UNREACHABLE();
+        rc = -EOPNOTSUPP;
+        break;
     }
 
  out:
@@ -5020,6 +5022,8 @@ static int compat_altp2m_op(
 
     default:
         ASSERT_UNREACHABLE();
+        rc = -EOPNOTSUPP;
+        break;
     }
 
     return rc;
@@ -5283,6 +5287,8 @@ void hvm_get_segment_register(struct vcpu *v, enum x86_segment seg,
          * %cs and %tr are unconditionally present.  SVM ignores these present
          * bits and will happily run without them set.
          */
+        fallthrough;
+
     case x86_seg_cs:
         reg->p = 1;
         break;
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 7fb3136f0c..2271afe02a 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -111,6 +111,7 @@ int hvm_hypercall(struct cpu_user_regs *regs)
     case 8:
         eax = regs->rax;
         /* Fallthrough to permission check. */
+        fallthrough;
     case 4:
     case 2:
         if ( currd->arch.monitor.guest_request_userspace_enabled &&
diff --git a/xen/arch/x86/hvm/irq.c b/xen/arch/x86/hvm/irq.c
index 210cebb0e6..1eab44defc 100644
--- a/xen/arch/x86/hvm/irq.c
+++ b/xen/arch/x86/hvm/irq.c
@@ -282,6 +282,7 @@ static void hvm_set_callback_irq_level(struct vcpu *v)
             __hvm_pci_intx_assert(d, pdev, pintx);
         else
             __hvm_pci_intx_deassert(d, pdev, pintx);
+        break;
     default:
         break;
     }
-- 
2.34.1



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

* [XEN PATCH 08/13] x86/vpt: address a violation of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (6 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 07/13] x86/hvm: address violations of MISRA C Rule 16.3 Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 09/13] x86/mm: add defensive return Federico Serafini
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add pseudo keyword fallthrough to meet the requirements to deviate
a violation of MISRA C Rule 16.3 ("An unconditional `break'
statement shall terminate every switch-clause").

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/hvm/vpt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c
index e1d6845a28..c76a9a272b 100644
--- a/xen/arch/x86/hvm/vpt.c
+++ b/xen/arch/x86/hvm/vpt.c
@@ -121,6 +121,8 @@ static int pt_irq_masked(struct periodic_time *pt)
     }
 
     /* Fallthrough to check if the interrupt is masked on the IO APIC. */
+    fallthrough;
+
     case PTSRC_ioapic:
     {
         int mask = vioapic_get_mask(v->domain, gsi);
-- 
2.34.1



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

* [XEN PATCH 09/13] x86/mm: add defensive return
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (7 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 08/13] x86/vpt: address a violation " Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 10/13] x86/mpparse: add break statement Federico Serafini
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add defensive return statement at the end of an unreachable
default case. Other than improve safety, this meets the requirements
to deviate a violation of MISRA C Rule 16.3.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/mm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 648d6dd475..2e19ced15e 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -916,6 +916,7 @@ get_page_from_l1e(
                 return 0;
             default:
                 ASSERT_UNREACHABLE();
+                return 0;
             }
         }
         else if ( l1f & _PAGE_RW )
-- 
2.34.1



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

* [XEN PATCH 10/13] x86/mpparse: add break statement
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (8 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 09/13] x86/mm: add defensive return Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 11/13] x86/pmtimer: address a violation of MISRA C Rule 16.3 Federico Serafini
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add a missing break statement to address a violation of MISRA C Rule
16.3.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/mpparse.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index d8ccab2449..306d8ed97a 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -544,6 +544,7 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type)
 		case 4:
 		case 7:
 			memcpy(bus.mpc_bustype, "MCA   ", 6);
+			break;
 	}
 	MP_bus_info(&bus);
 	if (mpc_default_type > 4) {
-- 
2.34.1



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

* [XEN PATCH 11/13] x86/pmtimer: address a violation of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (9 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 10/13] x86/mpparse: add break statement Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 12/13] x86/vPIC: " Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 13/13] x86/vlapic: " Federico Serafini
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add missing break statement to address a violation of MISRA C Rule 16.3
("An unconditional `break' statement shall terminate every
switch-clause").

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/hvm/pmtimer.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/hvm/pmtimer.c b/xen/arch/x86/hvm/pmtimer.c
index 97099ac305..87a7a01c9f 100644
--- a/xen/arch/x86/hvm/pmtimer.c
+++ b/xen/arch/x86/hvm/pmtimer.c
@@ -185,6 +185,7 @@ static int cf_check handle_evt_io(
                 gdprintk(XENLOG_WARNING, 
                          "Bad ACPI PM register write: %x bytes (%x) at %x\n", 
                          bytes, *val, port);
+                break;
             }
         }
         /* Fix up the SCI state to match the new register state */
-- 
2.34.1



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

* [XEN PATCH 12/13] x86/vPIC: address a violation of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (10 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 11/13] x86/pmtimer: address a violation of MISRA C Rule 16.3 Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  2024-06-20 14:02 ` [XEN PATCH 13/13] x86/vlapic: " Federico Serafini
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add pseudokeyword fallthrough to meet the requirements to deviate
a violation of MISRA C Rul 16.3: "An unconditional `break' statement
shall terminate every switch-clause".

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/hvm/vpic.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c
index 7c3b5c7254..6427b08086 100644
--- a/xen/arch/x86/hvm/vpic.c
+++ b/xen/arch/x86/hvm/vpic.c
@@ -309,6 +309,7 @@ static void vpic_ioport_write(
             if ( !(vpic->init_state & 8) )
                 break; /* CASCADE mode: wait for write to ICW3. */
             /* SNGL mode: fall through (no ICW3). */
+            fallthrough;
         case 2:
             /* ICW3 */
             vpic->init_state++;
-- 
2.34.1



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

* [XEN PATCH 13/13] x86/vlapic: address a violation of MISRA C Rule 16.3
  2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
                   ` (11 preceding siblings ...)
  2024-06-20 14:02 ` [XEN PATCH 12/13] x86/vPIC: " Federico Serafini
@ 2024-06-20 14:02 ` Federico Serafini
  12 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:02 UTC (permalink / raw)
  To: xen-devel
  Cc: consulting, Federico Serafini, Jan Beulich, Andrew Cooper,
	Roger Pau Monné

Add missing break statement to address a violation of MISRA C
Rule 16.3: "An unconditional `break' statement shall terminate every
switch-clause".

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/hvm/vlapic.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 9cfc82666a..2ec9594271 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -367,6 +367,7 @@ static void vlapic_accept_irq(struct vcpu *v, uint32_t icr_low)
         gdprintk(XENLOG_ERR, "TODO: unsupported delivery mode in ICR %x\n",
                  icr_low);
         domain_crash(v->domain);
+        break;
     }
 }
 
-- 
2.34.1



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

* Re: [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through
  2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
@ 2024-06-20 14:15   ` Jan Beulich
  2024-06-20 14:22     ` Federico Serafini
  2024-06-20 14:39   ` Julien Grall
  1 sibling, 1 reply; 18+ messages in thread
From: Jan Beulich @ 2024-06-20 14:15 UTC (permalink / raw)
  To: Federico Serafini
  Cc: consulting, Simone Ballarin, Doug Goldstein, Stefano Stabellini,
	Andrew Cooper, George Dunlap, Julien Grall, xen-devel

On 20.06.2024 16:02, Federico Serafini wrote:
> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
> @@ -400,7 +400,7 @@ safe."
>  -doc_end
>  
>  -doc_begin="Switch clauses ending with an explicit comment indicating the fallthrough intention are safe."
> --config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
> +-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all[ -]?through.? \\*/.*$,0..2))))"}

Is is a regex, isn't it? Doesn't the period also need escaping (or enclosing
in square brackets)? (I realize it was like this before, but still.)

> --- a/docs/misra/deviations.rst
> +++ b/docs/misra/deviations.rst
> @@ -353,6 +353,10 @@ Deviations related to MISRA C:2012 Rules:
>         However, the use of such comments in new code is deprecated:
>         the pseudo-keyword "fallthrough" shall be used.
>       - Tagged as `safe` for ECLAIR. The accepted comments are:
> +         - /\* fall-through \*/
> +         - /\* Fall-through. \*/
> +         - /\* Fall-through \*/
> +         - /\* fall-through. \*/
>           - /\* fall through \*/
>           - /\* fall through. \*/
>           - /\* fallthrough \*/

Nit: Can the capital-F and non-capital-f variants please be next to each other?

Jan


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

* Re: [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through
  2024-06-20 14:15   ` Jan Beulich
@ 2024-06-20 14:22     ` Federico Serafini
  0 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:22 UTC (permalink / raw)
  To: Jan Beulich
  Cc: consulting, Simone Ballarin, Doug Goldstein, Stefano Stabellini,
	Andrew Cooper, George Dunlap, Julien Grall, xen-devel

On 20/06/24 16:15, Jan Beulich wrote:
> On 20.06.2024 16:02, Federico Serafini wrote:
>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> @@ -400,7 +400,7 @@ safe."
>>   -doc_end
>>   
>>   -doc_begin="Switch clauses ending with an explicit comment indicating the fallthrough intention are safe."
>> --config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
>> +-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all[ -]?through.? \\*/.*$,0..2))))"}
> 
> Is is a regex, isn't it? Doesn't the period also need escaping (or enclosing
> in square brackets)? (I realize it was like this before, but still.)

Yes, thanks for noticing.

> 
>> --- a/docs/misra/deviations.rst
>> +++ b/docs/misra/deviations.rst
>> @@ -353,6 +353,10 @@ Deviations related to MISRA C:2012 Rules:
>>          However, the use of such comments in new code is deprecated:
>>          the pseudo-keyword "fallthrough" shall be used.
>>        - Tagged as `safe` for ECLAIR. The accepted comments are:
>> +         - /\* fall-through \*/
>> +         - /\* Fall-through. \*/
>> +         - /\* Fall-through \*/
>> +         - /\* fall-through. \*/
>>            - /\* fall through \*/
>>            - /\* fall through. \*/
>>            - /\* fallthrough \*/
> 
> Nit: Can the capital-F and non-capital-f variants please be next to each other?

Ok.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


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

* Re: [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through
  2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
  2024-06-20 14:15   ` Jan Beulich
@ 2024-06-20 14:39   ` Julien Grall
  2024-06-20 14:58     ` Federico Serafini
  1 sibling, 1 reply; 18+ messages in thread
From: Julien Grall @ 2024-06-20 14:39 UTC (permalink / raw)
  To: Federico Serafini, xen-devel
  Cc: consulting, Simone Ballarin, Doug Goldstein, Stefano Stabellini,
	Andrew Cooper, George Dunlap, Jan Beulich

Hi,

On 20/06/2024 15:02, Federico Serafini wrote:
> Update ECLAIR configuration to deviate MISRA C Rule 16.3
> using different version of hypened fall-through and search for
> the comment for 2 lines after the last statement.
> 
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
> ---
>   automation/eclair_analysis/ECLAIR/deviations.ecl | 2 +-
>   docs/misra/deviations.rst                        | 4 ++++
>   2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
> index b8f9155267..b99a6b8a92 100644
> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
> @@ -400,7 +400,7 @@ safe."
>   -doc_end
>   
>   -doc_begin="Switch clauses ending with an explicit comment indicating the fallthrough intention are safe."
> --config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
> +-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all[ -]?through.? \\*/.*$,0..2))))"}
>   -doc_end
>   
>   -doc_begin="Switch statements having a controlling expression of enum type deliberately do not have a default case: gcc -Wall enables -Wswitch which warns (and breaks the build as we use -Werror) if one of the enum labels is missing from the switch."
> diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
> index 41cdfbe5f5..411e1fed3d 100644
> --- a/docs/misra/deviations.rst
> +++ b/docs/misra/deviations.rst
> @@ -353,6 +353,10 @@ Deviations related to MISRA C:2012 Rules:
>          However, the use of such comments in new code is deprecated:
>          the pseudo-keyword "fallthrough" shall be used.
>        - Tagged as `safe` for ECLAIR. The accepted comments are:
> +         - /\* fall-through \*/
> +         - /\* Fall-through. \*/
> +         - /\* Fall-through \*/
> +         - /\* fall-through. \*/

How many places use the 4 above? The reason I am asking is I am not 
particularly happy to add yet another set of variant.

I would rather prefer if we settle down with a single comment and 
therefore convert them to the pseudo-keyword.

Cheers,

-- 
Julien Grall


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

* Re: [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through
  2024-06-20 14:39   ` Julien Grall
@ 2024-06-20 14:58     ` Federico Serafini
  0 siblings, 0 replies; 18+ messages in thread
From: Federico Serafini @ 2024-06-20 14:58 UTC (permalink / raw)
  To: Julien Grall, xen-devel
  Cc: consulting, Simone Ballarin, Doug Goldstein, Stefano Stabellini,
	Andrew Cooper, George Dunlap, Jan Beulich

On 20/06/24 16:39, Julien Grall wrote:
> Hi,
> 
> On 20/06/2024 15:02, Federico Serafini wrote:
>> Update ECLAIR configuration to deviate MISRA C Rule 16.3
>> using different version of hypened fall-through and search for
>> the comment for 2 lines after the last statement.
>>
>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>> ---
>>   automation/eclair_analysis/ECLAIR/deviations.ecl | 2 +-
>>   docs/misra/deviations.rst                        | 4 ++++
>>   2 files changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl 
>> b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> index b8f9155267..b99a6b8a92 100644
>> --- a/automation/eclair_analysis/ECLAIR/deviations.ecl
>> +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
>> @@ -400,7 +400,7 @@ safe."
>>   -doc_end
>>   -doc_begin="Switch clauses ending with an explicit comment 
>> indicating the fallthrough intention are safe."
>> --config=MC3R1.R16.3,reports+={safe, 
>> "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? 
>> \\*/.*$,0..1))))"}
>> +-config=MC3R1.R16.3,reports+={safe, 
>> "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all[ -]?through.? 
>> \\*/.*$,0..2))))"}
>>   -doc_end
>>   -doc_begin="Switch statements having a controlling expression of 
>> enum type deliberately do not have a default case: gcc -Wall enables 
>> -Wswitch which warns (and breaks the build as we use -Werror) if one 
>> of the enum labels is missing from the switch."
>> diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
>> index 41cdfbe5f5..411e1fed3d 100644
>> --- a/docs/misra/deviations.rst
>> +++ b/docs/misra/deviations.rst
>> @@ -353,6 +353,10 @@ Deviations related to MISRA C:2012 Rules:
>>          However, the use of such comments in new code is deprecated:
>>          the pseudo-keyword "fallthrough" shall be used.
>>        - Tagged as `safe` for ECLAIR. The accepted comments are:
>> +         - /\* fall-through \*/
>> +         - /\* Fall-through. \*/
>> +         - /\* Fall-through \*/
>> +         - /\* fall-through. \*/
> 
> How many places use the 4 above? The reason I am asking is I am not 
> particularly happy to add yet another set of variant.
> 
> I would rather prefer if we settle down with a single comment and 
> therefore convert them to the pseudo-keyword.

7 occurrences and 3 of them are in xen/arch/x86/hvm/emulate.c
PATCH 07/13 modifies emulate.c anyway, so I could remove them in a v2.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


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

end of thread, other threads:[~2024-06-20 14:59 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-20 14:02 [XEN PATCH 00/13] x86: address violations of MISRA C Rule 16.3 Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 01/13] automation/eclair: consider also hypened fall-through Federico Serafini
2024-06-20 14:15   ` Jan Beulich
2024-06-20 14:22     ` Federico Serafini
2024-06-20 14:39   ` Julien Grall
2024-06-20 14:58     ` Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 02/13] x86/cpuid: use fallthrough pseudo keyword Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 03/13] x86/domctl: add missing break statement Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 04/13] x86/vpmu: address violations of MISRA C Rule 16.3 Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 05/13] x86/traps: use fallthrough pseudo keyword Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 06/13] x86/mce: add missing break statements Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 07/13] x86/hvm: address violations of MISRA C Rule 16.3 Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 08/13] x86/vpt: address a violation " Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 09/13] x86/mm: add defensive return Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 10/13] x86/mpparse: add break statement Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 11/13] x86/pmtimer: address a violation of MISRA C Rule 16.3 Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 12/13] x86/vPIC: " Federico Serafini
2024-06-20 14:02 ` [XEN PATCH 13/13] x86/vlapic: " Federico Serafini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.