From: Arnd Bergmann <arnd@xxxxxxxx> The error handling in vmap_ram_vread_iter() can return an uninitialized value in some cases: mm/vmalloc.c:3539:6: error: variable 'remains' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized] if (!vb) ^~~ mm/vmalloc.c:3587:17: note: uninitialized use occurs here return count - remains + zero_iter(iter, remains); ^~~~~~~ Move the initialization up a few lines. Fixes: d9cab54f7737 ("mm: vmalloc: convert vread() to vread_iter()") Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> --- mm/vmalloc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index ebfa1e9fe6f9..fb216495fe5a 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3521,7 +3521,7 @@ static size_t vmap_ram_vread_iter(struct iov_iter *iter, const char *addr, struct vmap_block *vb; unsigned long offset; unsigned int rs, re; - size_t remains, n; + size_t remains = count, n; /* * If it's area created by vm_map_ram() interface directly, but @@ -3545,7 +3545,6 @@ static size_t vmap_ram_vread_iter(struct iov_iter *iter, const char *addr, goto finished_zero; } - remains = count; for_each_set_bitrange(rs, re, vb->used_map, VMAP_BBMAP_BITS) { size_t copied; -- 2.39.2