diff options
Diffstat (limited to 'net/batman-adv/network-coding.c')
| -rw-r--r-- | net/batman-adv/network-coding.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/net/batman-adv/network-coding.c b/net/batman-adv/network-coding.c index f7c54305a918..e84629ece9b7 100644 --- a/net/batman-adv/network-coding.c +++ b/net/batman-adv/network-coding.c @@ -1514,6 +1514,7 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,  	struct ethhdr *ethhdr, ethhdr_tmp;  	uint8_t *orig_dest, ttl, ttvn;  	unsigned int coding_len; +	int err;  	/* Save headers temporarily */  	memcpy(&coded_packet_tmp, skb->data, sizeof(coded_packet_tmp)); @@ -1568,8 +1569,11 @@ batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb,  			 coding_len);  	/* Resize decoded skb if decoded with larger packet */ -	if (nc_packet->skb->len > coding_len + h_size) -		pskb_trim_rcsum(skb, coding_len + h_size); +	if (nc_packet->skb->len > coding_len + h_size) { +		err = pskb_trim_rcsum(skb, coding_len + h_size); +		if (err) +			return NULL; +	}  	/* Create decoded unicast packet */  	unicast_packet = (struct batadv_unicast_packet *)skb->data; | 
