From 329cbf5ff062ff3f62424f5c5594bc6b0bf3c05b Mon Sep 17 00:00:00 2001 From: N V S Abhishek Date: Thu, 5 Dec 2024 19:55:24 +0000 Subject: [PATCH] tegra: nvmap: Fix overflow defects in nvmap_dev.c Fix subtraction and addition overflow defects in nvmap_dev.c using overflow.h APIs. Add fix for 1 INT 08-C and 1 INT 30-C defect. Bug 4479044 Change-Id: I5dbd4d66b661c61967847c155f4e03fd9140087c Signed-off-by: N V S Abhishek Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3262873 Reviewed-by: svcacv Reviewed-by: Sachin Nikam Reviewed-by: Ketan Patil GVS: buildbot_gerritrpt --- drivers/video/tegra/nvmap/nvmap_dev.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/video/tegra/nvmap/nvmap_dev.c b/drivers/video/tegra/nvmap/nvmap_dev.c index 77e0ecac..eee25a28 100644 --- a/drivers/video/tegra/nvmap/nvmap_dev.c +++ b/drivers/video/tegra/nvmap/nvmap_dev.c @@ -561,6 +561,7 @@ int __init nvmap_probe(struct platform_device *pdev) int e; int generic_carveout_present = 0; ulong start_time = sched_clock(); + ulong result; if (WARN_ON(nvmap_dev != NULL)) { dev_err(&pdev->dev, "only one nvmap device may be present\n"); @@ -676,7 +677,13 @@ fail: misc_deregister(&dev->dev_user); nvmap_dev = NULL; finish: - nvmap_init_time += sched_clock() - start_time; + if (check_sub_overflow((ulong)sched_clock(), + start_time, &result) || + check_add_overflow(nvmap_init_time, + result, &result)) + return -EOVERFLOW; + + nvmap_init_time = result; return e; }