[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH 2/4] xen/arm64: bitops: justify uninitialized variable inside a macro
On 17.07.2023 17:28, Nicola Vetrini wrote: > > > On 17/07/23 15:59, Jan Beulich wrote: >> On 14.07.2023 16:20, Luca Fancellu wrote: >>> >>> >>>> On 14 Jul 2023, at 12:49, Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx> >>>> wrote: >>>> >>>> The macro 'testop' expands to a function that declares the local >>>> variable 'oldbit', which is written before being set, but is such a >>>> way that is not amenable to automatic checking. >>>> >>>> Therefore, a deviation comment, is introduced to document this situation. >>>> >>>> A similar reasoning applies to macro 'guest_testop'. >>>> >>>> Signed-off-by: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx> >>>> --- >>>> docs/misra/safe.json | 16 ++++++++++++++++ >>>> xen/arch/arm/arm64/lib/bitops.c | 3 +++ >>>> xen/arch/arm/include/asm/guest_atomics.h | 3 +++ >>>> 3 files changed, 22 insertions(+) >>>> >>>> diff --git a/docs/misra/safe.json b/docs/misra/safe.json >>>> index 244001f5be..4cf7cbf57b 100644 >>>> --- a/docs/misra/safe.json >>>> +++ b/docs/misra/safe.json >>>> @@ -20,6 +20,22 @@ >>>> }, >>>> { >>>> "id": "SAF-2-safe", >>>> + "analyser": { >>>> + "eclair": "MC3R1.R9.1" >>>> + }, >>>> + "name": "Rule 9.1: initializer not needed", >>>> + "text": "The following local variables are possibly subject >>>> to being read before being written, but code inspection ensured that the >>>> control flow in the construct where they appear ensures that no such event >>>> may happen." >>>> + }, >>>> + { >>>> + "id": "SAF-3-safe", >>>> + "analyser": { >>>> + "eclair": "MC3R1.R9.1" >>>> + }, >>>> + "name": "Rule 9.1: initializer not needed", >>>> + "text": "The following local variables are possibly subject >>>> to being read before being written, but code inspection ensured that the >>>> control flow in the construct where they appear ensures that no such event >>>> may happen." >>>> + }, >>> >>> Since the rule and the justification are the same, you can declare only >>> once and use the same tag on top of the offending lines, so /* SAF-2-safe >>> MC3R1.R9.1 */, >> >> +1 >> >> I'm puzzled by the wording vs comment placement though: The comments >> are inserted ahead of the macro invocations, so there are no "following >> local variables". Plus does this imply the comment would suppress the >> checking on _all_ of them, rather than just the one that was confirmed >> to be safe? What if another new one was added, that actually introduces >> a problem? >> >>> also, I remember some maintainers not happy about the misra rule being put >>> after the tag, now I don’t recall who >> >> Me, at least. The annotations should be tool-agnostic imo, or else the >> more tools we use, the longer these comments might get. > > No problem for both: Given the earlier remarks by Julien on patch 1/4, I > think we can devise something along the lines of > > /* SAF-x-safe MISRA:C 2012 Rule 9.1 <Justification> */ > int var; > > and then write a generic justification in docs/misra/safe.json, while > <Justification> contains a specific one (e.g., this loop does so and so > to ensure that no access to unset variables happens). But that still mentions the rule. What if a new MISRA:C 2025 appears, with different rule numbers? I don't mind the comment mentioning, in a sufficiently terse way, what problem is circumvented. But I don't think tools or specifications should be referenced here. That's the purpose of the referenced "database" entry. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |