Hi Michal,

> On 19 Jun 2024, at 08:46, Michal Orzel <michal.or...@amd.com> wrote:
> 
> Building Xen with CONFIG_STATIC_SHM=y results in a build failure:
> 
> arch/arm/static-shmem.c: In function 'process_shm':
> arch/arm/static-shmem.c:327:41: error: 'gbase' may be used uninitialized 
> [-Werror=maybe-uninitialized]
>  327 |         if ( is_domain_direct_mapped(d) && (pbase != gbase) )
> arch/arm/static-shmem.c:305:17: note: 'gbase' was declared here
>  305 |         paddr_t gbase, pbase, psize;
> 
> This is because the commit cb1ddafdc573 adds a check referencing
> gbase/pbase variables which were not yet assigned a value. Fix it.
> 
> Fixes: cb1ddafdc573 ("xen/arm/static-shmem: Static-shmem should be 
> direct-mapped for direct-mapped domains")
> Signed-off-by: Michal Orzel <michal.or...@amd.com>

Reviewed-by: Bertrand Marquis <bertrand.marq...@arm.com>

Cheers
Bertrand

> ---
> Rationale for 4.19: this patch fixes a build failure reported by CI:
> https://gitlab.com/xen-project/xen/-/jobs/7131807878
> ---
> xen/arch/arm/static-shmem.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/arm/static-shmem.c b/xen/arch/arm/static-shmem.c
> index c434b96e6204..cd48d2896b7e 100644
> --- a/xen/arch/arm/static-shmem.c
> +++ b/xen/arch/arm/static-shmem.c
> @@ -324,12 +324,6 @@ int __init process_shm(struct domain *d, struct 
> kernel_info *kinfo,
>             printk("%pd: static shared memory bank not found: '%s'", d, 
> shm_id);
>             return -ENOENT;
>         }
> -        if ( is_domain_direct_mapped(d) && (pbase != gbase) )
> -        {
> -            printk("%pd: physical address 0x%"PRIpaddr" and guest address 
> 0x%"PRIpaddr" are not direct-mapped.\n",
> -                   d, pbase, gbase);
> -            return -EINVAL;
> -        }
> 
>         pbase = boot_shm_bank->start;
>         psize = boot_shm_bank->size;
> @@ -353,6 +347,13 @@ int __init process_shm(struct domain *d, struct 
> kernel_info *kinfo,
>             /* guest phys address is after host phys address */
>             gbase = dt_read_paddr(cells + addr_cells, addr_cells);
> 
> +            if ( is_domain_direct_mapped(d) && (pbase != gbase) )
> +            {
> +                printk("%pd: physical address 0x%"PRIpaddr" and guest 
> address 0x%"PRIpaddr" are not direct-mapped.\n",
> +                       d, pbase, gbase);
> +                return -EINVAL;
> +            }
> +
>             for ( i = 0; i < PFN_DOWN(psize); i++ )
>                 if ( !mfn_valid(mfn_add(maddr_to_mfn(pbase), i)) )
>                 {
> -- 
> 2.25.1
> 


Reply via email to