On 2025-08-11 19:36, Dmytro Prokopchuk1 wrote:
MISRA Rule 16.4: Every switch statement shall have a default label. The
default clause must contain either a statement or a comment prior to
its
terminating break statement.
This change adds comments in default cases in single-clause switches to
avoid violations of the rule where the `default` clause lacks a
suitable
comment or statement.
If you want to go this way then at least this config wants dropping:
-doc_begin="A switch statement with a single switch clause and no
default label may be used in place of an equivalent if statement if it
is considered to improve readability."
-config=MC3A2.R16.4,switch_clauses+={deliberate,"switch(1)&&default(0)"}
-doc_end
and probably this one too (haven't checked):
-doc_begin="A switch statement with a single switch clause and no
default label may be used in place of an equivalent if statement if it
is considered to improve readability."
-config=MC3A2.R16.6,switch_clauses+={deliberate, "default(0)"}
-doc_end
In the end it's a tradeoff; placing a comment with a suitable
argumentation might be strictly better than simply tagging the tool
report, at least from a developer's perspective. From a MISRA compliance
standpoint in my opinion both are fine. Let's see what the maintainers
think.
Signed-off-by: Dmytro Prokopchuk <dmytro_prokopch...@epam.com>
---
xen/arch/arm/cpuerrata.c | 5 +++++
xen/arch/arm/gic.c | 6 ++++++
xen/arch/arm/mmu/p2m.c | 6 ++++++
xen/arch/arm/time.c | 6 ++++++
xen/common/kexec.c | 6 ++++++
5 files changed, 29 insertions(+)
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index 17cf134f1b..e31c72694b 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -735,6 +735,11 @@ static int cpu_errata_callback(struct
notifier_block *nfb,
rc = enable_nonboot_cpu_caps(arm_errata);
break;
default:
+ /*
+ * Default case left empty as other notifier actions do not
require handling here.
+ * The single CPU_STARTING action in the switch is sufficient
because this function
+ * specifically handles enabling errata workarounds during CPU
startup.
+ */
break;
}
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index e80fe0ca24..dfbb0dfe08 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -436,6 +436,12 @@ static int cpu_gic_callback(struct notifier_block
*nfb,
release_irq(gic_hw_ops->info->maintenance_irq, NULL);
break;
default:
+ /*
+ * Default case left empty as other notifier actions do not
require handling here.
+ * The CPU_DYING action specifically handles releasing
resources acquired by
+ * init_maintenance_interrupt(), when the CPU is being taken
offline. Other CPU
+ * actions do not require GIC-specific handling.
+ */
break;
}
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 51abf3504f..d1f0ae0226 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1828,6 +1828,12 @@ static int cpu_virt_paging_callback(struct
notifier_block *nfb,
setup_virt_paging_one(NULL);
break;
default:
+ /*
+ * Default case left empty as other notifier actions do not
require handling here.
+ * The CPU_STARTING action is specifically handled because
this function sets up
+ * virtual paging for CPUs, particularly for non-boot CPUs
during hotplug. Other
+ * actions do not involve virtual paging setup.
+ */
break;
}
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index e74d30d258..4776110d97 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -382,6 +382,12 @@ static int cpu_time_callback(struct notifier_block
*nfb,
deinit_timer_interrupt();
break;
default:
+ /*
+ * Default case left empty as other notifier actions do not
require handling here.
+ * The CPU_DYING action is specifically handled to revert
actions done in
+ * init_timer_interrupt() and properly disable timer
interrupts on the CPU being
+ * taken offline. Other actions do not involve timer
deinitialization.
+ */
break;
}
diff --git a/xen/common/kexec.c b/xen/common/kexec.c
index 84fe8c3597..0f78087a4a 100644
--- a/xen/common/kexec.c
+++ b/xen/common/kexec.c
@@ -549,6 +549,12 @@ static int cf_check cpu_callback(
kexec_init_cpu_notes(cpu);
break;
default:
+ /*
+ * Default case left empty as other notifier actions do not
require handling here.
+ * The CPU_UP_PREPARE action is specifically handled to
allocate crash note buffers
+ * for a newly onlined CPU. Other actions do not pertain to
crash note allocation
+ * or memory preservation for kexec.
+ */
break;
}
return NOTIFY_DONE;
--
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253