Commit a3c4a125 authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by Jakub Kicinski
Browse files

netlink: Fix rmem check in netlink_broadcast_deliver().



We need to allow queuing at least one skb even when skb is
larger than sk->sk_rcvbuf.

The cited commit made a mistake while converting a condition
in netlink_broadcast_deliver().

Let's correct the rmem check for the allow-one-skb rule.

Fixes: ae8f160e ("netlink: Fix wraparounds of sk->sk_rmem_alloc.")
Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250711053208.2965945-1-kuniyu@google.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 52c14ea7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1395,7 +1395,7 @@ static int netlink_broadcast_deliver(struct sock *sk, struct sk_buff *skb)
	rmem = atomic_add_return(skb->truesize, &sk->sk_rmem_alloc);
	rcvbuf = READ_ONCE(sk->sk_rcvbuf);

	if ((rmem != skb->truesize || rmem <= rcvbuf) &&
	if ((rmem == skb->truesize || rmem <= rcvbuf) &&
	    !test_bit(NETLINK_S_CONGESTED, &nlk->state)) {
		netlink_skb_set_owner_r(skb, sk);
		__netlink_sendskb(sk, skb);