]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
batman-adv: dat: handle forward allocation error
authorSven Eckelmann <sven@narfation.org>
Wed, 13 May 2026 07:01:34 +0000 (09:01 +0200)
committerSven Eckelmann <sven@narfation.org>
Thu, 14 May 2026 18:01:31 +0000 (20:01 +0200)
batadv_dat_forward_data() calls pskb_copy_for_clone() to duplicate an skb
for each DHT candidate, but does not check the return value before passing
it to batadv_send_skb_prepare_unicast_4addr(). That function dereferences
the skb unconditionally, so a failed allocation triggers a NULL pointer
dereference.

Skip forwarding to the current DHT candidate on allocation failure.

Cc: stable@kernel.org
Fixes: 785ea1144182 ("batman-adv: Distributed ARP Table - create DHT helper functions")
Reported-by: Yuan Tan <yuantan098@gmail.com>
Reported-by: Yifan Wu <yifanwucs@gmail.com>
Reported-by: Juefei Pu <tomapufckgml@gmail.com>
Reported-by: Xin Liu <bird@lzu.edu.cn>
Reviewed-by: Yuan Tan <yuantan098@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/distributed-arp-table.c

index 3efc4cf50b469fa0d92bc50f5b66a97918374376..0a8bd95e2f99e8ef573d334635a3742294595bf2 100644 (file)
@@ -696,6 +696,9 @@ static bool batadv_dat_forward_data(struct batadv_priv *bat_priv,
                        goto free_orig;
 
                tmp_skb = pskb_copy_for_clone(skb, GFP_ATOMIC);
+               if (!tmp_skb)
+                       goto free_neigh;
+
                if (!batadv_send_skb_prepare_unicast_4addr(bat_priv, tmp_skb,
                                                           cand[i].orig_node,
                                                           packet_subtype)) {