All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Roberto Bagnara <roberto.bagnara@bugseng.com>,
	sstabellini@kernel.org, michal.orzel@amd.com,
	xenia.ragiadakou@amd.com, ayan.kumar.halder@amd.com,
	consulting@bugseng.com, andrew.cooper3@citrix.com,
	roger.pau@citrix.com, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH][for-next v2 6/8] x86/mce: Move MC_NCLASSES into the enum mctelem_class
Date: Tue, 17 Oct 2023 11:43:37 +0200	[thread overview]
Message-ID: <b9177bf523d36df16b9fc3d116e0e89d@bugseng.com> (raw)
In-Reply-To: <59692ac7-8b68-5913-8e51-0a68feb2a1bc@suse.com>

On 17/10/2023 10:26, Jan Beulich wrote:
> On 17.10.2023 10:12, Nicola Vetrini wrote:
>> On 17/10/2023 09:02, Jan Beulich wrote:
>>> On 16.10.2023 18:05, Nicola Vetrini wrote:
>>>> On 16/10/2023 17:45, Jan Beulich wrote:
>>>>> On 12.10.2023 17:28, Nicola Vetrini wrote:
>>>>>> The definition of MC_NCLASSES contained a violation of MISRA 
>>>>>> C:2012
>>>>>> Rule 10.1, therefore by moving it as an enumeration constant
>>>>>> resolves
>>>>>> the
>>>>>> violation and makes it more resilient to possible additions to 
>>>>>> that
>>>>>> enum.
>>>>> 
>>>>> And using an enumerator as array dimension specifier is okay for
>>>>> Misra?
>>>>> That would be odd when elsewhere named enums are treated specially.
>>>> 
>>>> Yes, the array subscript operator is one of the few places where an
>>>> enum
>>>> can be used as
>>>> an operand (also because negative values wouldn't compile), as 
>>>> opposed
>>>> to mixing them
>>>> with ordinary integers.
>>> 
>>> When saying "odd" I didn't even think of negative values. May I
>>> therefore
>>> ask for the reasoning of why this specific case is deemed non-risky? 
>>> To
>>> me there looks to be a fair risk of creating undersized arrays, 
>>> leading
>>> to out-of-bounds accesses.
>> 
>> Two reasons: MC_NCLASSES is the last value of the enum, and a pattern
>> I've spot in various
>> other places in Xen, so I assumed it was a fairly common pattern for 
>> the
>> community.
>> The other reason is that since the value of an enum constant can be
>> derived statically, there
>> is little risk of it being the wrong value, because no arithmetic is
>> done on it in its use
>> as an array's size (and besides, the enum changed the last time ~15
>> years ago, so I think
>> it's unlikely to change much in the near future).
> 
> You focus on the specific instance, yet my question was on the general
> principle.
> 
> Jan

A couple of reasons why this is allowed:
- associating values to set of symbols is typical and makes sense in 
some contexts
- out-of-bounds operations on arrays are dealt with by a host of other 
guidelines
   (Series 18, mainly)
- this rule is about which kinds of operands makes sense to use with 
certain operators.
   It was deemed unlikely by MISRA that risky behaviour may arise by 
using symbolic indices
   as subscripts, given the rest of the other guidelines and the 
unspecified and undefined
   associated with Rule 10.1. It's not impossible that problems will 
arise, but far less
   likely than using enums with no restrictions at all (such as those 
caused by an enum of
   and implementation-defined type used in an arithmetic operation, that 
could give
   unexpected results).

-- 
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)


  reply	other threads:[~2023-10-17  9:43 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-12 15:28 [XEN PATCH v2 0/8] address violations of MISRA C:2012 Rule 10.1 Nicola Vetrini
2023-10-12 15:28 ` [XEN PATCH][for-next][for-4.19 v2 1/8] xen/include: add macro LOWEST_BIT Nicola Vetrini
2023-10-12 23:31   ` Stefano Stabellini
2023-10-13 10:40     ` Nicola Vetrini
2023-10-13  8:25   ` Julien Grall
2023-10-13 10:43     ` Nicola Vetrini
2023-10-16 15:33   ` Jan Beulich
2023-10-16 16:17     ` Nicola Vetrini
2023-10-16 16:30       ` Jan Beulich
2023-10-17  0:57         ` Stefano Stabellini
2023-10-19 14:26         ` Nicola Vetrini
2023-10-19 19:58           ` Stefano Stabellini
2023-10-20  6:00             ` Jan Beulich
2023-10-20 10:40               ` Nicola Vetrini
2023-10-20 13:28                 ` Jan Beulich
2023-10-20 13:13             ` Luca Fancellu
2023-10-20 18:07               ` Stefano Stabellini
2023-10-20 18:11                 ` Luca Fancellu
2023-10-12 15:28 ` [XEN PATCH][for-4.19 v2 2/8] arm/bitops: encapsulate violation of MISRA C:2012 Rule 10.1 Nicola Vetrini
2023-10-12 23:31   ` Stefano Stabellini
2023-10-12 15:28 ` [XEN PATCH][for-4.19 v2 3/8] xen/pdx: amend definition of PDX_GROUP_COUNT Nicola Vetrini
2023-10-12 23:33   ` Stefano Stabellini
2023-10-12 15:28 ` [XEN PATCH][for-next v2 4/8] x86_64/mm: express macro CNT using LOWEST_BIT Nicola Vetrini
2023-10-12 23:34   ` Stefano Stabellini
2023-10-12 15:28 ` [XEN PATCH][for-next v2 5/8] x86/io_apic: address violation of MISRA C:2012 Rule 10.1 Nicola Vetrini
2023-10-16 15:42   ` Jan Beulich
2023-10-16 16:36     ` Nicola Vetrini
2023-10-17  6:58       ` Jan Beulich
2023-10-16 15:42   ` Jan Beulich
2023-10-16 16:36     ` Nicola Vetrini
2023-10-12 15:28 ` [XEN PATCH][for-next v2 6/8] x86/mce: Move MC_NCLASSES into the enum mctelem_class Nicola Vetrini
2023-10-12 23:44   ` Stefano Stabellini
2023-10-16 15:45   ` Jan Beulich
2023-10-16 16:05     ` Nicola Vetrini
2023-10-17  7:02       ` Jan Beulich
2023-10-17  8:12         ` Nicola Vetrini
2023-10-17  8:26           ` Jan Beulich
2023-10-17  9:43             ` Nicola Vetrini [this message]
2023-10-17  9:54               ` Jan Beulich
2023-10-19 14:33                 ` Nicola Vetrini
2023-10-12 15:28 ` [XEN PATCH][for-4.19 v2 7/8] xen/types: address Rule 10.1 for DECLARE_BITMAP use Nicola Vetrini
2023-10-16 15:49   ` Jan Beulich
2023-10-17  8:54     ` Nicola Vetrini
2023-10-12 15:28 ` [XEN PATCH][for-4.19 v2 8/8] xen/compat: use BUILD_BUG_ON in CHECK_SIZE macros Nicola Vetrini
2023-10-17  6:09   ` Jan Beulich
2023-10-19 14:35     ` Nicola Vetrini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b9177bf523d36df16b9fc3d116e0e89d@bugseng.com \
    --to=nicola.vetrini@bugseng.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ayan.kumar.halder@amd.com \
    --cc=consulting@bugseng.com \
    --cc=jbeulich@suse.com \
    --cc=michal.orzel@amd.com \
    --cc=roberto.bagnara@bugseng.com \
    --cc=roger.pau@citrix.com \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xenia.ragiadakou@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.