Re: ENOSPC returned by handle_mm_fault()

From: Al Viro
Date: Sun Jun 05 2011 - 18:14:15 EST


On Sun, Jun 05, 2011 at 01:48:55PM -0700, Hugh Dickins wrote:
> On Sun, 5 Jun 2011, Al Viro wrote:
> > On Sun, Jun 05, 2011 at 12:16:08PM -0700, Hugh Dickins wrote:
> >
> > > Good find, news to me. Interesting uses of -PTR_ERR()!
> >
> > You mean, something like the diff below?
>
> Second hunk yes, but first hunk no: there's at least one other place
> (hugetlb_reserve_pages) which calls region_chg(), and expects a
> conventional -errno return from it; and even if there weren't,
> I'd rather not spread these unconventional return values any deeper.

Umm... FWIW, callers of hugetlb_reserve_pages() only check if it's 0;
exact value is lost. But yes, I agree that your variant makes more
sense - they might start caring at some point.

> Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx
Acked-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

> mm/hugetlb.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> --- 3.0-rc1/mm/hugetlb.c 2011-05-29 18:42:37.425882575 -0700
> +++ linux/mm/hugetlb.c 2011-06-05 13:33:22.795341004 -0700
> @@ -1033,10 +1033,10 @@ static struct page *alloc_huge_page(stru
> */
> chg = vma_needs_reservation(h, vma, addr);
> if (chg < 0)
> - return ERR_PTR(chg);
> + return ERR_PTR(-VM_FAULT_OOM);
> if (chg)
> if (hugetlb_get_quota(inode->i_mapping, chg))
> - return ERR_PTR(-ENOSPC);
> + return ERR_PTR(-VM_FAULT_SIGBUS);
>
> spin_lock(&hugetlb_lock);
> page = dequeue_huge_page_vma(h, vma, addr, avoid_reserve);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/