summaryrefslogtreecommitdiff
path: root/drivers/platform
diff options
context:
space:
mode:
authorMohammed Javid <mjavid@codeaurora.org>2018-01-12 13:32:37 +0530
committerMohammed Javid <mjavid@codeaurora.org>2018-01-16 12:36:42 +0530
commitb564ffbc31637195507f3b48c2a5d83ad74ae48a (patch)
tree851f774cbb4cc9e876119d525be55fb6e4e83427 /drivers/platform
parent06b749683b138ebafaa120ff16d931abb528fbed (diff)
msm: ipa: Fix to unsigned integer underflow
Added code changes to fix the unsigned integer underflow leads to accessing unmapped memory. Change-Id: I8148aebd3597ec6ae8c184199afe816f3d80636e Acked-by: Ashok Vuyyuru <avuyyuru@qti.qualcomm.com> Signed-off-by: Mohammed Javid <mjavid@codeaurora.org>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c12
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c12
2 files changed, 20 insertions, 4 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c b/drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c
index ecbbe516266e..b5922a7e3df6 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_debugfs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -1446,7 +1446,11 @@ static ssize_t ipa_read_nat4(struct file *file,
pr_err("Table Size:%d\n",
ipa_ctx->nat_mem.size_base_tables);
- pr_err("Expansion Table Size:%d\n",
+ if (!ipa_ctx->nat_mem.size_expansion_tables)
+ pr_err("Expansion Table Size:%d\n",
+ ipa_ctx->nat_mem.size_expansion_tables);
+ else
+ pr_err("Expansion Table Size:%d\n",
ipa_ctx->nat_mem.size_expansion_tables-1);
if (!ipa_ctx->nat_mem.is_sys_mem)
@@ -1461,6 +1465,8 @@ static ssize_t ipa_read_nat4(struct file *file,
pr_err("\nBase Table:\n");
} else {
+ if (!ipa_ctx->nat_mem.size_expansion_tables)
+ continue;
tbl_size = ipa_ctx->nat_mem.size_expansion_tables-1;
base_tbl =
(u32 *)ipa_ctx->nat_mem.ipv4_expansion_rules_addr;
@@ -1560,6 +1566,8 @@ static ssize_t ipa_read_nat4(struct file *file,
pr_err("\nIndex Table:\n");
} else {
+ if (!ipa_ctx->nat_mem.size_expansion_tables)
+ continue;
tbl_size = ipa_ctx->nat_mem.size_expansion_tables-1;
indx_tbl =
(u32 *)ipa_ctx->nat_mem.index_table_expansion_addr;
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c b/drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c
index 71da7d28a451..cb273f888d71 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_debugfs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -1503,7 +1503,11 @@ static ssize_t ipa3_read_nat4(struct file *file,
pr_err("Table Size:%d\n",
ipa3_ctx->nat_mem.size_base_tables);
- pr_err("Expansion Table Size:%d\n",
+ if (!ipa3_ctx->nat_mem.size_expansion_tables)
+ pr_err("Expansion Table Size:%d\n",
+ ipa3_ctx->nat_mem.size_expansion_tables);
+ else
+ pr_err("Expansion Table Size:%d\n",
ipa3_ctx->nat_mem.size_expansion_tables-1);
if (!ipa3_ctx->nat_mem.is_sys_mem)
@@ -1518,6 +1522,8 @@ static ssize_t ipa3_read_nat4(struct file *file,
pr_err("\nBase Table:\n");
} else {
+ if (!ipa3_ctx->nat_mem.size_expansion_tables)
+ continue;
tbl_size = ipa3_ctx->nat_mem.size_expansion_tables-1;
base_tbl =
(u32 *)ipa3_ctx->nat_mem.ipv4_expansion_rules_addr;
@@ -1617,6 +1623,8 @@ static ssize_t ipa3_read_nat4(struct file *file,
pr_err("\nIndex Table:\n");
} else {
+ if (!ipa3_ctx->nat_mem.size_expansion_tables)
+ continue;
tbl_size = ipa3_ctx->nat_mem.size_expansion_tables-1;
indx_tbl =
(u32 *)ipa3_ctx->nat_mem.index_table_expansion_addr;