Subject: [STABLE REQUEST] tipc: improve function tipc_wait_for_cond()

From: Lee Jones <[email-masked]>
Date: Tue, 14 Mar 2023 17:45:37 +0000

Dear Stable,

> Commit 844cf763fba6 ("tipc: make macro tipc_wait_for_cond() smp safe")
> replaced finish_wait() with remove_wait_queue() but still used
> prepare_to_wait(). This causes unnecessary conditional
> checking  before adding to wait queue in prepare_to_wait().
>
> This commit replaces prepare_to_wait() with add_wait_queue()
> as the pair function with remove_wait_queue().
>
> Acked-by: Ying Xue <[email-masked]>
> Acked-by: Jon Maloy <[email-masked]>
> Signed-off-by: Tung Nguyen <[email-masked]>
> ---
>  net/tipc/socket.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/tipc/socket.c b/net/tipc/socket.c
> index 1217c90a363b..81b87916a0eb 100644
> --- a/net/tipc/socket.c
> +++ b/net/tipc/socket.c
> @@ -388,7 +388,7 @@ static int tipc_sk_sock_err(struct socket *sock, long *timeout)
>  		rc_ = tipc_sk_sock_err((sock_), timeo_);		       \
>  		if (rc_)						       \
>  			break;						       \
> -		prepare_to_wait(sk_sleep(sk_), &wait_, TASK_INTERRUPTIBLE);    \
> +		add_wait_queue(sk_sleep(sk_), &wait_);                         \
>  		release_sock(sk_);					       \
>  		*(timeo_) = wait_woken(&wait_, TASK_INTERRUPTIBLE, *(timeo_)); \
>  		sched_annotate_sleep();				               \

Could we have this ol' classic backported to v4.19 and v4.14 please?

--
Lee Jones [李琼斯]