linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/vmalloc: avoid bogus -Wmaybe-uninitialized warning
@ 2019-06-18  9:26 Arnd Bergmann
  2019-06-18 13:40 ` Joel Fernandes
  0 siblings, 1 reply; 5+ messages in thread
From: Arnd Bergmann @ 2019-06-18  9:26 UTC (permalink / raw)
  To: Roman Penyaev, Uladzislau Rezki, Andrew Morton
  Cc: linux-mm, Arnd Bergmann, Roman Gushchin, Michal Hocko,
	Matthew Wilcox, Thomas Garnier, Oleksiy Avramchenko,
	Steven Rostedt, Joel Fernandes, Thomas Gleixner, Ingo Molnar,
	Tejun Heo, Linus Torvalds, Rick Edgecombe, Andrey Ryabinin,
	Mike Rapoport, linux-kernel

gcc gets confused in pcpu_get_vm_areas() because there are too many
branches that affect whether 'lva' was initialized before it gets
used:

mm/vmalloc.c: In function 'pcpu_get_vm_areas':
mm/vmalloc.c:991:4: error: 'lva' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    insert_vmap_area_augment(lva, &va->rb_node,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     &free_vmap_area_root, &free_vmap_area_list);
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/vmalloc.c:916:20: note: 'lva' was declared here
  struct vmap_area *lva;
                    ^~~

Add an intialization to NULL, and check whether this has changed
before the first use.

Fixes: 68ad4a330433 ("mm/vmalloc.c: keep track of free blocks for vmap allocation")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 mm/vmalloc.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index a9213fc3802d..42a6f795c3ee 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -913,7 +913,12 @@ adjust_va_to_fit_type(struct vmap_area *va,
 	unsigned long nva_start_addr, unsigned long size,
 	enum fit_type type)
 {
-	struct vmap_area *lva;
+	/*
+	 * GCC cannot always keep track of whether this variable
+	 * was initialized across many branches, therefore set
+	 * it NULL here to avoid a warning.
+	 */
+	struct vmap_area *lva = NULL;
 
 	if (type == FL_FIT_TYPE) {
 		/*
@@ -987,7 +992,7 @@ adjust_va_to_fit_type(struct vmap_area *va,
 	if (type != FL_FIT_TYPE) {
 		augment_tree_propagate_from(va);
 
-		if (type == NE_FIT_TYPE)
+		if (lva)
 			insert_vmap_area_augment(lva, &va->rb_node,
 				&free_vmap_area_root, &free_vmap_area_list);
 	}
-- 
2.20.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-06-19 10:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-18  9:26 [PATCH] mm/vmalloc: avoid bogus -Wmaybe-uninitialized warning Arnd Bergmann
2019-06-18 13:40 ` Joel Fernandes
2019-06-18 14:06   ` Uladzislau Rezki
2019-06-18 20:59     ` Andrew Morton
2019-06-19 10:36       ` Uladzislau Rezki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox