Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pagemap.h: fix warning about possibly used before init var

Commit f56f821feb7b ("mm: extend prefault helpers to fault in more than
PAGE_SIZE") added in the new functions: fault_in_multipages_writeable()
and fault_in_multipages_readable().

However, we currently see:

include/linux/pagemap.h:492: warning: 'ret' may be used uninitialized in this function
include/linux/pagemap.h:492: note: 'ret' was declared here

Unlike a lot of gcc nags, this one appears somewhat legit. i.e. passing
in an invalid negative value of "size" does make it look like all the
conditionals in there would be bypassed and the uninitialized value would
be returned.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Paul Gortmaker and committed by
Linus Torvalds
af2e8409 4b781474

+4 -4
+4 -4
include/linux/pagemap.h
··· 460 460 */ 461 461 static inline int fault_in_multipages_writeable(char __user *uaddr, int size) 462 462 { 463 - int ret; 463 + int ret = 0; 464 464 char __user *end = uaddr + size - 1; 465 465 466 466 if (unlikely(size == 0)) 467 - return 0; 467 + return ret; 468 468 469 469 /* 470 470 * Writing zeroes into userspace here is OK, because we know that if ··· 489 489 int size) 490 490 { 491 491 volatile char c; 492 - int ret; 492 + int ret = 0; 493 493 const char __user *end = uaddr + size - 1; 494 494 495 495 if (unlikely(size == 0)) 496 - return 0; 496 + return ret; 497 497 498 498 while (uaddr <= end) { 499 499 ret = __get_user(c, uaddr);