Commit 0d4aef63 authored by Yang Yang's avatar Yang Yang Committed by Simon Wunderlich
Browse files

batman-adv: avoid OGM aggregation when skb tailroom is insufficient



When OGM aggregation state is toggled at runtime, an existing forwarded
packet may have been allocated with only packet_len bytes, while a later
packet can still be selected for aggregation. Appending in this case can
hit skb_put overflow conditions.

Reject aggregation when the target skb tailroom cannot accommodate the new
packet. The caller then falls back to creating a new forward packet
instead of appending.

Fixes: c6c8fea2 ("net: Add batman-adv meshing protocol")
Cc: stable@vger.kernel.org
Reported-by: default avatarYifan Wu <yifanwucs@gmail.com>
Reported-by: default avatarJuefei Pu <tomapufckgml@gmail.com>
Signed-off-by: default avatarYuan Tan <tanyuan98@outlook.com>
Signed-off-by: default avatarXin Liu <bird@lzu.edu.cn>
Signed-off-by: default avatarAo Zhou <n05ec@lzu.edu.cn>
Signed-off-by: default avatarYang Yang <n05ec@lzu.edu.cn>
Signed-off-by: default avatarSven Eckelmann <sven@narfation.org>
Signed-off-by: default avatarSimon Wunderlich <sw@simonwunderlich.de>
parent cfc83a3c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -473,6 +473,9 @@ batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
	if (aggregated_bytes > max_bytes)
		return false;

	if (skb_tailroom(forw_packet->skb) < packet_len)
		return false;

	if (packet_num >= BATADV_MAX_AGGREGATION_PACKETS)
		return false;