Skip to content

Commit

Permalink
drm/i915: Update size upon return from GEM_CREATE
Browse files Browse the repository at this point in the history
Since GEM_CREATE is trying to outsmart the user by rounding up unaligned
objects, we used to update the size returned to userspace.
This update seems to have been lost throughout the history.

v2: Use round_up(), reorder locals (Chris)

References: ff72145 ("drm: dumb scanout create/mmap for intel/radeon (v3)")
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Janusz Krzysztofik <janusz.krzysztofik@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190326170218.13255-1-michal.winiarski@intel.com
  • Loading branch information
Michał Winiarski authored and Chris Wilson committed Mar 26, 2019
1 parent baba6e5 commit e163484
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,14 +622,15 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj,
static int
i915_gem_create(struct drm_file *file,
struct drm_i915_private *dev_priv,
u64 size,
u64 *size_p,
u32 *handle_p)
{
struct drm_i915_gem_object *obj;
int ret;
u32 handle;
u64 size;
int ret;

size = roundup(size, PAGE_SIZE);
size = round_up(*size_p, PAGE_SIZE);
if (size == 0)
return -EINVAL;

Expand All @@ -645,6 +646,7 @@ i915_gem_create(struct drm_file *file,
return ret;

*handle_p = handle;
*size_p = obj->base.size;
return 0;
}

Expand All @@ -657,7 +659,7 @@ i915_gem_dumb_create(struct drm_file *file,
args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64);
args->size = args->pitch * args->height;
return i915_gem_create(file, to_i915(dev),
args->size, &args->handle);
&args->size, &args->handle);
}

static bool gpu_write_needs_clflush(struct drm_i915_gem_object *obj)
Expand All @@ -682,7 +684,7 @@ i915_gem_create_ioctl(struct drm_device *dev, void *data,
i915_gem_flush_free_objects(dev_priv);

return i915_gem_create(file, dev_priv,
args->size, &args->handle);
&args->size, &args->handle);
}

static inline enum fb_op_origin
Expand Down

0 comments on commit e163484

Please sign in to comment.