[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH] xen/arm: address violation of MISRA C Rule 10.1


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Dmytro Prokopchuk1 <dmytro_prokopchuk1@xxxxxxxx>
  • Date: Thu, 10 Jul 2025 22:12:20 +0000
  • Accept-language: en-US, uk-UA, ru-RU
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zzN/iZXMotiBI1KGgaypSDma7HaiMCyUBdyzS1vQ4es=; b=dDEUDTie5+1zfdq2Id1jKsH6r+25sJlmyF+RC92RcFuaEQqKq0J9XcTl7nxVIij8rF1tFQsfnre+2O17JppI7yjwnJQFvbI+gNmDVj0Iv6Lv5HOaqrXTXJBp80IRkFYE9/kyTg+Lra1gp0W/qSMM9MSDUGChIZ+S0yin7e6L6PUPAhl6EKfKXrv7vRAL9CfhYwwzFngmZAeJETE5EoFSV/veU8jt5v2RC07Bk2L1YZ49TVtLB67uE0VwY0PFzNcDL6Ocl8K/6GN1Otawk4Gz1AV/9bSc1uONHlTBMzx8XnssIKqD5bC5CmQmvTkT5uGp0rVxEfgRhyFugPTP6OW8MQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J1QMtmx3Eu1iMiREKd3Xr5LZPazWrjCMVQaswcVtj5zea2Mw2WLTyxv/UeKT/cvu3AJojcioLl5p+iRHfBLIT8y8kWYZZbHzM5LkEM9++YtRfIKyMfiIjeht1vlkOjZThcdraZyyVTPQnb7IJVXNtbRDrZTLJ30FLPiezWiCwVWuRbVyqrpp54HcJPAn/mcozZs5OnzM13twT/2i9Ir9CrNY/nJilbVTawYTAM3p9V1sI5FJ9vIJpv0zfKQUgmQGiHdU8ejEsXTNYFCA9dWVkoh57FDMJKoYV8wDXhXcrvzKSXeawH+rGsH/9K7PIWuCnNW8S69T48O/4mCmq2TOhg==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Rahul Singh <rahul.singh@xxxxxxx>
  • Delivery-date: Thu, 10 Jul 2025 22:12:27 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHb8eeDdIb8PsAFg0eJMVAybu7FMbQr65iA
  • Thread-topic: [XEN PATCH] xen/arm: address violation of MISRA C Rule 10.1

CI tests:
https://gitlab.com/xen-project/people/dimaprkp4k/xen/-/pipelines/1919687496

On 7/11/25 01:10, Dmytro Prokopchuk1 wrote:
> Rule 10.1: Operands shall not be of an
> inappropriate essential type
> 
> The following are non-compliant:
> - unary minus on unsigned type;
> - boolean used as a numeric value.
> 
> Replace unary '-' operator with multiplying by '-1L' or '-1LL'.
> Replace numeric constant '-1UL' with '~0UL'.
> Replace numeric constant '-1ULL' with '~0ULL'.
> Cast boolean to numeric value.
> 
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@xxxxxxxx>
> ---
>   xen/arch/arm/gic-vgic.c               | 2 +-
>   xen/common/memory.c                   | 2 +-
>   xen/common/page_alloc.c               | 6 +++---
>   xen/common/time.c                     | 2 +-
>   xen/drivers/passthrough/arm/smmu-v3.c | 2 +-
>   xen/lib/strtol.c                      | 2 +-
>   xen/lib/strtoll.c                     | 2 +-
>   7 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/arch/arm/gic-vgic.c b/xen/arch/arm/gic-vgic.c
> index ea48c5375a..a35f33c5f2 100644
> --- a/xen/arch/arm/gic-vgic.c
> +++ b/xen/arch/arm/gic-vgic.c
> @@ -17,7 +17,7 @@
>   #include <asm/vgic.h>
>   
>   #define lr_all_full()                                           \
> -    (this_cpu(lr_mask) == (-1ULL >> (64 - gic_get_nr_lrs())))
> +    (this_cpu(lr_mask) == (~0ULL >> (64 - gic_get_nr_lrs())))
>   
>   #undef GIC_DEBUG
>   
> diff --git a/xen/common/memory.c b/xen/common/memory.c
> index 46620ed825..96086704cb 100644
> --- a/xen/common/memory.c
> +++ b/xen/common/memory.c
> @@ -773,7 +773,7 @@ static long 
> memory_exchange(XEN_GUEST_HANDLE_PARAM(xen_memory_exchange_t) arg)
>   
>                   nrspin_lock(&d->page_alloc_lock);
>                   drop_dom_ref = (dec_count &&
> -                                !domain_adjust_tot_pages(d, -dec_count));
> +                                !domain_adjust_tot_pages(d, (-1L) * 
> dec_count));
>                   nrspin_unlock(&d->page_alloc_lock);
>   
>                   if ( drop_dom_ref )
> diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
> index 8f93a4c354..da8dddf934 100644
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -691,7 +691,7 @@ size_param("low_mem_virq_limit", opt_low_mem_virq);
>   /* Thresholds to control hysteresis. In pages */
>   /* When memory grows above this threshold, reset hysteresis.
>    * -1 initially to not reset until at least one virq issued. */
> -static unsigned long low_mem_virq_high      = -1UL;
> +static unsigned long low_mem_virq_high      = ~0UL;
>   /* Threshold at which we issue virq */
>   static unsigned long low_mem_virq_th        = 0;
>   /* Original threshold after all checks completed */
> @@ -710,7 +710,7 @@ static void __init setup_low_mem_virq(void)
>        * to ever trigger. */
>       if ( opt_low_mem_virq == 0 )
>       {
> -        low_mem_virq_th = -1UL;
> +        low_mem_virq_th = ~0UL;
>           return;
>       }
>   
> @@ -778,7 +778,7 @@ static void check_low_mem_virq(void)
>           low_mem_virq_th_order++;
>           low_mem_virq_th = 1UL << low_mem_virq_th_order;
>           if ( low_mem_virq_th == low_mem_virq_orig )
> -            low_mem_virq_high = -1UL;
> +            low_mem_virq_high = ~0UL;
>           else
>               low_mem_virq_high = 1UL << (low_mem_virq_th_order + 2);
>       }
> diff --git a/xen/common/time.c b/xen/common/time.c
> index 92f7b72464..a6eda82f8d 100644
> --- a/xen/common/time.c
> +++ b/xen/common/time.c
> @@ -84,7 +84,7 @@ struct tm gmtime(unsigned long t)
>       }
>       tbuf.tm_year = y - 1900;
>       tbuf.tm_yday = days;
> -    ip = (const unsigned short int *)__mon_lengths[__isleap(y)];
> +    ip = (const unsigned short int *)__mon_lengths[(int)__isleap(y)];
>       for ( y = 0; days >= ip[y]; ++y )
>           days -= ip[y];
>       tbuf.tm_mon = y;
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c 
> b/xen/drivers/passthrough/arm/smmu-v3.c
> index df16235057..4058b18f2c 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -315,7 +315,7 @@ static int queue_poll_cons(struct arm_smmu_queue *q, bool 
> sync, bool wfe)
>   
>       while (queue_sync_cons_in(q),
>             (sync ? !queue_empty(&q->llq) : queue_full(&q->llq))) {
> -             if ((NOW() > timeout) > 0)
> +             if (NOW() > timeout)
>                       return -ETIMEDOUT;
>   
>               if (wfe) {
> diff --git a/xen/lib/strtol.c b/xen/lib/strtol.c
> index 30dca779cf..5f9d691727 100644
> --- a/xen/lib/strtol.c
> +++ b/xen/lib/strtol.c
> @@ -13,7 +13,7 @@
>   long simple_strtol(const char *cp, const char **endp, unsigned int base)
>   {
>       if ( *cp == '-' )
> -        return -simple_strtoul(cp + 1, endp, base);
> +        return (-1L) * simple_strtoul(cp + 1, endp, base);
>       return simple_strtoul(cp, endp, base);
>   }
>   
> diff --git a/xen/lib/strtoll.c b/xen/lib/strtoll.c
> index 5d23fd80e8..e87007eddd 100644
> --- a/xen/lib/strtoll.c
> +++ b/xen/lib/strtoll.c
> @@ -13,7 +13,7 @@
>   long long simple_strtoll(const char *cp, const char **endp, unsigned int 
> base)
>   {
>       if ( *cp == '-' )
> -        return -simple_strtoull(cp + 1, endp, base);
> +        return (-1LL) * simple_strtoull(cp + 1, endp, base);
>       return simple_strtoull(cp, endp, base);
>   }
>   

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.