Commit e5b670e5 authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski
Browse files

net: remove obsolete WARN_ON(refcount_read(&sk->sk_refcnt) == 1)



sk->sk_refcnt has been converted to refcount_t in 2017.

__sock_put(sk) being refcount_dec(&sk->sk_refcnt), it will complain
loudly if the current refcnt is 1 (or less) in a non racy way.

We can remove four WARN_ON() in favor of the generic refcount_dec()
check.

Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: default avatarXuanqiang <Luo&lt;luoxuanqiang@kylinos.cn>
Link: https://patch.msgid.link/20251014140605.2982703-1-edumazet@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 378e6523
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -830,11 +830,9 @@ static inline bool sk_del_node_init(struct sock *sk)
{
	bool rc = __sk_del_node_init(sk);

	if (rc) {
		/* paranoid for a while -acme */
		WARN_ON(refcount_read(&sk->sk_refcnt) == 1);
	if (rc)
		__sock_put(sk);
	}

	return rc;
}
#define sk_del_node_init_rcu(sk)	sk_del_node_init(sk)
@@ -852,11 +850,9 @@ static inline bool sk_nulls_del_node_init_rcu(struct sock *sk)
{
	bool rc = __sk_nulls_del_node_init_rcu(sk);

	if (rc) {
		/* paranoid for a while -acme */
		WARN_ON(refcount_read(&sk->sk_refcnt) == 1);
	if (rc)
		__sock_put(sk);
	}

	return rc;
}

+1 −3
Original line number Diff line number Diff line
@@ -596,10 +596,8 @@ static void netlink_remove(struct sock *sk)

	table = &nl_table[sk->sk_protocol];
	if (!rhashtable_remove_fast(&table->hash, &nlk_sk(sk)->node,
				    netlink_rhashtable_params)) {
		WARN_ON(refcount_read(&sk->sk_refcnt) == 1);
				    netlink_rhashtable_params))
		__sock_put(sk);
	}

	netlink_table_grab();
	if (nlk_sk(sk)->subscriptions) {
+1 −3
Original line number Diff line number Diff line
@@ -3031,11 +3031,9 @@ static void tipc_sk_remove(struct tipc_sock *tsk)
	struct sock *sk = &tsk->sk;
	struct tipc_net *tn = net_generic(sock_net(sk), tipc_net_id);

	if (!rhashtable_remove_fast(&tn->sk_rht, &tsk->node, tsk_rht_params)) {
		WARN_ON(refcount_read(&sk->sk_refcnt) == 1);
	if (!rhashtable_remove_fast(&tn->sk_rht, &tsk->node, tsk_rht_params))
		__sock_put(sk);
}
}

static const struct rhashtable_params tsk_rht_params = {
	.nelem_hint = 192,