diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 886255ad36..6b5ecb3776 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -1448,7 +1448,7 @@ static int ipa3_ioctl_add_rt_rule_ext_v2(unsigned long arg) ((struct ipa_ioc_add_rt_rule_ext_v2 *)header)->rules = (u64)kptr; if (ipa3_add_rt_rule_ext_v2( - (struct ipa_ioc_add_rt_rule_ext_v2 *)header)) { + (struct ipa_ioc_add_rt_rule_ext_v2 *)header, true)) { IPAERR_RL("ipa3_add_rt_rule_ext_v2 fails\n"); retval = -EPERM; goto free_param_kptr; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h index cd74b8a93a..ca09218914 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h @@ -2784,7 +2784,8 @@ int ipa3_add_rt_rule(struct ipa_ioc_add_rt_rule *rules); int ipa3_add_rt_rule_ext(struct ipa_ioc_add_rt_rule_ext *rules); -int ipa3_add_rt_rule_ext_v2(struct ipa_ioc_add_rt_rule_ext_v2 *rules); +int ipa3_add_rt_rule_ext_v2(struct ipa_ioc_add_rt_rule_ext_v2 *rules, + bool user); int ipa3_add_rt_rule_after(struct ipa_ioc_add_rt_rule_after *rules); diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c index cac520c93b..ade5192867 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c @@ -1476,12 +1476,14 @@ bail: * ipa3_add_rt_rule_ext_v2() - Add the specified routing rules * to SW with rule id and optionally commit to IPA HW * @rules: [inout] set of routing rules to add + * @user: [in] true if the rt rules are added from userspace * * Returns: 0 on success, negative on failure * * Note: Should not be called from atomic context */ -int ipa3_add_rt_rule_ext_v2(struct ipa_ioc_add_rt_rule_ext_v2 *rules) +int ipa3_add_rt_rule_ext_v2(struct ipa_ioc_add_rt_rule_ext_v2 *rules, + bool user) { int i; int ret; @@ -1505,7 +1507,7 @@ int ipa3_add_rt_rule_ext_v2(struct ipa_ioc_add_rt_rule_ext_v2 *rules) &(((struct ipa_rt_rule_add_ext_i *) rules->rules)[i].rt_rule_hdl), ((struct ipa_rt_rule_add_ext_i *) - rules->rules)[i].rule_id, true)) { + rules->rules)[i].rule_id, user)) { IPAERR_RL("failed to add rt rule %d\n", i); ((struct ipa_rt_rule_add_ext_i *) rules->rules)[i].status = IPA_RT_STATUS_OF_ADD_FAILED; diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 7a98c25fc8..d34940eefd 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -485,7 +485,8 @@ static int ipa3_setup_dflt_wan_rt_tables(void) (uint8_t)IPPROTO_ICMP; } - if (ipa3_add_rt_rule_ext_v2(rt_rule)) { + if (ipa3_add_rt_rule_ext_v2(rt_rule, + false)) { IPAWANERR("fail to add dflt_wan v4 rule\n"); ret = -EPERM; goto free_rule_entry; @@ -509,7 +510,8 @@ static int ipa3_setup_dflt_wan_rt_tables(void) rt_rule_entry[WAN_RT_ICMP].rule.attrib.u.v6.next_hdr = (uint8_t)NEXTHDR_ICMP; } - if (ipa3_add_rt_rule_ext_v2(rt_rule)) { + if (ipa3_add_rt_rule_ext_v2(rt_rule, + false)) { IPAWANERR("fail to add dflt_wan v6 rule\n"); ret = -EPERM; goto free_rule_entry; @@ -596,7 +598,8 @@ static int ipa3_setup_low_lat_rt_rules(void) rt_rule_entry[WAN_RT_ICMP].rule.attrib.u.v4.protocol = (uint8_t)IPPROTO_ICMP; - if (ipa3_add_rt_rule_ext_v2(rt_rule)) { + if (ipa3_add_rt_rule_ext_v2(rt_rule, + false)) { IPAWANERR("fail to add low lat v4 rule\n"); ret = -EPERM; goto free_rule_entry; @@ -616,7 +619,8 @@ static int ipa3_setup_low_lat_rt_rules(void) IPA_FLT_META_DATA | IPA_FLT_NEXT_HDR; rt_rule_entry[WAN_RT_ICMP].rule.attrib.u.v6.next_hdr = (uint8_t)IPPROTO_ICMP; - if (ipa3_add_rt_rule_ext_v2(rt_rule)) { + if (ipa3_add_rt_rule_ext_v2(rt_rule, + false)) { IPAWANERR("fail to add low lat v6 rule\n"); ret = -EPERM; goto free_rule_entry;