[Intel-gfx] [PATCH 02/16] drm/i915: Refactor pwrite/pread to use single copy of get_user_pages
Chris Wilson
chris at chris-wilson.co.uk
Sun May 15 10:00:51 CEST 2011
On Thu, 12 May 2011 17:21:50 -0700, Keith Packard <keithp at keithp.com> wrote:
> On Thu, 12 May 2011 22:17:10 +0100, Chris Wilson <chris at chris-wilson.co.uk> wrote:
>
> > + pages = kmalloc(n*sizeof(struct page *),
> > + GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN);
> > + if (pages == NULL) {
> > + pages = drm_malloc_ab(n, sizeof(struct page *));
> > + if (pages == NULL) {
> > + *pages_out = NULL;
> > + *num_pages = 0;
> > + return -ENOMEM;
> > + }
> > + }
>
> Please use drm_malloc_ab here unconditionally;
We're not performing the same trick as drm_malloc_ab() here though, since
this is only used for a temporary allocation we try to consume any
high-order pages, rather than building an array of order-0 pages, knowing
that they will be released shortly afterwards.
> you've got a potential multiplication overflow,
Now this is more serious. Should we not just E2BIG any bo_create that will
require num_pages > MAXINT/sizeof(struct page*)? [1TiB on 32bit]
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list