summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/dbg_gpu_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/dbg_gpu_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/dbg_gpu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
index 1a219d2e..cd3ab0c2 100644
--- a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
@@ -880,11 +880,10 @@ long gk20a_dbg_gpu_dev_ioctl(struct file *filp, unsigned int cmd,
880 880
881 if ((_IOC_TYPE(cmd) != NVGPU_DBG_GPU_IOCTL_MAGIC) || 881 if ((_IOC_TYPE(cmd) != NVGPU_DBG_GPU_IOCTL_MAGIC) ||
882 (_IOC_NR(cmd) == 0) || 882 (_IOC_NR(cmd) == 0) ||
883 (_IOC_NR(cmd) > NVGPU_DBG_GPU_IOCTL_LAST)) 883 (_IOC_NR(cmd) > NVGPU_DBG_GPU_IOCTL_LAST) ||
884 (_IOC_SIZE(cmd) > NVGPU_DBG_GPU_IOCTL_MAX_ARG_SIZE))
884 return -EINVAL; 885 return -EINVAL;
885 886
886 BUG_ON(_IOC_SIZE(cmd) > NVGPU_DBG_GPU_IOCTL_MAX_ARG_SIZE);
887
888 memset(buf, 0, sizeof(buf)); 887 memset(buf, 0, sizeof(buf));
889 if (_IOC_DIR(cmd) & _IOC_WRITE) { 888 if (_IOC_DIR(cmd) & _IOC_WRITE) {
890 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd))) 889 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd)))