Skip to content

Commit

Permalink
staging: sync: Reorder sync_fence_release
Browse files Browse the repository at this point in the history
Previously fence's pts were freed before the were the fence was removed from the
global fence list.  This led to a race with the debugfs support where it would
iterate over sync_pts that had been freed.

Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Cc: Erik Gilling <konkers@android.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Rob Clark <robclark@gmail.com>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: dri-devel@lists.freedesktop.org
Cc: Android Kernel Team <kernel-team@android.com>
Signed-off-by: Erik Gilling <konkers@android.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Erik Gilling authored and Greg Kroah-Hartman committed Mar 4, 2013
1 parent 6e91f71 commit cc3c5cd
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/staging/android/sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -520,12 +520,12 @@ static int sync_fence_release(struct inode *inode, struct file *file)
struct sync_fence *fence = file->private_data;
unsigned long flags;

sync_fence_free_pts(fence);

spin_lock_irqsave(&sync_fence_list_lock, flags);
list_del(&fence->sync_fence_list);
spin_unlock_irqrestore(&sync_fence_list_lock, flags);

sync_fence_free_pts(fence);

kfree(fence);

return 0;
Expand Down

0 comments on commit cc3c5cd

Please sign in to comment.