Skip to content

Commit

Permalink
drm/i915/userptr: Keep spin_lock/unlock in the same block
Browse files Browse the repository at this point in the history
Move the code around in order to acquire and release the spinlock in the
same function and in the same block. This keeps static analysers happy
and the reader sane.

Suggested-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Chris Wilson authored and Daniel Vetter committed Jul 25, 2014
1 parent ec8b0dd commit 4877776
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/gpu/drm/i915/i915_gem_userptr.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ static unsigned long cancel_userptr(struct drm_i915_gem_object *obj)
return end;
}

static void invalidate_range__linear(struct i915_mmu_notifier *mn,
struct mm_struct *mm,
unsigned long start,
unsigned long end)
static void *invalidate_range__linear(struct i915_mmu_notifier *mn,
struct mm_struct *mm,
unsigned long start,
unsigned long end)
{
struct i915_mmu_object *mmu;
unsigned long serial;
Expand All @@ -118,7 +118,7 @@ static void invalidate_range__linear(struct i915_mmu_notifier *mn,
goto restart;
}

spin_unlock(&mn->lock);
return NULL;
}

static void i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,
Expand All @@ -133,13 +133,12 @@ static void i915_gem_userptr_mn_invalidate_range_start(struct mmu_notifier *_mn,

end--; /* interval ranges are inclusive, but invalidate range is exclusive */
while (next < end) {
struct drm_i915_gem_object *obj;
struct drm_i915_gem_object *obj = NULL;

obj = NULL;
spin_lock(&mn->lock);
if (mn->has_linear)
return invalidate_range__linear(mn, mm, start, end);
if (serial == mn->serial)
it = invalidate_range__linear(mn, mm, start, end);
else if (serial == mn->serial)
it = interval_tree_iter_next(it, next, end);
else
it = interval_tree_iter_first(&mn->objects, start, end);
Expand Down

0 comments on commit 4877776

Please sign in to comment.