drm/i915: Use unsigned long for obj->user_pin_count
At least on linux sizeof(long) == sizeof(void*) and the thinking is that you can grab about as many references as there's memory. Doesn't really matter, just a bit of OCD since the fixed size data type in a pure in-kernel datastructure look off. v2: Ville asked for an overflow check since no one prevents userspace from incrementing the pin count forever. v3: s/INT/LONG/, noticed by Chris. Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
80075d492f
commit
aa5f802181
|
@ -1604,7 +1604,7 @@ struct drm_i915_gem_object {
|
|||
unsigned long *bit_17;
|
||||
|
||||
/** User space pin count and filp owning the pin */
|
||||
uint32_t user_pin_count;
|
||||
unsigned long user_pin_count;
|
||||
struct drm_file *pin_filp;
|
||||
|
||||
/** for phy allocated objects */
|
||||
|
|
|
@ -3931,6 +3931,11 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data,
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (obj->user_pin_count == ULONG_MAX) {
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (obj->user_pin_count == 0) {
|
||||
ret = i915_gem_obj_ggtt_pin(obj, args->alignment, true, false);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in New Issue