|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] misra: comment default case in single-clause switch
On 8/12/25 00:14, Nicola Vetrini wrote:
> 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.
>
According to Jan's comment here
https://patchew.org/Xen/725ec86ac1aa883c35fb30b8f226c95cbe0934e9.1754322299.git.dmytro._5Fprokopchuk1@xxxxxxxx/
there were discussions about placing comments inside 'default' case.
Actually, my first patch removed 'default' case in single-clause switches.
Dmytro
>> 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;
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |