[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] misra: comment default case in single-clause switch


  • To: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • From: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
  • Date: Mon, 11 Aug 2025 23:14:31 +0200
  • Arc-authentication-results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
  • Arc-message-signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; c=relaxed/relaxed; t=1754946871; h=DKIM-Signature:MIME-Version:Date:From:To:Cc:Subject:In-Reply-To: References:Message-ID:X-Sender:Organization:Content-Type: Content-Transfer-Encoding; bh=kcFKs1Rrl9bmR44jzkik5PqdmBGE1cxvNNwL9ft+GzQ=; b=tka9eSZlZoaZVT8atfM6R4yEFqNZ4fAWQ71W03y3ChI9+c2ofjHqCt7toO5VPAFoQfqI /9NuYBsyfzOZySg02wk/BUmK3NVmXTA0g44Uef9RPWdBcyW5G5jmKZvhG2zSFsVAXMU2H vj+oV0lVC3ocFrmNvTvknCt3T8d7WNkQ1mIGvRwH9desgsUeI+kxVQIdEXPrjegYNj3qp Z6i9VtTNfXcXb8XWxOuuebKRwsj9PsDKrgPiPLcsFr4kkOu7UGYdTiolo7tUXRnEwE85D lTAM6B9utkrA8QOx3M9f18pVdSFM3n7KrJ/17pHAOVJi57hUdlKRjFtRBwd4Hb/gJtuqw ZaKrhFysDQBjNnKeHWcxfmWBYyb70C+hIdiU0mbk7n25fI4okLCi9RXbwWX+c5Xg1CDTl PN+GZn56x6jA4AfsZ0JjoD4F3QtS0NANukolZo2NZiN2KhY1BXab+HkrZqmNX0x4yb+Ar hX8+n8xcYgvtWFnOE1YjUK4F0wbM9x2gmiKFFJGxJNmUf935xuqkLmjXR77xPKvGK3VI8 +qhPg7mHIgypDb7P+mkD5w2wxuOXyPkPhP09yAGFoPuWZQtsFIwuwG5MSfzZeIEDhg7HT LBTooPTTjpX9PBVigHcsHh1UTHT9nT2IZ+dV1UVISZT7k4oc0y/MvMwjlfj/sSo=
  • Arc-seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1754946871; b=EOwGbPJK/Q4spxeAV+e4aueL4DkiZ8Ps4UlrYSzgjxNU+mrd1sWGIpv5wu+EYuuyw+Go Qx4QYPrWjGi5a1bD3cKsaj5zCWR9YzvqnJ3TEK1osm14h16ykJh/3ejJhuBdOBl5VsEEe qi1jqKxWTm4l5cWXLhnOhmKXpuYJB8kyXktkhx1kI0Av6eij7U8yHkAeqZdO9mAPDIZye Nf/ItNFF/rnW7O6STUKijeI3icPT6oL8iVDZYSFBGgHicvHGUYmmBTUprXuB4sMRYWZoa ZlBMD2o11Ak0LyXjs8X4KwrvsXNhejKodzzHo4wIWw/nilYnIivR/IR6OIS7RvpsBnysP 4l+NEBotl7T1IBk0eiEnllggXcSMFI+osudYK/H0axQkdo0b9qrX3SGR6HD/RRK6wU0r5 YChS8vplr3iPGT4SZDifE3LkQroOcTHw8V2W+UpUOmUjJmwcfzkfv/6XqLbRfsOXGV/G7 gOPMhzsqxzrlvsB+ki4bw/o/Ic0hJX6yQjok7fSLiLyDasq2I8RxfCRErrxxZcTU+APHA LIpgwBMBGvIJ4w2TiimuH7lYqJuoHkJ/X0qXnwbZn2sA4KuUBtUVxmsaq4YwmkqCde3JX qpRaixVdYgN/oGqSFJYRVw2L0zy6deQniLpBgeKwc5k0segjHSwHX6FEpNC2TPA=
  • Authentication-results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
  • Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Delivery-date: Mon, 11 Aug 2025 21:14:43 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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_prokopchuk1@xxxxxxxx>
---
 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



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.