Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 723b4610 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

net: udp_unhash() can test if sk is hashed



Impact: Optimization

Like done in inet_unhash(), we can avoid taking a chain lock if
socket is not hashed in udp_unhash()

Triggered by close(socket(AF_INET, SOCK_DGRAM, 0));

Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5bc0b3bf
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -970,6 +970,7 @@ int udp_disconnect(struct sock *sk, int flags)

void udp_lib_unhash(struct sock *sk)
{
	if (sk_hashed(sk)) {
		struct udp_table *udptable = sk->sk_prot->h.udp_table;
		unsigned int hash = udp_hashfn(sock_net(sk), sk->sk_hash);
		struct udp_hslot *hslot = &udptable->hash[hash];
@@ -981,6 +982,7 @@ void udp_lib_unhash(struct sock *sk)
		}
		spin_unlock_bh(&hslot->lock);
	}
}
EXPORT_SYMBOL(udp_lib_unhash);

static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)