Messages in this thread | | | Date | Tue, 2 Dec 2008 14:02:23 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH] hugetlb: unsigned ret cannot be negative. |
| |
On Sat, 29 Nov 2008 06:36:59 -0500 roel kluin <roel.kluin@gmail.com> wrote:
> unsigned long ret cannot be negative, but ret can get -EFAULT. > > Signed-off-by: Roel Kluin <roel.kluin@gmail.com> > --- > hugetlbfs_read_actor() returns int, > see > vi fs/hugetlbfs/inode.c +187 > > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index 61edc70..0af64e4 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -252,6 +252,7 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf, > for (;;) { > struct page *page; > unsigned long nr, ret; > + int ra; > > /* nr is the maximum number of bytes to copy from this page */ > nr = huge_page_size(h); > @@ -279,15 +280,16 @@ static ssize_t hugetlbfs_read(struct file *filp, char __user *buf, > /* > * 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); > } > - if (ret < 0) { > + if (ra < 0) { > if (retval == 0) > - retval = ret; > + retval = ra; > if (page) > page_cache_release(page); > goto out; > } > + ret = ra; > > offset += ret; > retval += ret;
`ra' can obviously be used uninitialised here. The compiler reports this, too.
| |