Re: x25_create initializing socket data twice ...

Andrew Hendry
2005-03-03T03:28:41Z

Hi Herbert,

On the same path sk_set_owner also gets called twice, I think this
causes double module use count when creating sockets. Module use count
need some attention all over x25.

Im not sure if the fix is as straightforward, the calls are:
sock_init_data(sock,sk) vs
sock_init_data(NULL,sk)

Andrew.

On Thu, 2005-03-03 at 12:14, Herbert Poetzl wrote:
> Hi Folks!
>
> x25_create() [net/x25/af_x25.c] is calling sock_init_data()
> twice ... once indirectly via x25_alloc_socket() and a
> second time directly via sock_init_data(sock, sk);
>
> while this might not look as critical as it seems, it can
> easily break stuff which assumes that sock_init_data()
> isn't called twice on the same socket ...
>
> maybe something like this might be appropriate?
>
> --- ./net/x25/af_x25.c.orig 2005-03-02 12:39:11 +0100
> +++ ./net/x25/af_x25.c 2005-03-03 02:12:11 +0100
> @@ -490,7 +490,6 @@ static int x25_create(struct socket *soc
>
> x25 = x25_sk(sk);
>
> - sock_init_data(sock, sk);
> sk_set_owner(sk, THIS_MODULE);
>
> x25_init_timers(sk);
>
>
> best,
> Herbert
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-x25" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html