summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/tsg_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/tsg_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/tsg_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
index d98b78ea..181140d2 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
@@ -608,11 +608,10 @@ long gk20a_tsg_dev_ioctl(struct file *filp, unsigned int cmd,
608 608
609 if ((_IOC_TYPE(cmd) != NVGPU_TSG_IOCTL_MAGIC) || 609 if ((_IOC_TYPE(cmd) != NVGPU_TSG_IOCTL_MAGIC) ||
610 (_IOC_NR(cmd) == 0) || 610 (_IOC_NR(cmd) == 0) ||
611 (_IOC_NR(cmd) > NVGPU_TSG_IOCTL_LAST)) 611 (_IOC_NR(cmd) > NVGPU_TSG_IOCTL_LAST) ||
612 (_IOC_SIZE(cmd) > NVGPU_TSG_IOCTL_MAX_ARG_SIZE))
612 return -EINVAL; 613 return -EINVAL;
613 614
614 BUG_ON(_IOC_SIZE(cmd) > NVGPU_TSG_IOCTL_MAX_ARG_SIZE);
615
616 memset(buf, 0, sizeof(buf)); 615 memset(buf, 0, sizeof(buf));
617 if (_IOC_DIR(cmd) & _IOC_WRITE) { 616 if (_IOC_DIR(cmd) & _IOC_WRITE) {
618 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd))) 617 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd)))