mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
hugetlb: unsigned ret cannot be negative
unsigned long ret cannot be negative, but ret can get -EFAULT. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Cc: Hugh Dickins <hugh@veritas.com> Cc: Christoph Lameter <clameter@sgi.com> Cc: Adam Litke <agl@us.ibm.com> Cc: David Gibson <david@gibson.dropbear.id.au> Cc: Ken Chen <kenchen@google.com> Cc: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b555749aac
commit
91bf189c3a
1 changed files with 8 additions and 4 deletions
|
@ -252,6 +252,7 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
|
||||||
for (;;) {
|
for (;;) {
|
||||||
struct page *page;
|
struct page *page;
|
||||||
unsigned long nr, ret;
|
unsigned long nr, ret;
|
||||||
|
int ra;
|
||||||
|
|
||||||
/* nr is the maximum number of bytes to copy from this page */
|
/* nr is the maximum number of bytes to copy from this page */
|
||||||
nr = huge_page_size(h);
|
nr = huge_page_size(h);
|
||||||
|
@ -274,16 +275,19 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf,
|
||||||
*/
|
*/
|
||||||
ret = len < nr ? len : nr;
|
ret = len < nr ? len : nr;
|
||||||
if (clear_user(buf, ret))
|
if (clear_user(buf, ret))
|
||||||
ret = -EFAULT;
|
ra = -EFAULT;
|
||||||
|
else
|
||||||
|
ra = 0;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* We have the page, copy it to user space buffer.
|
* We have the page, copy it to user space buffer.
|
||||||
*/
|
*/
|
||||||
ret = hugetlbfs_read_actor(page, offset, buf, len, nr);
|
ra = hugetlbfs_read_actor(page, offset, buf, len, nr);
|
||||||
|
ret = ra;
|
||||||
}
|
}
|
||||||
if (ret < 0) {
|
if (ra < 0) {
|
||||||
if (retval == 0)
|
if (retval == 0)
|
||||||
retval = ret;
|
retval = ra;
|
||||||
if (page)
|
if (page)
|
||||||
page_cache_release(page);
|
page_cache_release(page);
|
||||||
goto out;
|
goto out;
|
||||||
|
|
Loading…
Reference in a new issue