|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN PATCH 1/5] gnttab: address violation of MISRA C Rule 5.5
On Fri, 4 Jul 2025, Dmytro Prokopchuk1 wrote:
> Address a violation of MISRA C:2012 Rule 5.5:
> "Identifiers shall be distinct from macro names".
>
> Reports for service MC3A2.R5.5:
> xen/common/grant_table.c: non-compliant macro 'update_gnttab_par'
> xen/common/grant_table.c: non-compliant macro 'parse_gnttab_limit'
>
> The macros above are intended to discard function arguments (unused1, unused2)
> when compiling with different configurations of CONFIG_HYPFS.
> This can lead to confusion and unexpected behavior
> because the macro name and the function name are identical.
> Split the code and create two distinct function signatures.
> This ensures that the code behaves predictably and remains compliant.
>
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
I realize you tried to address Jan's comment about the global deviation.
In my opinion patch #2 and #3 are still OK, but I think this patch makes
things more confusing and error prone.
Can we find a way to deviate update_gnttab_par and parse_gnttab_limit
either with a SAF in-code comment (docs/misra/safe.json) or with a new
regex deviation (docs/misra/deviations.rst,
automation/eclair_analysis/ECLAIR/deviations.ecl)?
> ---
> xen/common/grant_table.c | 22 +++++++++++++---------
> 1 file changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
> index cf131c43a1..f3282a1d7b 100644
> --- a/xen/common/grant_table.c
> +++ b/xen/common/grant_table.c
> @@ -126,18 +126,12 @@ static void __init cf_check
> max_maptrack_frames_init(struct param_hypfs *par)
> update_gnttab_par(opt_max_maptrack_frames, par,
> opt_max_maptrack_frames_val);
> }
> -#else
> -#define update_gnttab_par(v, unused1, unused2) update_gnttab_par(v)
> -#define parse_gnttab_limit(a, v, unused1, unused2) parse_gnttab_limit(a, v)
> -
> -static void update_gnttab_par(unsigned int val, struct param_hypfs *par,
> - char *parval)
> -{
> -}
> -#endif
>
> static int parse_gnttab_limit(const char *arg, unsigned int *valp,
> struct param_hypfs *par, char *parval)
> +#else
> +static int parse_gnttab_limit(const char *arg, unsigned int *valp)
> +#endif
> {
> const char *e;
> unsigned long val;
> @@ -150,7 +144,9 @@ static int parse_gnttab_limit(const char *arg, unsigned
> int *valp,
> return -ERANGE;
>
> *valp = val;
> +#ifdef CONFIG_HYPFS
> update_gnttab_par(val, par, parval);
> +#endif
>
> return 0;
> }
> @@ -161,9 +157,13 @@ custom_runtime_param("gnttab_max_frames",
> parse_gnttab_max_frames,
>
> static int cf_check parse_gnttab_max_frames(const char *arg)
> {
> +#ifdef CONFIG_HYPFS
> return parse_gnttab_limit(arg, &opt_max_grant_frames,
> param_2_parfs(parse_gnttab_max_frames),
> opt_max_grant_frames_val);
> +#else
> + return parse_gnttab_limit(arg, &opt_max_grant_frames);
> +#endif
> }
>
> static int cf_check parse_gnttab_max_maptrack_frames(const char *arg);
> @@ -173,9 +173,13 @@ custom_runtime_param("gnttab_max_maptrack_frames",
>
> static int cf_check parse_gnttab_max_maptrack_frames(const char *arg)
> {
> +#ifdef CONFIG_HYPFS
> return parse_gnttab_limit(arg, &opt_max_maptrack_frames,
>
> param_2_parfs(parse_gnttab_max_maptrack_frames),
> opt_max_maptrack_frames_val);
> +#else
> + return parse_gnttab_limit(arg, &opt_max_maptrack_frames);
> +#endif
> }
>
> #ifndef GNTTAB_MAX_VERSION
> --
> 2.43.0
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |