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

Re: [PATCH] xen/arm: fdt fix duplicated ternary operator, shift operations



On Sat, 23 Apr 2022, Paran Lee wrote:
> It doesn't seem necessary to do duplicate ternary operation and calculation
> of order shift using fdt32_to_cpu macro.
> 
> Signed-off-by: Paran Lee <p4ranlee@xxxxxxxxx>

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
>  xen/arch/arm/bootfdt.c  | 12 ++++++++++--
>  xen/common/libfdt/fdt.c | 10 +++++-----
>  2 files changed, 15 insertions(+), 7 deletions(-)
> 
> diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
> index e318ef9603..e5b885a7f2 100644
> --- a/xen/arch/arm/bootfdt.c
> +++ b/xen/arch/arm/bootfdt.c
> @@ -159,8 +159,16 @@ int __init device_tree_for_each_node(const void *fdt, 
> int node,
>              continue;
>          }
>  
> -        as = depth > 0 ? address_cells[depth-1] : 
> DT_ROOT_NODE_ADDR_CELLS_DEFAULT;
> -        ss = depth > 0 ? size_cells[depth-1] : 
> DT_ROOT_NODE_SIZE_CELLS_DEFAULT;
> +        if ( depth > 0 )
> +        {
> +            as = address_cells[depth-1];
> +            ss = size_cells[depth-1];
> +        }
> +        else
> +        {
> +            as = DT_ROOT_NODE_ADDR_CELLS_DEFAULT;
> +            ss = DT_ROOT_NODE_SIZE_CELLS_DEFAULT;
> +        }
>  
>          address_cells[depth] = device_tree_get_u32(fdt, node,
>                                                     "#address-cells", as);
> diff --git a/xen/common/libfdt/fdt.c b/xen/common/libfdt/fdt.c
> index 9fe7cf4b74..a507169d29 100644
> --- a/xen/common/libfdt/fdt.c
> +++ b/xen/common/libfdt/fdt.c
> @@ -165,7 +165,7 @@ const void *fdt_offset_ptr(const void *fdt, int offset, 
> unsigned int len)
>  uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)
>  {
>       const fdt32_t *tagp, *lenp;
> -     uint32_t tag;
> +     uint32_t tag, len;
>       int offset = startoffset;
>       const char *p;
>  
> @@ -192,11 +192,11 @@ uint32_t fdt_next_tag(const void *fdt, int startoffset, 
> int *nextoffset)
>               if (!can_assume(VALID_DTB) && !lenp)
>                       return FDT_END; /* premature end */
>               /* skip-name offset, length and value */
> -             offset += sizeof(struct fdt_property) - FDT_TAGSIZE
> -                     + fdt32_to_cpu(*lenp);
> +             len = fdt32_to_cpu(*lenp);
> +             offset += sizeof(struct fdt_property) - FDT_TAGSIZE + len;
>               if (!can_assume(LATEST) &&
> -                 fdt_version(fdt) < 0x10 && fdt32_to_cpu(*lenp) >= 8 &&
> -                 ((offset - fdt32_to_cpu(*lenp)) % 8) != 0)
> +                 fdt_version(fdt) < 0x10 && len >= 8 &&
> +                 ((offset - len) % 8) != 0)
>                       offset += 4;
>               break;
>  
> -- 
> 2.25.1
> 



 


Rackspace

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