Re: [PATCH] Remove extra unlock for the mutex

Abhinav Singh
2023-10-11T19:08:54Z

On 10/11/23 23:13, Eric Dumazet wrote:
>
> There is no undefined behavior, only sparse that might be confused a little.
>
> I do not think we can express in sparse the fact that
> inet_csk_find_open_port() acquires head->lock
>
> (head being the return value of this function...)
>
> The following does not help.
>
> diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
> index aeebe881668996057d1495c84eee0f0b644b7ad0..ed7b3993316cd1ba0b2859b0bd3f447e066bd3b5
> 100644
> --- a/net/ipv4/inet_connection_sock.c
> +++ b/net/ipv4/inet_connection_sock.c
> @@ -323,6 +323,7 @@ static struct inet_bind_hashbucket *
> inet_csk_find_open_port(const struct sock *sk, struct
> inet_bind_bucket **tb_ret,
> struct inet_bind2_bucket **tb2_ret,
> struct inet_bind_hashbucket **head2_ret, int *port_ret)
> + __acquires(head->lock)
> {
> struct inet_hashinfo *hinfo = tcp_or_dccp_get_hashinfo(sk);
> int i, low, high, attempt_half, port, l3mdev;

Okay got it. Thank you for your time maintainers.And apologizes for not
thoroughly checking before sending the patch. I have a question, there
were some type checking warning as well from sparse tool. Can a create
patch for fixing those type checking warning?