]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.4/batman-adv-return-directly-after-a-failed-batadv_dat.patch
Fixes for 5.4
[thirdparty/kernel/stable-queue.git] / queue-5.4 / batman-adv-return-directly-after-a-failed-batadv_dat.patch
1 From f27fcbf6221bd122452855ed787af2da2e186aa4 Mon Sep 17 00:00:00 2001
2 From: Sasha Levin <sashal@kernel.org>
3 Date: Tue, 2 Jan 2024 07:27:45 +0100
4 Subject: batman-adv: Return directly after a failed
5 batadv_dat_select_candidates() in batadv_dat_forward_data()
6 MIME-Version: 1.0
7 Content-Type: text/plain; charset=UTF-8
8 Content-Transfer-Encoding: 8bit
9
10 From: Markus Elfring <elfring@users.sourceforge.net>
11
12 [ Upstream commit ffc15626c861f811f9778914be004fcf43810a91 ]
13
14 The kfree() function was called in one case by
15 the batadv_dat_forward_data() function during error handling
16 even if the passed variable contained a null pointer.
17 This issue was detected by using the Coccinelle software.
18
19 * Thus return directly after a batadv_dat_select_candidates() call failed
20 at the beginning.
21
22 * Delete the label “out” which became unnecessary with this refactoring.
23
24 Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
25 Acked-by: Sven Eckelmann <sven@narfation.org>
26 Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
27 Signed-off-by: Sasha Levin <sashal@kernel.org>
28 ---
29 net/batman-adv/distributed-arp-table.c | 3 +--
30 1 file changed, 1 insertion(+), 2 deletions(-)
31
32 diff --git a/net/batman-adv/distributed-arp-table.c b/net/batman-adv/distributed-arp-table.c
33 index dda62dcd59c8a..c5b7e9994a018 100644
34 --- a/net/batman-adv/distributed-arp-table.c
35 +++ b/net/batman-adv/distributed-arp-table.c
36 @@ -682,7 +682,7 @@ static bool batadv_dat_forward_data(struct batadv_priv *bat_priv,
37
38 cand = batadv_dat_select_candidates(bat_priv, ip, vid);
39 if (!cand)
40 - goto out;
41 + return ret;
42
43 batadv_dbg(BATADV_DBG_DAT, bat_priv, "DHT_SEND for %pI4\n", &ip);
44
45 @@ -726,7 +726,6 @@ static bool batadv_dat_forward_data(struct batadv_priv *bat_priv,
46 batadv_orig_node_put(cand[i].orig_node);
47 }
48
49 -out:
50 kfree(cand);
51 return ret;
52 }
53 --
54 2.43.0
55