2005-03-03 01:15:29

by Herbert Poetzl

[permalink] [raw]
Subject: x25_create initializing socket data twice ...


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


2005-03-03 03:28:41

by ahendry

[permalink] [raw]
Subject: Re: x25_create initializing socket data twice ...

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 [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

Subject: Re: x25_create initializing socket data twice ...

Hi,
> 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.
I'm working on it already. I hope to send patches soon.

Is linux-x25 list alive? if not, perhaps we should add netdev to Cc.

--
Aristeu