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

Commit 3dda8f02 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "net: rmnet_data: Catch empty MAP frames during de-aggregation"

parents 49621277 fcb888fb
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ enum rmnet_skb_free_e {
	RMNET_STATS_SKBFREE_DEAGG_MALFORMED,
	RMNET_STATS_SKBFREE_DEAGG_MALFORMED,
	RMNET_STATS_SKBFREE_DEAGG_CLONE_FAIL,
	RMNET_STATS_SKBFREE_DEAGG_CLONE_FAIL,
	RMNET_STATS_SKBFREE_DEAGG_UNKOWN_IP_TYP,
	RMNET_STATS_SKBFREE_DEAGG_UNKOWN_IP_TYP,
	RMNET_STATS_SKBFREE_DEAGG_DATA_LEN_0,
	RMNET_STATS_SKBFREE_MAX
	RMNET_STATS_SKBFREE_MAX
};
};


+7 −0
Original line number Original line Diff line number Diff line
@@ -126,6 +126,13 @@ struct sk_buff *rmnet_map_deaggregate(struct sk_buff *skb,
	skb_pull(skb, packet_len);
	skb_pull(skb, packet_len);
	LOGD("after skbn->len = %d", skbn->len);
	LOGD("after skbn->len = %d", skbn->len);


	/* Some hardware can send us empty frames. Catch them */
	if (ntohs(maph->pkt_len) == 0) {
		LOGD("Dropping empty MAP frame");
		rmnet_kfree_skb(skbn, RMNET_STATS_SKBFREE_DEAGG_DATA_LEN_0);
		return 0;
	}

	/* Sanity check */
	/* Sanity check */
	ip_byte = (skbn->data[4]) & 0xF0;
	ip_byte = (skbn->data[4]) & 0xF0;
	if (ip_byte != 0x40 && ip_byte != 0x60) {
	if (ip_byte != 0x40 && ip_byte != 0x60) {