From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: 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, George Dunlap <george.dunlap@citrix.com>,
Julien Grall <julien@xen.org>, Wei Liu <wl@xen.org>,
xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH][for-4.19 v2 8/8] xen/compat: use BUILD_BUG_ON in CHECK_SIZE macros
Date: Thu, 19 Oct 2023 16:35:27 +0200 [thread overview]
Message-ID: <4e0c7d27b73fd00e8574547eff2a8da6@bugseng.com> (raw)
In-Reply-To: <8546127f-9945-0175-4e11-e187233e13cb@suse.com>
On 17/10/2023 08:09, Jan Beulich wrote:
> On 12.10.2023 17:28, Nicola Vetrini wrote:
>> BUILD_BUG_ON is the preferred way to induce a build error
>> upon statically determined incorrect conditions.
>>
>> This also fixes a MISRA C:2012 Rule 10.1 violation in the
>> previous formulation.
>>
>> Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com>
>
> Hmm, looking back it's indeed not clear why I didn't use BUILD_BUG_ON()
> right
> away. Perhaps just to avoid inline functions when things can be done
> without.
> And/or because originally the macros were intended to be usable in
> function
> bodies, not (just) at file scope. However, ...
>
>> --- a/xen/include/xen/compat.h
>> +++ b/xen/include/xen/compat.h
>> @@ -151,12 +151,20 @@ CHECK_NAME_(k, n, T)(k xen_ ## n *x, \
>> return x == c; \
>> }
>>
>> -#define CHECK_SIZE(name) \
>> - typedef int CHECK_NAME(name, S)[1 - (sizeof(xen_ ## name ## _t)
>> != \
>> - sizeof(compat_ ## name ##
>> _t)) * 2]
>> +#define CHECK_SIZE(name) \
>> +static inline void __maybe_unused CHECK_SIZE_##name(void) \
>> +{ \
>> + typedef int CHECK_NAME(name, S)[1]; \
>
> ... what's this and ...
>
>> + BUILD_BUG_ON(sizeof(xen_ ## name ## _t) != \
>> + sizeof(compat_ ## name ## _t)); \
>> +}
>> #define CHECK_SIZE_(k, n) \
>> - typedef int CHECK_NAME_(k, n, S)[1 - (sizeof(k xen_ ## n) != \
>> - sizeof(k compat_ ## n)) *
>> 2]
>> +static inline void __maybe_unused CHECK_SIZE_##k_##n(void) \
>> +{ \
>> + typedef int CHECK_NAME_(k, n, S)[1]; \
>
> ... this needed for? The types aren't used anywhere afaict.
>
> Jan
>
>> + BUILD_BUG_ON(sizeof(k xen_ ## n) != \
>> + sizeof(k compat_ ## n)); \
>> +}
>>
>> #define CHECK_FIELD_COMMON(name, t, f) \
>> static inline int __maybe_unused name(xen_ ## t ## _t *x, compat_ ##
>> t ## _t *c) \
You're probably right. I was wondering the same thing when replacing the
code with
BUILD_BUG_ON.
--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)
prev parent reply other threads:[~2023-10-19 14:35 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
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 [this message]
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=4e0c7d27b73fd00e8574547eff2a8da6@bugseng.com \
--to=nicola.vetrini@bugseng.com \
--cc=andrew.cooper3@citrix.com \
--cc=ayan.kumar.halder@amd.com \
--cc=consulting@bugseng.com \
--cc=george.dunlap@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.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.