[PATCH] powerpc/kexec: Fix build failure from uninitialised variable

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE1481d

2 messages, 2 authors, 2022-08-09 · open the first message on its own page

[PATCH] powerpc/kexec: Fix build failure from uninitialised variable

From: Russell Currey <hidden>
Date: 2022-08-09 05:47:35

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 <redacted>
---
Not sure what should be returned here, EINVAL seemed reasonable for a
passed property not existing.

Also, damn it Alexey, I mentioned this in my review:
http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20220616075901.835871-1-aik@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;
 
 	prop = of_get_property(dn, propname, &len);
 	fdtprop = fdt_getprop(fdt, node_offset, propname, &fdtlen);
-- 
2.37.1

Re: [PATCH] powerpc/kexec: Fix build failure from uninitialised variable

From: Christophe Leroy <hidden>
Date: 2022-08-09 10:53:46


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 <redacted>
---
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
quoted hunk
Also, damn it Alexey, I mentioned this in my review:
http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20220616075901.835871-1-aik@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);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help