gpu: nvgpu: fix use-after-free in case of error notifier
authorGagan Grover <ggrover@nvidia.com>
Wed, 12 Oct 2016 11:35:06 +0000 (16:35 +0530)
committermobile promotions <svcmobile_promotions@nvidia.com>
Thu, 20 Oct 2016 04:20:02 +0000 (21:20 -0700)
commitb58e0819e3858750220dda54ab5f2181883d28b5
tree1500af08246f7dcddd4941f923e57befb817237f
parenta1c06e8c2bc5a38c52e784b48579382884308999
gpu: nvgpu: fix use-after-free in case of error notifier

A use-after-free scenario is possible where one thread in
gk20a_free_error_notifiers() is trying to free the error
notifier and another thread in gk20a_set_error_notifier()
is still using the error notifier

Fix this by introducing mutex error_notifier_mutex for
error notifier accesses

Take mutex in gk20a_free_error_notifiers() and in
gk20a_set_error_notifier() before accessing notifier

In gk20a_init_error_notifier(), set the pointer
ch->error_notifier_ref inside the mutex and only
after notifier is completely initialized

Bug 1824788

Change-Id: I47e1ab57d54f391799f5a0999840b663fd34585f
Reviewed-on: http://git-master/r/1233988
Signed-off-by: Gagan Grover <ggrover@nvidia.com>
Reviewed-on: http://git-master/r/1235222
Reviewed-by: Deepak Nibade <dnibade@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
drivers/gpu/nvgpu/gk20a/channel_gk20a.c
drivers/gpu/nvgpu/gk20a/channel_gk20a.h