summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAingara Paramakuru <aparamakuru@nvidia.com>2014-09-05 11:38:21 -0700
committerWinnie Hsu <whsu@nvidia.com>2017-05-22 14:31:04 -0700
commit98114fbc47ae84c1cd7f67ef6a0fed818adff2e6 (patch)
tree0456666afaa57d48380dac09abc8eb181d81488f
parente163dc1d86b26357fdc05757457ef58fc567f990 (diff)
gpu: nvgpu: fix crash in gk20a_channel_release
gk20a_channel_release() should bail if filp->private_data is NULL. This can happen as a result of gk20a_channel_release() being called when __gk20a_channel_open() fails in NVHOST_IOCTL_CHANNEL_OPEN. Bug 200014898 Change-Id: I32cc957aca46fcd4265a8052ac5be355b644b9f7 Signed-off-by: Aingara Paramakuru <aparamakuru@nvidia.com> Reviewed-on: http://git-master/r/496138 (cherry picked from commit cb0db6618c42ab4c33574f09f212ab1ee9a0438a) Reviewed-on: http://git-master/r/1258588 Reviewed-by: Winnie Hsu <whsu@nvidia.com> Tested-by: Winnie Hsu <whsu@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 19156d6921d1..947b1dc668bf 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -719,9 +719,12 @@ unbind:
int gk20a_channel_release(struct inode *inode, struct file *filp)
{
struct channel_gk20a *ch = (struct channel_gk20a *)filp->private_data;
- struct gk20a *g = ch->g;
+ struct gk20a *g = ch ? ch->g : NULL;
int err;
+ if (!ch)
+ return 0;
+
trace_gk20a_channel_release(dev_name(&g->dev->dev));
err = gk20a_busy(ch->g->dev);