|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] generic/altp2m: address violations of MISRA C Rule 2.1
Hello Jan,
On 4/10/26 09:04, Jan Beulich wrote:
> On 09.04.2026 19:37, Dmytro Prokopchuk1 wrote:
>> MISRA C Rule 2.1 states: "A project shall not contain unreachable code".
>>
>> In certain build configurations,
>
> Can you give an example where ...
When config VM_EVENT is enabled and compiled architecture (e.g. Arm64)
doesn't have altp2m implementation.
>
>> the function 'altp2m_vcpu_idx()' is defined
>> as an inline function that contains the 'BUG()' macro. This resulted in a
>> violation because the 'BUG()' macro makes the function non-returning.
>>
The call to "altp2m_vcpu_idx()" is guarded by the predicate "if
(altp2m_active(d))", which always returns "false"
(compile-time-constant) in current build config:
if ( altp2m_active(d) )
{
req->flags |= VM_EVENT_FLAG_ALTERNATE_P2M;
req->altp2m_idx = altp2m_vcpu_idx(v);
}
DCE removes (should remove) this entire branch, so the BUG() is never
actually included in the final binary.
But, this code is still present after preprocessing and is analyzed by
the Eclair tool (regardless of whether this code is later removed by the
DCE).
No inline function --> no deviation (Eclair is happy).
>> To ensure compliance with MISRA C Rule 2.1, this patch removes the inline
>> function implementation and its BUG()-based unreachable code. It is replaced
>> with an unconditional function declaration for 'altp2m_vcpu_idx()'.
>
> ... a declaration is needed? The sole non-x86 reference I see is from
> common/monitor.c, and the sole relevant Kconfig option I can spot is
> VM_EVENT. When that's off, the file won't be built at all.
>
> Further, BUG() and a few more constructs have a dedicated deviation
> already in place.
If so, Eclair shouldn't report a violation...
I don't mind a useless function to be shrunk (or, as
> per above, perhaps even dropped), but the justification then needs to
> be different.
>
> Jan
BR, Dmytro.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |