From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Date: Sun, 31 Dec 2023 16:30:51 +0100 The kfree() function was called in some cases by the fanout_add() function even if the passed variable contained a null pointer. This issue was detected by using the Coccinelle software. Thus use another label. Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> --- net/packet/af_packet.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 5f1757a32842..0681d4f1ed85 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -1712,14 +1712,14 @@ static int fanout_add(struct sock *sk, struct fanout_args *args) err = -EALREADY; if (po->fanout) - goto out; + goto unlock_mutex; if (type == PACKET_FANOUT_ROLLOVER || (type_flags & PACKET_FANOUT_FLAG_ROLLOVER)) { err = -ENOMEM; rollover = kzalloc(sizeof(*rollover), GFP_KERNEL); if (!rollover) - goto out; + goto unlock_mutex; atomic_long_set(&rollover->num, 0); atomic_long_set(&rollover->num_huge, 0); atomic_long_set(&rollover->num_failed, 0); @@ -1812,6 +1812,7 @@ static int fanout_add(struct sock *sk, struct fanout_args *args) out: kfree(rollover); +unlock_mutex: mutex_unlock(&fanout_mutex); return err; } -- 2.43.0