Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56305e91 authored by Skylar Chang's avatar Skylar Chang
Browse files

msm: ipa: make stronger catch-none filter rule



The global filter rule should not be matched however
some malformed packets coming with "FF" in next-header
field of IPv6 hdr which happenly matched and lead to
modem crash. The fix is to make stonger non-match
global filter rules to not match any malformed pkts.

Change-Id: I79a54c999655f4df6e483c1e495eeae294d28d45
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent dbd2b72e
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -2674,14 +2674,24 @@ static int ipa_init_flt_block(void)
			rule->at_rear = 1;
			if (ip == IPA_IP_v4) {
				rule->rule.attrib.attrib_mask =
					IPA_FLT_PROTOCOL;
					IPA_FLT_PROTOCOL | IPA_FLT_DST_ADDR;
				rule->rule.attrib.u.v4.protocol =
				   IPA_INVALID_L4_PROTOCOL;
				rule->rule.attrib.u.v4.dst_addr_mask = ~0;
				rule->rule.attrib.u.v4.dst_addr = ~0;
			} else if (ip == IPA_IP_v6) {
				rule->rule.attrib.attrib_mask =
					IPA_FLT_NEXT_HDR;
					IPA_FLT_NEXT_HDR | IPA_FLT_DST_ADDR;
				rule->rule.attrib.u.v6.next_hdr =
					IPA_INVALID_L4_PROTOCOL;
				rule->rule.attrib.u.v6.dst_addr_mask[0] = ~0;
				rule->rule.attrib.u.v6.dst_addr_mask[1] = ~0;
				rule->rule.attrib.u.v6.dst_addr_mask[2] = ~0;
				rule->rule.attrib.u.v6.dst_addr_mask[3] = ~0;
				rule->rule.attrib.u.v6.dst_addr[0] = ~0;
				rule->rule.attrib.u.v6.dst_addr[1] = ~0;
				rule->rule.attrib.u.v6.dst_addr[2] = ~0;
				rule->rule.attrib.u.v6.dst_addr[3] = ~0;
			} else {
				result = -EINVAL;
				WARN_ON(1);