lib/radix-tree: Fix uninitialized variable compilation warning

Message ID tencent_B7D657EF5135C40D0303A1C3AC90CB0B9507@qq.com
State New
Headers
Series lib/radix-tree: Fix uninitialized variable compilation warning |

Commit Message

Rong Tao Nov. 10, 2022, 5 a.m. UTC
  From: Rong Tao <rongtao@cestc.cn>

We need to set an initial value for offset to eliminate compilation
warning. And if the tree is empty, return NULL early.

How to reproduce warning:

$ make -C tools/testing/radix-tree
radix-tree.c: In function ‘radix_tree_tag_clear’:
radix-tree.c:1046:17: warning: ‘offset’ may be used uninitialized in this function [-Wmaybe-uninitialized]
1046 |                 node_tag_clear(root, parent, tag, offset);
     |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Rong Tao <rongtao@cestc.cn>
---
 lib/radix-tree.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Matthew Wilcox Nov. 10, 2022, 4:06 p.m. UTC | #1
On Thu, Nov 10, 2022 at 01:00:42PM +0800, Rong Tao wrote:
>  	radix_tree_load_root(root, &node, &maxindex);
> -	if (index > maxindex)
> +	if (index > maxindex || !node)
>  		return NULL;

No, stop it, you don't know what you're doing.
  
Rong Tao Nov. 11, 2022, 2:11 a.m. UTC | #2
Thanks for your reply, actually, at first time, i just want to fix the
compile warning, and i don't really know about the radix tree code,
i'm sorry, i hope i can do it better next time.

Rong Tao.
  

Patch

diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index 3c78e1e8b2ad..eee453b856b6 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -1029,10 +1029,10 @@  void *radix_tree_tag_clear(struct radix_tree_root *root,
 {
 	struct radix_tree_node *node, *parent;
 	unsigned long maxindex;
-	int offset;
+	int offset = 0;
 
 	radix_tree_load_root(root, &node, &maxindex);
-	if (index > maxindex)
+	if (index > maxindex || !node)
 		return NULL;
 
 	parent = NULL;