summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv/hal/os/linux
diff options
context:
space:
mode:
authorRichard Liu <xuegang.liu@nxp.com>2018-08-24 20:00:02 +0800
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:33:31 +0800
commit2db1a0dda9546232f477b407a43350f89d28f659 (patch)
tree175c1a274bd492d61c14340aa0150bc279bb05ee /drivers/mxc/gpu-viv/hal/os/linux
parent515c57466880aaa84e72423d3385b9744a45156c (diff)
MA-12482-1 [#imx-1138] Fix kernel panic on gpu6.2.4.p2
VSI missing this patch in gpu6.2.4.p2, it will cause drm_gem_object_unreference_unlocked(gem_obj) call two times in function viv_ioctl_gem_unlock. Kernel panic log: [ 38.419720] [<ffff00000860cac0>] drm_gem_object_release+0x40/0x48 [ 38.419853] [<ffff0000013d4804>] viv_gem_free_object+0x64/0x98 [galcore] [ 38.419861] [<ffff00000860c524>] drm_gem_object_free+0x20/0x50 [ 38.419868] [<ffff00000860c5f0>] drm_gem_object_unreference_unlocked+0x50/0x11c [ 38.419975] [<ffff0000013d505c>] viv_ioctl_gem_unlock+0xbc/0x108 [galcore] [ 38.419981] [<ffff00000860dc44>] drm_ioctl+0x1e0/0x468 [ 38.419992] [<ffff000008264b7c>] do_vfs_ioctl+0xb8/0x8d4 [ 38.419997] [<ffff00000826541c>] SyS_ioctl+0x84/0x98 [ 38.420005] [<ffff000008083780>] el0_svc_naked+0x34/0x38 Change-Id: I799c84e9f71e46012dd6befc02f7d3d694ed57e3 Signed-off-by: Richard Liu <xuegang.liu@nxp.com>
Diffstat (limited to 'drivers/mxc/gpu-viv/hal/os/linux')
-rw-r--r--drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c
index 7e8e8a8764db..b4846cb65bb8 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_drm.c
@@ -284,7 +284,6 @@ static int viv_ioctl_gem_unlock(struct drm_device *drm, void *data,
{
gcmkONERROR(gcvSTATUS_NOT_FOUND);
}
- drm_gem_object_unreference_unlocked(gem_obj);
viv_obj = container_of(gem_obj, struct viv_gem_object, base);
memset(&iface, 0, sizeof(iface));