]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
batman-adv: Ignore own maximum aggregation size during RX
authorSven Eckelmann <sven@narfation.org>
Sun, 2 Feb 2025 16:04:13 +0000 (17:04 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:30:53 +0000 (14:30 +0200)
commit 548b0c5de7619ef53bbde5590700693f2f6d2a56 upstream.

An OGMv1 and OGMv2 packet receive processing were not only limited by the
number of bytes in the received packet but also by the nodes maximum
aggregation packet size limit. But this limit is relevant for TX and not
for RX. It must not be enforced by batadv_(i)v_ogm_aggr_packet to avoid
loss of information in case of a different limit for sender and receiver.

This has a minor side effect for B.A.T.M.A.N. IV because the
batadv_iv_ogm_aggr_packet is also used for the preprocessing for the TX.
But since the aggregation code itself will not allow more than
BATADV_MAX_AGGREGATION_BYTES bytes, this check was never triggering (in
this context) prior of removing it.

Cc: stable@vger.kernel.org
Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
Fixes: 9323158ef9f4 ("batman-adv: OGMv2 - implement originators logic")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/batman-adv/bat_iv_ogm.c
net/batman-adv/bat_v_ogm.c

index c0aa54d21c64980b6c26437120fb9eaf7aab9f1d..e0b41afa34722577339e57c2fed0f933dd4a9aa5 100644 (file)
@@ -326,8 +326,7 @@ batadv_iv_ogm_aggr_packet(int buff_pos, int packet_len,
        /* check if there is enough space for the optional TVLV */
        next_buff_pos += ntohs(ogm_packet->tvlv_len);
 
-       return (next_buff_pos <= packet_len) &&
-              (next_buff_pos <= BATADV_MAX_AGGREGATION_BYTES);
+       return next_buff_pos <= packet_len;
 }
 
 /* send a batman ogm to a given interface */
index aff877203cd23f4b17ef4150a24edb4f7edf94b4..d43fc72af9a9947438b0cb3e285a4408fc0b584c 100644 (file)
@@ -850,8 +850,7 @@ batadv_v_ogm_aggr_packet(int buff_pos, int packet_len,
        /* check if there is enough space for the optional TVLV */
        next_buff_pos += ntohs(ogm2_packet->tvlv_len);
 
-       return (next_buff_pos <= packet_len) &&
-              (next_buff_pos <= BATADV_MAX_AGGREGATION_BYTES);
+       return next_buff_pos <= packet_len;
 }
 
 /**