From e0aca109b1d98ca4ddb42ac42a60b0f267f1ecf5 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Wed, 3 Jan 2018 06:28:47 -0800 Subject: gpu: nvgpu: fix erroneous gk20a_put() call With a recent rework we moved gk20a_get() call to nvgpu_ioctl_tsg_open(), but corresponding gk20a_put() call remained in gk20a_tsg_release() So if a TSG is opened and released from within kernel with APIs gk20a_tsg_open()/gk20a_tsg_release() we mistakenly drop extra refcount through gk20a_put() Fix this by moving gk20a_put() call to nvgpu_ioctl_tsg_release() which balances gk20a_get() call in nvgpu_ioctl_tsg_open() Bug 200374011 Change-Id: Id0cec0426e6231309dc530ab5c934dacaba9f8da Signed-off-by: Deepak Nibade Reviewed-on: https://git-master.nvidia.com/r/1630969 Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/ioctl_tsg.c | 1 + drivers/gpu/nvgpu/gk20a/tsg_gk20a.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c b/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c index 445199c2..931a3264 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_tsg.c @@ -359,6 +359,7 @@ void nvgpu_ioctl_tsg_release(struct nvgpu_ref *ref) gk20a_sched_ctrl_tsg_removed(g, tsg); gk20a_tsg_release(ref); + gk20a_put(g); } int nvgpu_ioctl_tsg_dev_release(struct inode *inode, struct file *filp) diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c index ff700372..d9ddc011 100644 --- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c @@ -347,7 +347,6 @@ void gk20a_tsg_release(struct nvgpu_ref *ref) tsg->runlist_id = ~0; gk20a_dbg(gpu_dbg_fn, "tsg released %d\n", tsg->tsgid); - gk20a_put(g); } struct tsg_gk20a *tsg_gk20a_from_ch(struct channel_gk20a *ch) -- cgit v1.2.2