Merge "msm: kgsl: Add apb_pclk to the clock list and increase max clock count"
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
index 50fe2a1..d69988a 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2020, 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
@@ -1065,7 +1065,10 @@
} else {
list_add(&entry->link, &tbl->head_flt_rule_list);
}
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->rt_tbl)
entry->rt_tbl->ref_cnt++;
id = ipa_id_alloc(entry);
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_i.h b/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
index 9bc80b8..92f566a 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2020, 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
@@ -211,6 +211,7 @@
#define IPA2_ACTIVE_CLIENTS_LOG_LINE_LEN 96
#define IPA2_ACTIVE_CLIENTS_LOG_HASHTABLE_SIZE 50
#define IPA2_ACTIVE_CLIENTS_LOG_NAME_LEN 40
+#define IPA_RULE_CNT_MAX 512
struct ipa2_active_client_htable_entry {
struct hlist_node list;
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
index 50bb9bc..830a097 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, 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
@@ -1087,7 +1087,10 @@
list_add_tail(&entry->link, &tbl->head_rt_rule_list);
else
list_add(&entry->link, &tbl->head_rt_rule_list);
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->hdr)
entry->hdr->ref_cnt++;
else if (entry->proc_ctx)
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c
index 4b6922b..ec298bb 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c
@@ -2072,14 +2072,20 @@
break;
}
- if (ep_info.max_ep_pairs != QUERY_MAX_EP_PAIRS)
+ if (ep_info.max_ep_pairs != QUERY_MAX_EP_PAIRS) {
IPAERR_RL("unexpected max_ep_pairs %d\n",
ep_info.max_ep_pairs);
+ retval = -EFAULT;
+ break;
+ }
- if (ep_info.ep_pair_size !=
- (QUERY_MAX_EP_PAIRS * sizeof(struct ipa_ep_pair_info)))
+ if (ep_info.ep_pair_size != (QUERY_MAX_EP_PAIRS *
+ sizeof(struct ipa_ep_pair_info))) {
IPAERR_RL("unexpected ep_pair_size %d\n",
ep_info.max_ep_pairs);
+ retval = -EFAULT;
+ break;
+ }
uptr = ep_info.info;
if (unlikely(!uptr)) {
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
index 2272f5a..1ab4934 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, 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
@@ -851,7 +851,10 @@
{
int id;
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->rt_tbl)
entry->rt_tbl->ref_cnt++;
id = ipa3_id_alloc(entry);
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
index 4c63959..83750e3 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
@@ -388,6 +388,7 @@
#define IPA_IS_4_0_AUTO_CONFIG() \
((ipa3_ctx->ipa_hw_type == IPA_HW_v4_0) && \
(ipa3_ctx->ipa_config_is_auto))
+#define IPA_RULE_CNT_MAX 512
struct ipa3_active_client_htable_entry {
struct hlist_node list;
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
index 8981b79..22459d4 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
@@ -1000,7 +1000,10 @@
{
int id;
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->hdr)
entry->hdr->ref_cnt++;
else if (entry->proc_ctx)