提交 af2e8409 编写于 作者: P Paul Gortmaker 提交者: Linus Torvalds

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

Commit f56f821f ("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: NPaul Gortmaker <paul.gortmaker@windriver.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 4b781474
...@@ -460,11 +460,11 @@ static inline int fault_in_pages_readable(const char __user *uaddr, int size) ...@@ -460,11 +460,11 @@ static inline int fault_in_pages_readable(const char __user *uaddr, int size)
*/ */
static inline int fault_in_multipages_writeable(char __user *uaddr, int size) static inline int fault_in_multipages_writeable(char __user *uaddr, int size)
{ {
int ret; int ret = 0;
char __user *end = uaddr + size - 1; char __user *end = uaddr + size - 1;
if (unlikely(size == 0)) if (unlikely(size == 0))
return 0; return ret;
/* /*
* Writing zeroes into userspace here is OK, because we know that if * Writing zeroes into userspace here is OK, because we know that if
...@@ -489,11 +489,11 @@ static inline int fault_in_multipages_readable(const char __user *uaddr, ...@@ -489,11 +489,11 @@ static inline int fault_in_multipages_readable(const char __user *uaddr,
int size) int size)
{ {
volatile char c; volatile char c;
int ret; int ret = 0;
const char __user *end = uaddr + size - 1; const char __user *end = uaddr + size - 1;
if (unlikely(size == 0)) if (unlikely(size == 0))
return 0; return ret;
while (uaddr <= end) { while (uaddr <= end) {
ret = __get_user(c, uaddr); ret = __get_user(c, uaddr);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册