summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2016-12-07 06:48:59 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-19 18:40:25 -0500
commitb018428c166959c99f045a70db87a42a4e061fed (patch)
tree82437c0db54acfe07d01971ee49f199a12d0da0d /drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
parent9da40c79fc36ea73cf682a7f4c76c8717bcf4fce (diff)
gpu: nvgpu: Remove BUG_ON from _IOC_SIZE checks
When the user-supplied ioctl argument size is too large, just return -EINVAL from the ioctl instead of crashing on a BUG_ON (for as, ctrl, ctxsw, dbg and tsg nodes - channel and sched nodes are already okay). Bug 1849661 Change-Id: I5b0d1d0c4ee47ce0136c424dda5975353f110c7e Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1266606 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
index 1f18d9cf..a443512c 100644
--- a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
@@ -360,12 +360,12 @@ long gk20a_ctxsw_dev_ioctl(struct file *filp, unsigned int cmd,
360 360
361 gk20a_dbg(gpu_dbg_fn|gpu_dbg_ctxsw, "nr=%d", _IOC_NR(cmd)); 361 gk20a_dbg(gpu_dbg_fn|gpu_dbg_ctxsw, "nr=%d", _IOC_NR(cmd));
362 362
363 if ((_IOC_TYPE(cmd) != NVGPU_CTXSW_IOCTL_MAGIC) || (_IOC_NR(cmd) == 0) 363 if ((_IOC_TYPE(cmd) != NVGPU_CTXSW_IOCTL_MAGIC) ||
364 || (_IOC_NR(cmd) > NVGPU_CTXSW_IOCTL_LAST)) 364 (_IOC_NR(cmd) == 0) ||
365 (_IOC_NR(cmd) > NVGPU_CTXSW_IOCTL_LAST) ||
366 (_IOC_SIZE(cmd) > NVGPU_CTXSW_IOCTL_MAX_ARG_SIZE))
365 return -EINVAL; 367 return -EINVAL;
366 368
367 BUG_ON(_IOC_SIZE(cmd) > NVGPU_CTXSW_IOCTL_MAX_ARG_SIZE);
368
369 memset(buf, 0, sizeof(buf)); 369 memset(buf, 0, sizeof(buf));
370 if (_IOC_DIR(cmd) & _IOC_WRITE) { 370 if (_IOC_DIR(cmd) & _IOC_WRITE) {
371 if (copy_from_user(buf, (void __user *) arg, _IOC_SIZE(cmd))) 371 if (copy_from_user(buf, (void __user *) arg, _IOC_SIZE(cmd)))