Le 09/08/2022 à 07:45, Russell Currey a écrit :
> clang 14 won't build because ret is uninitialised and can be returned if
> both prop and fdtprop are NULL.
> 
> Fixes: b1fc44eaa9ba ("pseries/iommu/ddw: Fix kdump to work in absence of 
> ibm,dma-window")
> Signed-off-by: Russell Currey <rus...@russell.cc>
> ---
> Not sure what should be returned here, EINVAL seemed reasonable for a
> passed property not existing.

Not sure. My understanding is that fdt_delprop() and fdt_setprop() 
return one of the FDT_ERR_ defined in scripts/dtc/libfdt/libfdt.h

> 
> Also, damn it Alexey, I mentioned this in my review:
> http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20220616075901.835871-1-...@ozlabs.ru/
> 
> Consider yourself lucky I'm no longer your dictator (if you don't already)
> 
>   arch/powerpc/kexec/file_load_64.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kexec/file_load_64.c 
> b/arch/powerpc/kexec/file_load_64.c
> index 683462e4556b..8fa2995e6fc7 100644
> --- a/arch/powerpc/kexec/file_load_64.c
> +++ b/arch/powerpc/kexec/file_load_64.c
> @@ -1043,7 +1043,7 @@ static int copy_property(void *fdt, int node_offset, 
> const struct device_node *d
>                        const char *propname)
>   {
>       const void *prop, *fdtprop;
> -     int len = 0, fdtlen = 0, ret;
> +     int len = 0, fdtlen = 0, ret = -EINVAL;

Do we need 'ret' at all ?

It would be more clear to return directly instead of going through a 
local var :

        if (fdtprop && !prop)
                return fdt_delprop(fdt, node_offset, propname);
        else if (prop)
                return fdt_setprop(fdt, node_offset, propname, prop, len);
        else
                return -FDT_ERR_NOTFOUND;


>   
>       prop = of_get_property(dn, propname, &len);
>       fdtprop = fdt_getprop(fdt, node_offset, propname, &fdtlen);

Reply via email to