diff options
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/ioctl_as.c')
-rw-r--r-- | drivers/gpu/nvgpu/common/linux/ioctl_as.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/ioctl_as.c b/drivers/gpu/nvgpu/common/linux/ioctl_as.c index 6fd0a3d2..d4242955 100644 --- a/drivers/gpu/nvgpu/common/linux/ioctl_as.c +++ b/drivers/gpu/nvgpu/common/linux/ioctl_as.c | |||
@@ -42,14 +42,19 @@ static int gk20a_as_ioctl_bind_channel( | |||
42 | gk20a_dbg_fn(""); | 42 | gk20a_dbg_fn(""); |
43 | 43 | ||
44 | ch = gk20a_get_channel_from_file(args->channel_fd); | 44 | ch = gk20a_get_channel_from_file(args->channel_fd); |
45 | if (!ch || gk20a_channel_as_bound(ch)) | 45 | if (!ch) |
46 | return -EINVAL; | 46 | return -EINVAL; |
47 | 47 | ||
48 | if (gk20a_channel_as_bound(ch)) { | ||
49 | err = -EINVAL; | ||
50 | goto out; | ||
51 | } | ||
52 | |||
48 | /* this will set channel_gk20a->vm */ | 53 | /* this will set channel_gk20a->vm */ |
49 | err = ch->g->ops.mm.vm_bind_channel(as_share, ch); | 54 | err = ch->g->ops.mm.vm_bind_channel(as_share, ch); |
50 | if (err) | ||
51 | return err; | ||
52 | 55 | ||
56 | out: | ||
57 | gk20a_channel_put(ch); | ||
53 | return err; | 58 | return err; |
54 | } | 59 | } |
55 | 60 | ||