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(-)
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.
Precede unary '-' operator with casting to signed type.
Replace numeric constant '-1UL' with '~0UL'.
Replace numeric constant '-1ULL' with '~0ULL'.
Replace boolean with numeric value.
Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
---
Changes since v1:
- changed patch subject prefix
- multiplication replaced with cast
Link to v1: https://patchew.org/Xen/d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/
---
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..0a5b3fab04 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, -(long)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..980dddee28 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[__isleap(y) ? 1 : 0];
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..c68d133657 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 -(long)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..6861d55929 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 -(long long)simple_strtoull(cp + 1, endp, base);
return simple_strtoull(cp, endp, base);
}
--
2.43.0
On 11.07.2025 13:43, Dmytro Prokopchuk1 wrote:
> --- 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, -(long)dec_count));
Here and elsewhere I continue to think that we would better avoid casts
in such cases as well, just like we try to minimize their use everywhere
else.
> --- 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[__isleap(y) ? 1 : 0];
If an expression is needed here, I'd suggest to use !!, as we have in
(luckily decreasing) number of places elsewhere. Personally I don't
understand though why a boolean cannot be used as an array index.
> --- 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;
How does this change fit here?
Jan
On 7/11/25 15:03, Jan Beulich wrote:
> On 11.07.2025 13:43, Dmytro Prokopchuk1 wrote:
>> --- 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, -(long)dec_count));
>
> Here and elsewhere I continue to think that we would better avoid casts
> in such cases as well, just like we try to minimize their use everywhere
> else.
Got it!
>
>> --- 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[__isleap(y) ? 1 : 0];
>
> If an expression is needed here, I'd suggest to use !!, as we have in
> (luckily decreasing) number of places elsewhere. Personally I don't
> understand though why a boolean cannot be used as an array index.
>
>> --- 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;
>
> How does this change fit here?
>
> Jan
if ((NOW() > timeout) > 0)
Result of "(NOW() > timeout)" is Boolean, so we have comparison Boolean
with Numeric value.
Hi All.
In this 2nd version I made changes according to the
https://patchew.org/Xen/d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/
There are 0 violations on the ARM64 as you can see in the report:
https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/fix_10.1_rule/ARM64/10650097988/PROJECT.ecd;/by_service.html#service&kind
Jan mentioned:
"As to the kind of change here - didn't we deviate applying unary minus
to unsigned types?"
Here is that deviation:
https://patchew.org/Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/
As you can see from report
https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/deviate_10.1_rule/ARM64/10648749555/PROJECT.ecd;/by_service.html#service&kind
there are still 2 violations.
And they can be easily fixed.
So, Jan and Stefano,
which approach should we select?
BR, Dmytro.
On 7/11/25 14:43, 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.
>
> Precede unary '-' operator with casting to signed type.
> Replace numeric constant '-1UL' with '~0UL'.
> Replace numeric constant '-1ULL' with '~0ULL'.
> Replace boolean with numeric value.
>
> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
> ---
> Changes since v1:
> - changed patch subject prefix
> - multiplication replaced with cast
> Link to v1: https://patchew.org/Xen/d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/
> ---
> 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..0a5b3fab04 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, -(long)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..980dddee28 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[__isleap(y) ? 1 : 0];
> 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..c68d133657 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 -(long)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..6861d55929 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 -(long long)simple_strtoull(cp + 1, endp, base);
> return simple_strtoull(cp, endp, base);
> }
>
On Fri, 11 Jul 2025, Dmytro Prokopchuk1 wrote: > Hi All. > > In this 2nd version I made changes according to the > https://patchew.org/Xen/d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/ > > There are 0 violations on the ARM64 as you can see in the report: > https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/fix_10.1_rule/ARM64/10650097988/PROJECT.ecd;/by_service.html#service&kind > > Jan mentioned: > "As to the kind of change here - didn't we deviate applying unary minus > to unsigned types?" > > Here is that deviation: > https://patchew.org/Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/ > As you can see from report > https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/deviate_10.1_rule/ARM64/10648749555/PROJECT.ecd;/by_service.html#service&kind > there are still 2 violations. > And they can be easily fixed. > > So, Jan and Stefano, > which approach should we select? I think we should go with the global deviation. Jan, if you look at the code changes on this series, many of them are undesirable. And the series is only addressing the ARM violations: it is only going to get worse for x86. I think we should commit: https://patchew.org/Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/ Jan, are you OK with it?
On 12.07.2025 00:00, Stefano Stabellini wrote: > On Fri, 11 Jul 2025, Dmytro Prokopchuk1 wrote: >> Hi All. >> >> In this 2nd version I made changes according to the >> https://patchew.org/Xen/d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/ >> >> There are 0 violations on the ARM64 as you can see in the report: >> https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/fix_10.1_rule/ARM64/10650097988/PROJECT.ecd;/by_service.html#service&kind >> >> Jan mentioned: >> "As to the kind of change here - didn't we deviate applying unary minus >> to unsigned types?" >> >> Here is that deviation: >> https://patchew.org/Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/ >> As you can see from report >> https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/deviate_10.1_rule/ARM64/10648749555/PROJECT.ecd;/by_service.html#service&kind >> there are still 2 violations. >> And they can be easily fixed. >> >> So, Jan and Stefano, >> which approach should we select? > > I think we should go with the global deviation. > > Jan, if you look at the code changes on this series, many of them are > undesirable. And the series is only addressing the ARM violations: it is > only going to get worse for x86. > > I think we should commit: > https://patchew.org/Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/ > > Jan, are you OK with it? Well, I did comment on it, and I don't think I saw a re-submission addressing those comments. But the way I commented I think it has become clear that I don't object to the deviation, just that some adjustments are needed to the wording. Jan
On 7/11/25 14:52, Dmytro Prokopchuk wrote:
> Hi All.
>
> In this 2nd version I made changes according to the
> https://patchew.org/Xen/
> d92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1@epam.com/
>
> There are 0 violations on the ARM64 as you can see in the report:
> https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-
> project/people/dimaprkp4k/xen/ECLAIR_normal/fix_10.1_rule/
> ARM64/10650097988/PROJECT.ecd;/by_service.html#service&kind
>
> Jan mentioned:
> "As to the kind of change here - didn't we deviate applying unary minus
> to unsigned types?"
>
> Here is that deviation:
> https://patchew.org/
> Xen/7c7b7a09e9d5ac1cc6f93fecacd8065fb6f25324.1745427770.git.victorm.lira@amd.com/
> As you can see from report
> https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-
> project/people/dimaprkp4k/xen/ECLAIR_normal/deviate_10.1_rule/
> ARM64/10648749555/PROJECT.ecd;/by_service.html#service&kind
> there are still 2 violations.
> And they can be easily fixed.
>
> So, Jan and Stefano,
> which approach should we select?
From the other hands deviation reduces number of violations on x86 from
170 to 83.
https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/fix_10.1_rule/X86_64/10650119508/PROJECT.ecd;/by_service.html#service&kind
https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-project/people/dimaprkp4k/xen/ECLAIR_normal/deviate_10.1_rule/X86_64/10650467651/PROJECT.ecd;/by_service.html#service&kind
>
> BR, Dmytro.
>
> On 7/11/25 14:43, 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.
>>
>> Precede unary '-' operator with casting to signed type.
>> Replace numeric constant '-1UL' with '~0UL'.
>> Replace numeric constant '-1ULL' with '~0ULL'.
>> Replace boolean with numeric value.
>>
>> Signed-off-by: Dmytro Prokopchuk <dmytro_prokopchuk1@epam.com>
>> ---
>> Changes since v1:
>> - changed patch subject prefix
>> - multiplication replaced with cast
>> Link to v1: https://eur01.safelinks.protection.outlook.com/?
>> url=https%3A%2F%2Fpatchew.org%2FXen%2Fd92cf08a64d8197a1d1a45f901e59183105d3da5.1752183472.git.dmytro._5Fprokopchuk1%40epam.com%2F&data=05%7C02%7Cdmytro_prokopchuk1%40epam.com%7C42e7c8ad636c47fb5b6b08ddc0701e86%7Cb41b72d04e9f4c268a69f949f367c91d%7C1%7C0%7C638878309987993462%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=bOqJU%2BVjT4wsu4z20vlHIucpaLhYa4AIvQKNmGjRcXc%3D&reserved=0
>> ---
>> 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..0a5b3fab04 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, -
>> (long)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..980dddee28 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[__isleap(y) ? 1 : 0];
>> 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..c68d133657 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 -(long)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..6861d55929 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 -(long long)simple_strtoull(cp + 1, endp, base);
>> return simple_strtoull(cp, endp, base);
>> }
© 2016 - 2025 Red Hat, Inc.