Unverified Commit b2849867 authored by Oleg Nesterov's avatar Oleg Nesterov Committed by Christian Brauner
Browse files

sock_poll_wait: kill the no longer necessary barrier after poll_wait()



Now that poll_wait() provides a full barrier we can remove smp_mb() from
sock_poll_wait().

Also, the poll_does_not_wait() check before poll_wait() just adds the
unnecessary confusion, kill it. poll_wait() does the same "p && p->_qproc"
check.

Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
Link: https://lore.kernel.org/r/20250107162736.GA18944@redhat.com


Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 4e15fa83
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -2291,7 +2291,7 @@ static inline bool skwq_has_sleeper(struct socket_wq *wq)
}

/**
 * sock_poll_wait - place memory barrier behind the poll_wait call.
 * sock_poll_wait - wrapper for the poll_wait call.
 * @filp:           file
 * @sock:           socket to wait on
 * @p:              poll_table
@@ -2301,15 +2301,12 @@ static inline bool skwq_has_sleeper(struct socket_wq *wq)
static inline void sock_poll_wait(struct file *filp, struct socket *sock,
				  poll_table *p)
{
	if (!poll_does_not_wait(p)) {
		poll_wait(filp, &sock->wq.wait, p);
		/* We need to be sure we are in sync with the
		 * socket flags modification.
	/* Provides a barrier we need to be sure we are in sync
	 * with the socket flags modification.
	 *
	 * This memory barrier is paired in the wq_has_sleeper.
	 */
		smp_mb();
	}
	poll_wait(filp, &sock->wq.wait, p);
}

static inline void skb_set_hash_from_sk(struct sk_buff *skb, struct sock *sk)