netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* netlink: Fix netlink_insert EADDRINUSE error
@ 2015-01-16  6:23 Herbert Xu
  2015-01-16  6:30 ` Ying Xue
  2015-01-16  7:38 ` David Miller
  0 siblings, 2 replies; 3+ messages in thread
From: Herbert Xu @ 2015-01-16  6:23 UTC (permalink / raw)
  To: netdev, Ying Xue

The patch c5adde9468b0714a051eac7f9666f23eb10b61f7 ("netlink:
eliminate nl_sk_hash_lock") introduced a bug where the EADDRINUSE
error has been replaced by ENOMEM.  This patch rectifies that
problem.
    
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 01b702d..7a94185 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1050,7 +1050,7 @@ netlink_update_listeners(struct sock *sk)
 static int netlink_insert(struct sock *sk, struct net *net, u32 portid)
 {
 	struct netlink_table *table = &nl_table[sk->sk_protocol];
-	int err = -EADDRINUSE;
+	int err;
 
 	lock_sock(sk);
 
@@ -1065,10 +1065,13 @@ static int netlink_insert(struct sock *sk, struct net *net, u32 portid)
 
 	nlk_sk(sk)->portid = portid;
 	sock_hold(sk);
-	if (__netlink_insert(table, sk, net))
-		err = 0;
-	else
+
+	err = 0;
+	if (!__netlink_insert(table, sk, net)) {
+		err = -EADDRINUSE;
 		sock_put(sk);
+	}
+
 err:
 	release_sock(sk);
 	return err;
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: netlink: Fix netlink_insert EADDRINUSE error
  2015-01-16  6:23 netlink: Fix netlink_insert EADDRINUSE error Herbert Xu
@ 2015-01-16  6:30 ` Ying Xue
  2015-01-16  7:38 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: Ying Xue @ 2015-01-16  6:30 UTC (permalink / raw)
  To: Herbert Xu, netdev

On 01/16/2015 02:23 PM, Herbert Xu wrote:
> The patch c5adde9468b0714a051eac7f9666f23eb10b61f7 ("netlink:
> eliminate nl_sk_hash_lock") introduced a bug where the EADDRINUSE
> error has been replaced by ENOMEM.  This patch rectifies that
> problem.
>

Nice catch!

Acked-by: Ying Xue <ying.xue@windriver.com>

> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> 
> diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
> index 01b702d..7a94185 100644
> --- a/net/netlink/af_netlink.c
> +++ b/net/netlink/af_netlink.c
> @@ -1050,7 +1050,7 @@ netlink_update_listeners(struct sock *sk)
>  static int netlink_insert(struct sock *sk, struct net *net, u32 portid)
>  {
>  	struct netlink_table *table = &nl_table[sk->sk_protocol];
> -	int err = -EADDRINUSE;
> +	int err;
>  
>  	lock_sock(sk);
>  
> @@ -1065,10 +1065,13 @@ static int netlink_insert(struct sock *sk, struct net *net, u32 portid)
>  
>  	nlk_sk(sk)->portid = portid;
>  	sock_hold(sk);
> -	if (__netlink_insert(table, sk, net))
> -		err = 0;
> -	else
> +
> +	err = 0;
> +	if (!__netlink_insert(table, sk, net)) {
> +		err = -EADDRINUSE;
>  		sock_put(sk);
> +	}
> +
>  err:
>  	release_sock(sk);
>  	return err;
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: netlink: Fix netlink_insert EADDRINUSE error
  2015-01-16  6:23 netlink: Fix netlink_insert EADDRINUSE error Herbert Xu
  2015-01-16  6:30 ` Ying Xue
@ 2015-01-16  7:38 ` David Miller
  1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2015-01-16  7:38 UTC (permalink / raw)
  To: herbert; +Cc: netdev, ying.xue

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Fri, 16 Jan 2015 17:23:48 +1100

> The patch c5adde9468b0714a051eac7f9666f23eb10b61f7 ("netlink:
> eliminate nl_sk_hash_lock") introduced a bug where the EADDRINUSE
> error has been replaced by ENOMEM.  This patch rectifies that
> problem.
>     
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Applied, thanks Herbert.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-01-16  7:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-16  6:23 netlink: Fix netlink_insert EADDRINUSE error Herbert Xu
2015-01-16  6:30 ` Ying Xue
2015-01-16  7:38 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).